1 Star 1 Fork 1

小菜鸟/mysql_to_db

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
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

空文件

简介

暂无描述 展开 收起
Python
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 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

搜索帮助