基于python的mysql复制工具详解
一 简介
python-mysql-replication 是基于python实现的 mysql复制协议工具,我们可以用它来解析binlog 获取日志的insert,update,delete等事件 ,并基于此做其他业务需求。比如数据更改时失效缓存,监听dml事件通知下游业务方做对应处理。
其项目信息
二 实践
2.1 安装配置
获取源代码
git clone
使用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
执行脚本结果 如下图
除了解析binlog,我们还可以用python-mysql-replication
做数据全量加增量迁移。比如仅仅迁移某些大表而不是整个库的时候,可以用到。有兴趣的朋友可以想想大概的算法。
总结
以上所述是小编给大家介绍的基于python的mysql复制工具,希望对大家有所帮助
上一篇: mysql语句查询用户权限过程详解
下一篇: MySQL如何实现负载均衡功能