運維打鐵:Mysql 分區監控以及管理

文章目錄

    • 一、簡介
    • 二、設計邏輯
      • 1、配置文件檢查
      • 2、創建邏輯
      • 3、 刪除邏輯
      • 4、重建表分區邏輯
      • 5、recognize maxvalue分區表邏輯
      • 6、創建多個未來分區邏輯
      • 7、定時檢測分區是否創建成功,否則發送告警郵件。
    • 三、解決的問題
    • 四、配置例子與介紹

一、簡介

  • 操作數據庫,連接配置讀取.env;

  • 分區信息配置config,內涵分區規則,log日志路徑,郵件redis配置;

  • 每天定時任務進行執行(每一個小時執行),采用獲取表分區的值(partition_value)對比當前時間(00:00:00)進行區分處理。

  • 依賴python3,pymysql、datetime , relativedelta

  • 以00:00:00秒創建分區,及處理過期分區。

二、設計邏輯

1、配置文件檢查

  • 參數類型應用強類型,int或者str,不對則退出程序。

2、創建邏輯

  • 配置years,months,weeks,day_week,days值來創建年,月,星期,星期幾,日來創建分區;

  • 檢測如該分區表名稱不存在,創建分區。否則不建。

3、 刪除邏輯

  • 獲取保留天數days_reserve_patition狀態值,有值,則進行計算最先創建的表分區paritition_value值與當前時間相差大于等于需要保留的時間,即刪除分區

4、重建表分區邏輯

  • 如不是分區表,需要創建,則配置partition_key,用來做分區表中key。
  • 支持unique key ,配置 unique_key_status 為 true
  • 支持指定partition_field_type 范圍分區類型,INT,TO_DAYS,UNIX_TIMESTAMP。必須一定要配置partition_key

5、recognize maxvalue分區表邏輯

  • 如分區包含maxvalue,則用recogize來創建分區。
  • recognize 表,也就是有maxvalue的分區表,記錄上一次recognize的分區名稱,計算未來的幾個分區名稱,和分區值,判斷分區是否存在,進行創建。

6、創建多個未來分區邏輯

  • 重建表分區以及創建表分區完成后,生成未來幾個分區名和分區值,并判斷是否已經創建,未創建則進行創建。

7、定時檢測分區是否創建成功,否則發送告警郵件。

三、解決的問題

  • 1)、不是分區的表,變成分區表;
  • 2)、所有分區表批量管理,按年、月、周、日,來創建每次的分區;
  • 3)、過期分區定時清除;
  • 4)、創建分區失敗,配置文件有問題會發送告警郵件;
  • 5)、創建多個未來分區;
  • 6)、創建規則可配置config;
  • 7)、支持TO_DAYS。UNIX_TIMESTAMP類型,范圍分區類型;
  • 8)、支持maxvalue分區表再分區;
  • 9)、支持unique key,primary key 組合類型的表分區。

四、配置例子與介紹

  • env配置例子
 {"dbname": "database_name","hosts": "ip","username": "username","pwd": "password","port": 3306,},
  • config配置例子:
 {"database_name": "bitcc_orderlog","table_name": "t_user_cancel_order_log_*","weeks": 1,"multi_partitions": 5,"days_reserve_partition": 14,},每一個星期一創建未來5個星期的分區,
會刪除14天之前的分區,
\*為范匹配,多個相同前綴的表。

-1)、配置文件
conf.config 配置文件為注冊需要被管理的分區或非分區表

  • 年,月,星期,日分區參數,必選其一,必填(注意項):
參數類型必填項 1是,0否備注
database_namestring1數據庫名稱,如"bitcc_money"
table_namestring1需要分區的表,支持(*),如 t_user_trade_*;
yearsint0按每多少個年來創建分區
monthsint0按每多少個月來創建分區
weeksint0按每多少個星期來創建分區
day_weekint0星期幾執行創建分區,當按周來創建分區時,必填 ,默認0,代表星期一
daysint0按每多少個天來創建分區
days_reserve_patitionint0分區保存多少天,配置這個參數就會刪除過期分區
partition_keystring0哪個字段來分區;如該表不是分區表,則必須填, 如需創建例子:“create_at”
maxvalue_statusint0如該表分區設置了maxvalue,則必須填,1是,0否
multi_partitionsint0需要創建多少個未來分區,默認是0代表一個
partition_field_typestr0范圍分區類型的選型,目前支持TO_DAYS,UNIX_TIMESTAMP。默認是UNIX_TIMESTAMP
unique_key_statusint0表中有primary key和unique key 同時出現,需要配置為1,為1時必須配置partition_key組合使用
  • cc_email_str cc郵件收件人,列表即可;
  • log_path 打印日志路徑。
  • redis 連接信息配置

