基于python的mysql复制工具详解

作者:yangyidba 时间:2023-06-24 01:08:28 

一 简介

python-mysql-replication 是基于python实现的 MySQL复制协议工具,我们可以用它来解析binlog 获取日志的insert,update,delete等事件 ,并基于此做其他业务需求。比如数据更改时失效缓存,监听dml事件通知下游业务方做对应处理。

其项目信息

二 实践

2.1 安装配置

获取源代码

git clone http://www.github.com/noplay/python-mysql-replication

使用pip 安装

pip install mysql-replication

权限: 可以直接使用复制账号也可以使用其他账号,但是该账号必须 SELECT, REPLICATION SLAVE, REPLICATION CLIENT 权限


GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'replicator'@'%' IDENTIFIED BY 'xxxxx';

数据库日志相关的参数设置如下:


log_bin=on ,binlog_format=row,binlog_row_image=FULL

2.2 核心类介绍

python-mysql-replication 的入口是类BinLogStreamReader(),我们在使用该工具时需要实例化一个BinLogStreamReader()对象 stream, BinLogStreamReader 通过 ReportSlave 向主库注册作为一个slave角色,用于接受MySQL的binlog广播 。有兴趣的可以研究其代码具体实现。

该实例提供解析 binlog 各种事件的集合,每个事件也是一个对象。

初始化BinLogStreamReader()实例需要使用的参数如下:

2.3 如何使用呢?

最简单的用法 脚本名 pyreplica.py

开启两个窗口,一个窗口执行,另外一个窗口操作mysql 写入或者修改数据

python pyreplica.py

输出如下:

2.3 拓展

基于该工具提供的日志事件解析我们可以做很多事情,比较有名的工具 binlog2sql 利用该工具解析binlog 做数据回滚 。

mysql-replication.py

执行脚本结果 如下图

基于python的mysql复制工具详解

除了解析binlog,我们还可以用python-mysql-replication 做数据全量加增量迁移。比如仅仅迁移某些大表而不是整个库的时候,可以用到。有兴趣的朋友可以想想大概的算法。

总结

以上所述是小编给大家介绍的基于python的mysql复制工具,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://mp.weixin.qq.com/s

标签:python,mysql,复制工具
0
投稿

猜你喜欢

  • python轻松查到删除自己的微信好友

    2021-06-06 12:31:44
  • js设计模式之单例模式原理与用法详解

    2024-04-29 14:09:13
  • XML to DDL的项目关键:与数据库同步

    2008-05-29 14:19:00
  • 使用Django xadmin 实现修改时间选择器为不可输入状态

    2023-11-19 12:12:06
  • python实现按关键字筛选日志文件

    2022-12-28 21:45:49
  • 使用python无账号无限制获取企查查信息的实例代码

    2021-09-23 20:26:10
  • python+Django+apache的配置方法详解

    2021-02-18 06:39:06
  • python如何运行js语句

    2022-04-10 02:34:27
  • 五分钟带你搞懂python 迭代器与生成器

    2021-08-24 19:25:10
  • 用户体验的误解

    2008-07-15 12:31:00
  • Python使用py2exe打包程序介绍

    2023-11-12 21:29:55
  • PyQt5实现进度条与定时器及子线程同步关联

    2023-03-20 14:48:35
  • Django 批量插入数据的实现方法

    2023-01-11 10:40:58
  • Python三元运算实现方法

    2021-12-27 06:02:52
  • CentOS7开启MySQL8主从备份、每日定时全量备份(推荐)

    2024-01-15 20:31:18
  • c#获得目标服务器中所有数据库名、表名、列名的实现代码

    2024-01-25 11:20:48
  • Python如何实现Excel的最合适列宽(openpyxl)

    2023-07-23 04:06:04
  • Python生成rsa密钥对操作示例

    2021-08-25 03:43:31
  • Golang精编49面试题汇总(选择题)

    2023-07-12 23:49:44
  • sql exist的妙用

    2007-11-08 11:47:00
  • asp之家 网络编程 m.aspxhome.com