1 Star 1 Fork 1

小菜鸟/mysql_to_db

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
readme 3.86 KB
一键复制 编辑 原始数据 按行查看 历史
xiaozhong 提交于 2018-05-19 22:41 . readme
#该工具可以结合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
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/wwbjqcom/mysql_to_db.git
git@gitee.com:wwbjqcom/mysql_to_db.git
wwbjqcom
mysql_to_db
mysql_to_db
master

搜索帮助