基于python的mysql复制工具详解

2022-05-22 0 726
目录
  • 一 简介
  • 二 实践
    • 2.1 安装配置
    • 2.2 核心类介绍
    • 2.3 如何使用呢?
    • 2.3 拓展

一 简介

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复制工具,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对NICE源码网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MySql 基于python的mysql复制工具详解 https://www.niceym.com/51239.html