-2 )、項目代碼結構介紹

  • 1)、conf.config.py 表分區規則配置;
  • 2)、lib.partition_operation.alter_partition.py 修改非分區表為分區表;
  • 3)、lib.partition_operation.create_partition.py 創建表分區;
  • 4)、lib.partition_operation.delete_partition.py 刪除表分區表;
  • 5)、lib.partition_operation.recognize_partition.py maxvalue創建表分區;
  • 6)、lib.partition_operation.select_partition.py 查詢表分區信息;
  • 7)、lib.conn_mysql.py 連接mysql操作函數;
  • 8)、lib.conn_redis.py 連接redis操作函數;
  • 9)、lib.calculate_partition.py 計算時間差,以及分區值partition_value
  • 10)、lib.logging_lib.py 打印日志函數;
  • 11)、lib.compution_time.py 計算不同格式的時間;
  • 12)、partition_main.py 管理主函數,進入函數;
  • 13)、lib.send_email 發送日志郵件函數;
  • 14)、lib.check_env_info.py 獲取env config信息;
  • 15)、lib.check_config.py 統一配置信息并且校驗配置正確性;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78126.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78126.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78126.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Appium自動化開發環境搭建

自動化 文章目錄 自動化前言 前言 Appium是一款開源工具,用于自動化iOS、Android和Windows桌面平臺上的本地、移動web和混合應用程序。原生應用是指那些使用iOS、Android或Windows sdk編寫的應用。移動網頁應用是通過移動瀏覽器訪問的網頁應用(appum支持iOS和Chrom…

《R語言SCI期刊論文繪圖專題計劃》大綱

今天開始,我將和大家分享系統且詳細的《R語言SCI期刊繪圖專題教程》,內容會從基礎到高階應用,從配色美學到頂刊風格復現,確保大家可以學到高質量內容!下面是大綱。 📚《R語言SCI期刊論文繪圖專題計劃》 第…

STUN協議 與 TURN協議

STUN(Session Traversal Utilities for NAT,NAT會話穿越應用程序)是一種網絡協議, STUN(Simple Traversal of User Datagram Protocol through Network Address Translators (NATs),NAT的UDP簡單穿越&#…

在vscode終端中運行npm命令報錯

解決方案 這個錯誤信息表明,你的系統(可能是 Windows)阻止了 PowerShell 執行腳本,這是由于 PowerShell 的執行策略導致的。PowerShell 的執行策略控制著在系統上運行哪些 PowerShell 腳本。默認情況下,Windows 可能…

手搓雷達圖(MATLAB)

看下別人做出來什么效果 話不多說,咱們直接開始 %% 可修改 labels {用戶等級, 發帖數, 發帖頻率, 點度中心度, 中介中心度, 帖子類型計分, 被列為提案數}; cluster_centers [0.8, 4.5, 3.2, 4.0, 3.8, 4.5, 4.2; % 核心用戶0.2, 0.5, 0.3, 0.2, 0.1, 0.0, 0.0;…

ViViT: 一種視頻視覺Transformer

摘要 我們提出了基于純transformer的視頻分類模型,借鑒了這種模型在圖像分類中的成功經驗。我們的模型從輸入視頻中提取時空token,然后通過一系列transformer層進行編碼。為了處理視頻中遇到的長序列token,我們提出了幾種高效的模型變種,這些變種將輸入的空間和時間維度進…

嵌入式鴻蒙系統環境搭建與配置要求實現01

各位開發者大家好,今天主要給大家分享一下,鴻蒙系統的環境配置實現。 第一:鴻蒙配置基本要求 對電腦的要求,虛擬機配置建議 200GB 硬盤大小,10GB 內存,4*2CPU。 安裝必要的依賴文件方法: sudo apt-get update && sudo apt-get install binutils git git-lfs g…

【多目標進化算法】常見多目標進化算法一覽

算法全稱核心特點備注NSGA-IINon-dominated Sorting Genetic Algorithm II非支配排序 擁擠度最經典,應用最廣NSGA-IIINon-dominated Sorting Genetic Algorithm III支撐向量引導,適合高維(3目標以上)NSGA-II 的高維擴展版MOEA/DM…

創意無限,從這些視頻素材開始你的創作!

在視頻創作的世界里,找到合適的素材就像是挖掘寶藏,不僅能節省時間,還能讓作品瞬間提升一個檔次。今天,就來給大家分享一些超實用的視頻素材網站,無論是國內的寶藏平臺,還是國外的優質資源,都能…

QT創建新項目(13)

文章目錄 一、本章說明二、QT組件簡介及相關筆記三、項目創建四、QT學習建議一、本章說明 注:本節為【基于STM的環境監測系統(節點+云服務器存儲+QT界面設計)】項目第13篇文章,前面已安裝了QT軟件,本章主要介紹新項目創建及注意事項,QT的初學者相關學習資料 二、QT組件…

Langgraph實戰-Agent-ReAct(Reason+Act)概述

Langgraph實戰-Agent-ReAct(ReasonAct)概述 概述 ReAct 架構將推理與動作相結合,使Agent能夠通過生成想法并基于這些想法執行動作。這種決策透明度使Agent能夠更負責地執行任務,因為它會記錄每一步的推理過程。 這種架構最適合…

論文筆記(七十九)STOMP: Stochastic Trajectory Optimization for Motion Planning

STOMP: Stochastic Trajectory Optimization for Motion Planning 文章概括摘要一、引言二、相關工作三、STOMP 算法A. 探索B. 軌跡更新 四、機械臂的運動規劃A. 設置B. 代價函數1)障礙物代價:2)約束代價:3)扭矩代價&a…

