基于python的mysql复制工具

栏目: Python · 发布时间: 6年前

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

一 简介

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 拓展

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

mysql-replication.py

执行脚本结果 如下图

基于python的mysql复制工具

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

-The End-

本公众号长期关注于数据库技术以及性能优化,故障案例分析,数据库运维技术知识分享,个人成长和自我管理等主题,欢迎扫码关注。

基于python的mysql复制工具


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

硅谷热

硅谷热

埃弗雷特.M.罗杰斯 / 范国鹰 等 / 1985.8 / 经济科学出版社 / 1.9

《硅谷热》总共分三部分。第一部分为“硅谷的崛起”,以苹果电脑的传奇故事为主线,讲述了硅谷的发展历史。第二部分为“高技术文明”,从风险投资、创业故事、人物传奇等各个方面描绘了硅谷的生态状况。第三部分为“硅谷的明天”,讲述了硅谷模式在全球的扩散、硅谷面临的全球竞争和深远影响。 书中,硅谷这场传奇的主要角色:人物、公司、技术、产品等都综合在其中,一锅子端给了嗷嗷待哺的人们:PC革命、半导体传奇、软......一起来看看 《硅谷热》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具