-
Notifications
You must be signed in to change notification settings - Fork 0
wwwbjqcom/mysql_to_db
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
#该工具可以结合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
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Packages 0
No packages published