MCU開發學習記錄9 - 通用定時器學習與實踐(HAL庫) -RGBLED控制、定時器輸入捕獲、主從定時器移相控制-STM32CubeMX

本文將介紹通用定時器的概念、相關函數以及STM32CubeMX生成定時器的配置函數以及對生成定時器的配置函數進行分析(包括結構體配置、相關寄存器配置)。 本文以TIM2/TIM5、TIM3/TIM4為基礎介紹通用定時器(包含通用定時器全部功能&#…

Java學習手冊:TCP 協議基礎

一、TCP 協議概述 TCP(Transmission Control Protocol,傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,它在 IP 協議的基礎上提供了可靠的 數據傳輸服務。TCP 通過三次握手建立連接,通過四次揮手…

刪除排序數組中的重復項--LeetCode

題目 給你一個非嚴格遞增排列的數組 nums ,請你原地刪除重復出現的元素,使每個元素 只出現一次 ,返回刪除后數組的新長度。元素的 相對順序 應該保持 一致 。然后返回 nums 中唯一元素的個數。 考慮 nums 的唯一元素的數量為 k &#xff0c…

【Elasticsearch】入門篇

Elasticsearch 入門 前言 官方地址:Elastic — 搜索 AI 公司 | Elastic ES 下載地址:Past Releases of Elastic Stack Software | Elastic 文檔:什么是 Elasticsearch?|Elasticsearch 指南 簡介 Elasticsearch 是一個分布式、…

2024新版仿藍奏云網盤源碼,已修復已知BUG,樣式風格美化,可正常運營生產

說起網盤源碼,網絡上出現的也很多,不過可真正正能夠用于運營的少之又少。今天將的藍奏云網盤源碼,其實網絡上也有,不過是殘缺版,bug很多。我今天分享的仿藍奏云模板是經過長時間測試修復后的源碼,源碼實測可…

機器人結構認知與安裝

機器人結構認知與安裝 1. ES機器人系統結構與硬件組成 核心組件: OPPO ES5機器人系統由機器人本體、控制手柄、48V電源和OPPO Studio終端構成。一體化底座:包含控制主板、安全接口板、監測保護電路單元,支持外接急停開關,采用光耦…

sass 變量

基本使用 如果分配給變量的值后面添加了 !default 標志 ,這意味著該變量如果已經賦值,那么它不會被重新賦值,但是,如果它尚未賦值,那么它會被賦予新的給定值。 如果在此之前變量已經賦值,那就不使用默認值…

python自動化測試1——鼠標移動偏移與移動偏移時間

python對自動化測試運維提供了一個簡易的庫—pyautogui,我們可以借助這個庫進行開發。 import pyautogui as pp.moveTo(100,100,3) 這里將鼠標光標移動到100,100處,并且用時3秒移動 鼠標移動是以固定坐標為單位,鼠標偏移則是在…