centos安装MySQL表结构自动同步-工具 mysql-schema-sync

鲁丰
2023-12-01

下载即用

mysql-schema-sync 是一款使用 Go 开发跨平台的 MySQL 表结构自动同步工具。主要用于解决多个环境数据库表结构不同步问题。

mysql-schema-sync 支持功能:
同步新表
同步字段 变动:新增、修改
同步索引 变动:新增、修改
支持预览(只对比不同步变动)
邮件通知变动结果
支持屏蔽更新表、字段、索引、外键
支持本地比线上额外多一些表、字段、索引、外键
项目地址:https://github.com/hidu/mysql-schema-sync

安装环境

#yum -y install go git

下载工具

#go get -u github.com/hidu/mysql-schema-sync

默认路径为

#pwd

/root/go/src/github.com/hidu/mysql-schema-sync
把运行脚本拷贝到配置目录

#cd /root/go/bin/
#cp mysql-schema-sync /root/go/src/github.com/hidu/mysql-schema-sync/

配置
mysql-schema-sync 默认配置文件是 config.json,默认在/root/go/src/github.com/hidu/mysql-schema-sync/ 目录里。
配置示例(config.json):

{
      //source:同步源
      "source":"test:test@(127.0.0.1:3306)/test_0",
      //dest:待同步的数据库
      "dest":"test:test@(127.0.0.1:3306)/test_1",
      #以下可以不要直接同步也可!
      //alter_ignore: 同步时忽略的字段和索引
      "alter_ignore":{
        "tb1*":{
            "column":["aaa","a*"],
            "index":["aa"],
            "foreign":[]
        }
      },
      //  tables: table to check schema,default is all.eg :["order_*","goods"]
      "tables":[],
      //有变动或者失败时,邮件接收人
      "email":{
          "send_mail":false,
         "smtp_host":"smtp.163.com:25",
         "from":"xxx@163.com",
         "password":"xxx",
         "to":"xxx@163.com"
      }
}

json配置项说明
source: 数据库同步源
dest: 待同步的数据库
tables: 数组,配置需要同步的表,为空则是不限制,eg: [“goods”,“order_*”]
alter_ignore: 忽略修改的配置,表名为tableName,可以配置 column 和 index,支持通配符 *
email : 同步完成后发送邮件通知信息

直接运行

./mysql-schema-sync -conf config.json -sync

mysql-schema-sync 命令使用语法

#./mysql-schema-sync --help

Usage of ./mysql-schema-sync:
-conf string #指定配置文件名称。
json config file path (default “./config.json”)
-dest string
mysql dsn dest,eg test@(127.0.0.1:3306)/imis
-drop
drop fields,index,foreign key
-mail_to string
overwrite config’s email.to
-source string
mysql dsn source,eg: test@(10.10.0.1:3306)/test
when it is not empty ignore [-conf] param
-sync
sync shcema change to dest db
-tables string
table names to check
eg : product_base,order_*
mysql schema sync tools 0.3
https://github.com/hidu/mysql-schema-sync/

参数说明

-conf string 指定配置文件名称。
-dest string 指定同步的目的数据库,eg:root:000000@(127.0.0.1:3306)/wordpress。
-source string 指定同步的源数据库 eg:root:000000@(127.0.0.1:3306)/wordpress_new。该项不为空时,忽略读入 -conf 参数项。
-drop 是否对本地多出的字段和索引进行删除,默认值为否。
-sync 是否将修改同步到目标数据库中去,默认值为否。
-tables string 待检查同步的数据库表,为空则是全部。eg : product_base,order_*。

同时同步到多个目标库
官方有提供一个 SHELL 脚本 check.sh 可以同时在多个库间同步。只需为要同步的多个库生成多个以 .json 为后缀的配置文件,check.sh 脚本会依次运行每份配置。

脚本默认在当前目录调用 mysql-schema-sync,这里需要根据实际情况修改下:

cat check.sh

for f in ls *.json
do
mysql-schema-sync -conf $f -sync
done

运行脚本,完成后会在当前目录的 log 目录下记录每次运行后的日志。

30 * * * * cd /your/path/xxx/ && bash check.sh >/dev/null 2>&1
 类似资料: