• mysql-schema-sync表结构同步


    非主从同步情况下,很多方式只能同步数据,而源库表结构一旦被修改,被同步端将无法同步数据

    mysql-schema-sync 用于实现表结构同步

    github地址:GitHub - hidu/mysql-schema-sync: mysql表结构自动同步工具(目前只支持字段、索引的同步,分区等高级功能暂不支持)

    centos7 安装 mysql-schema-sync

    需要 go 环境支持

    1、安装go

    1. 下载解压
    2. wget -c https://studygolang.com/dl/golang/go1.13.3.linux-amd64.tar.gz
    3. tar -zxvf go1.13.3.linux-amd64.tar.gz -C /usr/local
    4. 添加环境变量
    5. # vim /etc/profile
    6. #golang config
    7. #export GO111MODULE=on
    8. export GOROOT=/usr/local/go
    9. export GOPATH=/home/hyh/gopath
    10. export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
    11. 加载环境
    12. # source /etc/profile
    13. 验证
    14. # go version
    15. go version go1.13.3 linux/amd64

    2、安装mysql-schema-sync

    1. 下载mysql-schema-sync
    2. # go get -u github.com/hidu/mysql-schema-sync
    3. 下载会会在当前目录下出现一个 go 目录
    4. 将该目录移动到/usr/local/mysql-schema-sync目录下
    5. # mv go /usr/local/mysql-schema-sync
    6. # ll /usr/local/mysql-schema-sync
    7. total 4
    8. drwxr-xr-x 5 root root 4096 Jul 11 11:51 go

    执行文件

    /usr/local/mysql-schema-sync/go/bin/mysql-schema-sync

    3、配置介绍

    1. 创建存放配置文件目录
    2. # mkdir /usr/local/mysql-schema-sync/go/conf
    3. 复制模板到conf下,找不到的话就自己创建(下面这个地址可能会变化,自己找找吧)
    4. # cp /root/go/pkg/mod/github.com/hidu/mysql-schema-sync@v0.0.0-20220317051126-20f526d87e88/config.json /usr/local/mysql-schema-sync/go/conf
    5. 自己创建
    6. [root@VM-0-30-centos conf]# cat config.json
    7. {
    8. "source":"root:xxxxxx@(192.168.0.15:3306)/lxq_test",
    9. "dest":"root:xxxxxx@(172.30.0.30:16673)/lxq_test",
    10. "alter_ignore":{
    11. "tb1*":{
    12. "column":["aaa","a*"],
    13. "index":["aa"],
    14. "foreign":[]
    15. }
    16. },
    17. // tables: table to check schema,default is all.eg :["order_*","goods"]
    18. "tables":[],
    19. // tables_ignore: table to ignore check schema,default is Null :["order_*","goods"]
    20. "tables_ignore":["X"],
    21. "email":{
    22. "send_mail":false,
    23. "smtp_host":"smtp.163.com:25",
    24. "from":"xxx@163.com",
    25. "password":"xxx",
    26. "to":"xxx@163.com"
    27. }
    28. }

     

    貌似一个配置文件只能配置一个库,不过你可以通过创建多个配置文件来实现多个库的同步

    配置解释

    source

            源库的用户名、密码、ip、端口、库名

    dest

            目标库的用户名、密码、ip、端口、库名

    alert_ignore

            同步时忽略的字段和索引,没有的话就瞎填,反正找不到也没事

    tables

            空表示默认同步所有表,也可以指定表

    tables_ignore

            默认会跳过所有表的检测,所以可以填写一个不存在的表,就会检查所有表了

    4、基本操作

    对比表结构,并生成表结构同步脚本,但不会在目标库中执行该同步,做测试或者需要生成脚本可以用此命令

    /usr/local/mysql-schema-sync/go/bin/mysql-schema-sync -conf config.json > alter.sql

    对比表结构,并在目标库中执行同步脚本

    /usr/local/mysql-schema-sync/go/bin/mysql-schema-sync -conf config.json -sync 

    5、计划任务

    1. # vim check.sh
    2. #!/bin/bash
    3. /usr/local/mysql-schema-sync/go/bin/mysql-schema-sync -conf /usr/local/mysql-schema-sync/go/conf/config.json -sync
    30 * * * *  cd /your/path/xxx/ && bash check.sh >/dev/null 2>&1

     

     

  • 相关阅读:
    KF32A学习笔记(一):工程导入、编译烧录方法(KF32 IDE+ KF32 PRO)
    十几年稳坐“大哥”位,搞Java的程序员就是这么“牛x”!
    谷歌浏览器 ERR_MANDATORY_PROXY_CONFIGURATION_FAILED 报错的处理方式
    开学数码必买清单推荐,2022年开学季最值得入手的好物
    高效Go编程: encoding/csv标准库深度解析
    11+单基因泛癌,转录组+单细胞+机器学习+预后模型
    Linux 定时器使用
    MyBatis多条件查询、动态SQL、多表操作、注解开发详细教程
    如何将用户导入自己的私域流量?“分享购“案例分享
    leetcode451:根据字符出现频率排序
  • 原文地址:https://blog.csdn.net/weixin_38367535/article/details/126530022