运维打铁: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.mzph.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秒移动 鼠标移动是以固定坐标为单位,鼠标偏移则是在…