运维打铁: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_name | string | 1 | 数据库名称,如"bitcc_money" |
table_name | string | 1 | 需要分区的表,支持(*),如 t_user_trade_*; |
years | int | 0 | 按每多少个年来创建分区 |
months | int | 0 | 按每多少个月来创建分区 |
weeks | int | 0 | 按每多少个星期来创建分区 |
day_week | int | 0 | 星期几执行创建分区,当按周来创建分区时,必填 ,默认0,代表星期一 |
days | int | 0 | 按每多少个天来创建分区 |
days_reserve_patition | int | 0 | 分区保存多少天,配置这个参数就会删除过期分区 |
partition_key | string | 0 | 哪个字段来分区;如该表不是分区表,则必须填, 如需创建例子:“create_at” |
maxvalue_status | int | 0 | 如该表分区设置了maxvalue,则必须填,1是,0否 |
multi_partitions | int | 0 | 需要创建多少个未来分区,默认是0代表一个 |
partition_field_type | str | 0 | 范围分区类型的选型,目前支持TO_DAYS,UNIX_TIMESTAMP。默认是UNIX_TIMESTAMP |
unique_key_status | int | 0 | 表中有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 统一配置信息并且校验配置正确性;
相关文章:
运维打铁:Mysql 分区监控以及管理
文章目录 一、简介二、设计逻辑1、配置文件检查2、创建逻辑3、 删除逻辑4、重建表分区逻辑5、recognize maxvalue分区表逻辑6、创建多个未来分区逻辑7、定时检测分区是否创建成功,否则发送告警邮件。 三、解决的问题四、配置例子与介绍 一、简介 操作数据库…...

Rust实现高性能目录扫描工具ll的技术解析
Rust实现高性能目录扫描工具ll的技术解析 一、项目概述 本项目使用Rust构建了一个类ls命令行工具,具备以下核心特性: 多格式文件信息展示并行目录扫描加速人类可读文件大小运行时性能统计交互式进度提示 二、技术架构 1. 关键技术栈 clapÿ…...

深入理解C语言变量:从基础到实践
在编程世界中,变量是最基础也是最重要的概念之一。作为C语言的核心组成部分,变量承载着程序运行时数据的存储和传递功能。理解变量的工作原理和正确使用方法,是成为一名合格C程序员的必经之路。本文将全面介绍C语言变量的各个方面,…...
深入解析 SMB 相关命令:smbmap、smbclient、netexec 等工具的使用指南
Server Message Block(SMB)协议是广泛应用于文件共享、打印机共享和进程间通信的网络协议,尤其在 Windows 环境中常见。渗透测试和网络安全审计中,SMB 是一个重要的攻击面,相关工具如 smbmap、smbclient 和 netexec 提…...

