Skip to content

wwwbjqcom/mysql_to_db

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

No packages published

Languages