代码拉取完成,页面将自动刷新
#该工具可以结合mysqldump备份工具实现在线迁移库、表,也可使用全量导出的功能直接在线迁移,主要功能通过提供的binlog文件及position模拟slave追加数据到目标库,基于python3.6.5开发
##功能:
1、通过binlog追加dml数据到目标库
2、可通过库名、表名过滤
3、实时记录处理到的binlog位置,可断点续传
4、可以启动多个通过设置不同的server_id实现多线程同步不同的库、表
5、支持在线全量导出数据到目标库,参数--full开关,不设置该参数默认只做binlog同步
6、全量导出可以多线程导出,默认单线程
7、可过滤某个线程id执行的所有操作,可做为大事务操作时快速回滚切换的角色
可通过-h、--help查看参数帮助:
Usage:
Options:
-h [--help] : print help message
-f [--binlogfile] : the file path
--start-position : Start reading the binlog at position N. Applies to the
first binlog passed on the command line.
-t [--tables] : table name list ,"t1,t2,t3"
-D [--databases] : database name list ,"db1,db2,db3"
-u [--user] : User for login if not current user
-p [--passwd] : Password to use when connecting to server
-H [--host] : Connect to host, default localhost
-P [--port] : Port number to use for connection ,default 3306
-S [--socket] : mysql unix socket
--dhost : destination mysql host
--dport : destination mysql port
--duser : destination mysql user name
--dpasswd : destination mysql password
--binlog : record binlog on destination mysql , when append data. default flase
--full : whether the total quantity is exported. default false
--threads : dump threads,default 1 if --full is true
--ignore : ignore type [delete,insert,update],allows filtering of the operation
--ithreads : ignore thread id
--serverid : default 133
注意项:
1、实时记录的binlog是通过临时库表实现,所以账号权限需有对应库的权限,库名为dump2db
2、需要information_schema.columns表的查询权限以及replication slave权限
3、目标库增删改权限
4、只实现了dml语句产生的数据追加操作,不会同步迁移途中产生的DDL语句
5、可过滤delete、inser、update中的某个操作
6、默认在目标库插入时未记录binlog,如需记录binlog需添加--binlog参数
7、如需要多线程断点续传,需分别指定不同的server_id,且在重启恢复同步时需手动获取dump2db的binlog信息并设定参数
8、在线导出数据会短暂全库读锁,在初始化完成所有链接并获取到当前binlog信息时会释放
9、全量导出途中如果某一个线程在操作途中发生错误将退出整个任务,以免发生数据不一致的情况
10、设置了--full参数再设置binlog和start-position将无效
11、导出数据到目标库会首先删除对应的目标表,并创建一个空表
12、至少指定一个或多个数据库,表名可不指定,不指定表名时将对该库下所有表进行操作
13、多线程导出选择索引的优先级(自增->主键->唯一索引->索引),如无索引的表将直接退出
python依赖包:
pip install pymysql struct
示例语句:
同步参数:
python main.py -f mysql-bin.000007 --start-position 114991021 -u root -p root -H 192.168.1.3 --dhost 192.168.1.2 --dport 3306 --duser root --dpasswd root -D db1,db2 -t t1,t2
全量迁移:
python main.py -u root -p root -H 192.168.1.3 --dhost 192.168.1.2 --dport 3306 --duser root --dpasswd root -D db1,db2 -t t1,t2 --full --threads 3
####如有疑问可加qq群:479472450
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。