RK3562/3588 系列之0—NPU基础概念
RK3562/3588 系列之0—NPU基础概念 1.处理器分类2.算力衡量指标TOPS参考文献 1.处理器分类 中央处理器(CPU); 图形处理器 (GPU); 神经网络处理器(NPU)。 每个处理器擅长不同的任务:CPU擅长顺序控制和即时性;GPU适合并行数据流处理,NPU擅长…...
springboot如何管理多数据源?
静态多数据源管理 配置多个数据源 :创建多个数据源的配置类,通常使用 @ConfigurationProperties 注解来绑定配置文件中的数据源属性,并通过 @Bean 注解定义多个 DataSource Bean 。例如: 配置类: @Configuration public class DataSourceConfig {@Bean(name = "prima…...
为什么vue的key值,不用index?
在 Vue 中,key 的作用是帮助框架高效地识别和复用 DOM 节点或组件实例。使用数组索引 (index) 作为 key 值可能会导致以下问题,因此通常不建议这样做: 1. 列表数据变化时,可能导致错误的 DOM 复用 问题:当列表的顺序…...

canvas画板!随意画!!
希望你天天开心 代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>绘画板</title…...

Float32、Float16、BFloat16
我们先介绍 Float32、Float16、BFloat16 的 浮点数表示方法 然后根据浮点数表示,来分析总结他们是怎么控制 精度和 数值范围 的 最后再来对比的说明 Float32、Float16、BFloat16 的 应用场景 和 硬件支持 1、浮点数的表示方法 Float32 : 单精度浮点数…...
C# new Bitmap(32043, 32043, PixelFormat.Format32bppArgb)报错:参数无效,如何将图像分块化处理?
C#处理非常大的图像(如 32043x32043 像素)时,确实需要采取分块化处理的方法来避免内存不足的问题。分块化处理可以将大图像分割成多个较小的块,分别进行处理和保存,最后再合并这些块以形成完整的图像。以下是一个详细的…...

5V 1A充电标准的由来与技术演进——从USB诞生到智能手机时代的电力革命
点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 一、起源:USB标准与早期电力传输需求 1. USB的诞生背景 1996年,由英特尔、微软、IBM等公司组成的USB-IF(USB Implementers Forum)发布了…...

微信小程序蓝牙连接打印机打印单据完整Demo【蓝牙小票打印】
文章目录 一、准备工作1. 硬件准备2. 开发环境 二、小程序配置1. 修改app.json 三、完整代码实现1. pages/index/index.wxml2. pages/index/index.wxss3. pages/index/index.js 四、ESC/POS指令说明五、测试流程六、常见问题解决七、进一步优化建议 下面我将提供一个完整的微信…...

龙虎榜——20250425
指数依然在震荡,等待方向选择,整体量能不搞但个股红多绿少。 2025年4月25日龙虎榜行业方向分析 一、核心主线方向 绿色电力(政策驱动业绩弹性) • 代表标的:华银电力(绿电运营)、西昌电力&…...

计算机组成原理:指令系统
计算机组成原理:指令集系统 指令集体系结构(ISA)ISA定义ISA包含的内容举个栗子指令的基本组成(操作码+地址码)指令分类:地址码的个数定长操作码变长操作码变长操作码的原则变长操作码的设计指令寻址寻址方式的目的寻址方式分类有效地址直接在指令中给出有效地址间接给出有效地…...

【Go语言】RPC 使用指南(初学者版)
RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,允许程序调用另一台计算机上的子程序,就像调用本地程序一样。Go 语言内置了 RPC 支持,下面我会详细介绍如何使用。 一、基本概念 在 Go 中&…...

Python----深度学习(基于深度学习Pytroch簇分类,圆环分类,月牙分类)
一、引言 深度学习的重要性 深度学习是一种通过模拟人脑神经元结构来进行数据学习和模式识别的技术,在分类任务中展现出强大的能力。 分类任务的多样性 分类任务涵盖了各种场景,例如簇分类、圆环分类和月牙分类,每种任务都有不同的…...
入侵检测系统(IDS)与入侵防御系统(IPS):功能对比与部署实践
入侵检测系统(IDS)与入侵防御系统(IPS):功能对比与部署实践 在网络安全防御体系中,入侵检测系统(Intrusion Detection System, IDS)与入侵防御系统(Intrusion Preventio…...

uniapp-商城-38-shop 购物车 选好了 进行订单确认4 配送方式1
配送方式在订单确认页面最上方,可以进行选中配送还是自提,这里先看看配送。 代码样式: 可以看出来是通过组件来实现的。组件名字是:delivery-layout 1、建立组件文件夹和页面,delivery-layout这里就只有配送 2、具体…...

uniappx 打包配置32位64位x86安装包
{"app": {"distribute": {"android": {"abiFilters": ["armeabi-v7a","arm64-v8a","x86","x86_64"]}}} }...

【深度强化学习 DRL 快速实践】逆向强化学习算法 (IRL)
Inverse Reinforcement Learning (IRL) 详解 什么是 Inverse Reinforcement Learning? 在传统的强化学习 (Reinforcement Learning, RL) 中,奖励函数是已知的,智能体的任务是学习一个策略来最大化奖励 而在逆向强化学习 (Inverse Reinforc…...

《普通逻辑》学习记录——性质命题及其推理
目录 一、性质命题概述 二、性质命题的种类 2.1、性质命题按质的分类 2.2、性质命题按量的分类 2.3、性质命题按质和量结合的分类 2.4、性质命题的基本形式归纳 三、四种命题的真假关系 3.1、性质命题与对象关系 3.2、四种命题的真假判定 3.3、四种命题的对当关系 四、四种命题…...

人工智能(AI)对网络管理的影响
近年来,人工智能(AI)尤其是大语言模型(LLMs)的快速发展,正在深刻改变网络管理领域。AI的核心价值在于其能够通过自动化、模式分析和智能决策,显著提升网络运维效率并应对复杂挑战。具体表现为: 快速数据查询与分析࿱…...
第1讲|R语言绘图体系总览(Base、ggplot2、ComplexHeatmap等)
目录 第1讲|R语言绘图体系总览 ✨ 引言:为什么R绘图如此重要? 🧩 1. Base绘图系统 🧩 2. ggplot2生态系统 🧩 3. ComplexHeatmap超级热图系统 🧩 4. 其他特色绘图库(快速了解) ✏️ 小结一句话 📅 预告下一讲 第1讲|R语言绘图体系总览 (Base、ggplot…...

embedding_model模型通没有自带有归一化层该怎么处理?
embedding_model 是什么: 嵌入式模型(Embedding)是一种广泛应用于自然语言处理(NLP)和计算机视觉(CV)等领域的机器学习模型,它可以将高维度的数据转化为低维度的嵌入空间࿰…...
基于STM32、HAL库的MCP3421A0T模数转换器ADC驱动程序设计
一、简介: MCP3421A0T是Microchip公司生产的一款18位Δ-Σ模数转换器(ADC),具有以下特点: 18位分辨率 单通道差分输入 可编程增益放大器(PGA):1, 2, 4, 8 可选的转换速率(3.75/15/60/240SPS) 内部基准电压(2.048V 0.05%) IC…...

八大排序——冒泡排序/归并排序
八大排序——冒泡排序/归并排序 一、冒泡排序 1.1 冒泡排序 1.2 冒泡排序优化 二、归并排序 1.1 归并排序(递归) 1.2 递归排序(非递归) 一、冒泡排序 1.1 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换…...

银发科技:AI健康小屋如何破解老龄化困局
随着全球人口老龄化程度的不断加深,如何保障老年人的健康、提升他们的生活质量,成为了社会各界关注的焦点。 在这场应对老龄化挑战的战役中,智绅科技顺势而生,七彩喜智慧养老系统构筑居家养老安全网。 而AI健康小屋作为一项创新…...
Python实例题:使用Pvthon3编写系列实用脚本
目录 Python实例题 题目 1. 文件重命名脚本 csv_data_statistics.py file_rename.py web_crawler.py 2. CSV 文件数据统计脚本 3. 简单的网页爬虫脚本 运行思路 文件重命名脚本 CSV 文件数据统计脚本 简单的网页爬虫脚本 注意事项 Python实例题 题目 使用Pvthon…...

命令行指引的尝试
效果 步骤 首先初始化一个空的项目,然后安装一些依赖 npm init -y npm install inquirer execa chalk ora至于这些依赖是干嘛的,如下图所示: 然后再 package.json 中补充一个 bin 然后再根目录下新建一个 index.js , 其中的内容如下 #!/…...
Sharding-JDBC 系列专题 - 第九篇:高可用性与集群管理
Sharding-JDBC 系列专题 - 第九篇:高可用性与集群管理 本系列专题旨在帮助开发者全面掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第九篇文章,将重点探讨 高可用性(High Availability, HA) 和 集群管理,包括数据库高可用方案、Sharding-JDBC 的故…...