MySQL数据归档实战-Python和pt-archiver的强强结合

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 一、引言 前段时间,在优雅的使用pt-archiver进行数据归档一文中介绍了pt-archiver的使用方法,也将pt-archiver部署到了生产环境,这时候问题来了~ 生产环境需要做归档的任务有十几个,如果要知道每个归档任务成功与否、跑了多长时间、归档了多少数据,就得手工逐个查看日志,非.

2ed43d5c679c245a75bc75f3187a29cc9f6477fa


一、引言

前段时间,在优雅的使用pt-archiver进行数据归档一文中介绍了pt-archiver的使用方法,也将pt-archiver部署到了生产环境,这时候问题来了~

生产环境需要做归档的任务有十几个,如果要知道每个归档任务成功与否、跑了多长时间、归档了多少数据,就得手工逐个查看日志,非常枯燥的重复劳动,那是否有办法可以统一管理呢?

于是用python倒腾了一个小工具—mysql_archiver小工具,github地址:https://github.com/dbarun/mysql_archiver

a63a61258b8d16434bf162d3419093f037a1c4f7

二、mysql_archiver

2.1 归档调度

db_archive_exec.py,从数据库获取归档任务的基本信息,调用pt-archiver进行操作

2.1.1 表结构设计

表db_archive_info,主要存放归档任务的基本信息

a211f261591588d28acc3f207e7382e7d1ff2c1e

表db_archive_log,主要存放归档任务的执行日志

e0a51aa2c8c5b52d58174f75cafd47e670e02ed3

2.1.2 获取归档任务

567f6e565dee82d4faabb086406c7908705be3d1

2.1.3 调用pt-archiver

650dcceb79ae61238cbd9c9442b56f20c7514683

2.1.4 部署crontab

执行db_archive_exec.py需要指定两个参数,

参数1:db ip/域名

参数2:db schema

如:python db_archive_exec.py 127.0.0.1 db123

ee3234e3d74aac4ce33d2d06357251b1cb564741

2.2 归档监控

db_archive_monitor.py,监控前一次的归档任务是否执行成功,并结合zabbix进行报警

c6c595b5d7ba1c46d8446191f1498d9ba5b3f43c

2.2.1 数据库视图设计

视图vw_db_archive_fail,汇总前一天执行失败的归档任务

110a6b3064319f14fbc57846382e3bd1ace187cd

2.2.2 获取归档监控信息

eb0b6f290f47a7160e5f432f27557add7bd4bd76

2.2.3 通过logger生成文本

f4bc2dad3c76eccf06c9729797c08cda3a304710

2.3 归档报表

db_archive_report_weekly.py,生成前一周的归档情况,并以邮件方式发送

87e2773d37662644f126d79ddc8148d4df915b0a

2.3.1 表结构设计

db_archive_report_weekly,主要存放数据库归档周报数据

e1e82f9b5eaa87c9469642cafd581a1ca4e93fb7

2.3.2 数据库视图设计

视图vw_db_archive_report_weekly,计算前一周的数据库归档情况

1cd2ea8529eb1d6be90599b83ab89a0c03a31e1e

2.3.3 生成邮件内容

557c41184b1e08ecc0c8e4e4bd6463f46f71c62f

三、小结

开发运维工具,说白了,就是为了避免重复的运维工作,让运维尽可能地自动化。所以,能提高生产力的工具,我觉得都是好工具。

MySQL_archiver基本上实现了数据归档的自动运转,统一的归档任务调度管理、自动监控和预警、自动生成报表。在一定程度上节约了生产力,提高了运维效率。

MySQL_archiver也是存在很多缺点的,比如:Python代码有点臃肿,不够简洁;缺少可视化的操作界面,如果能有一套运维平台,那就完美了。


原文发布时间为:2017-12-26

本文作者:蓝剑锋

本文来自云栖社区合作伙伴“老叶茶馆”,了解相关信息可以关注“老叶茶馆”微信公众号

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
27天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
7天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
24天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
167 15
|
19天前
|
存储 关系型数据库 MySQL
mysql怎么查询longblob类型数据的大小
通过本文的介绍,希望您能深入理解如何查询MySQL中 `LONG BLOB`类型数据的大小,并结合优化技术提升查询性能,以满足实际业务需求。
74 6
|
27天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
46 10
|
28天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
1月前
|
SQL 关系型数据库 MySQL
mysql分页读取数据重复问题
在服务端开发中,与MySQL数据库进行数据交互时,常因数据量大、网络延迟等因素需分页读取数据。文章介绍了使用`limit`和`offset`参数实现分页的方法,并针对分页过程中可能出现的数据重复问题进行了详细分析,提出了利用时间戳或确保排序规则绝对性等解决方案。
|
2月前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
2月前
|
算法 Unix 数据库
Python编程入门:从基础到实战
本篇文章将带你进入Python编程的奇妙世界。我们将从最基础的概念开始,逐步深入,最后通过一个实际的项目案例,让你真正体验到Python编程的乐趣和实用性。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你提供有价值的信息和知识。让我们一起探索Python的世界吧!