MySQL表结构同步工具 mysql-schema-sync
mysql-schema-sync 是一款使用go开发的、跨平台的、绿色无依赖的 MySQL 表结构自动同步工具。
用于将线上(其他环境)数据库结构变化同步到测试(本地)环境!
可以解决多人开发,每人都使用独立数据库导致结构不一样的问题!
支持功能:
- 同步新表
- 同步字段 变动:新增、修改
- 同步索引 变动:新增、修改
- 同步字段、索引 屏蔽变动更新
- 支持预览(只对比不同步变动)
- 邮件通知变动结果
### 配置
参考 默认配置文件 config.json 配置同步源、目的地址。
修改邮件接收人 当运行失败或者有表结构变化的时候你可以收到邮件通知。
默认情况不会对多出的表、字段、索引删除。若需要删除字段、索引 可以使用-drop参数。
安装:
方法1:
直接使用安装包mysql-schema-sync_0.3.tar.gz解压就可以使用(本人自己压缩的,暂不提供下载功能,需要请邮件:af.neo@foxmail.com)
方法2:
# yum -y install go git
# go get -u github.com/hidu/mysql-schema-sync
################################################################################
使用:
1.配置文件config.json
配置示例(config.json):
{ //source:同步源 "source":"mysql_user:mysql_user_password@(127.0.0.1:3306)/databaseName1", //dest:待同步的数据库 "dest":"mysql_user:mysql_user_password@(127.0.0.1:3306)/databaseName2", //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" } }
精简示例
{
"source":"root:123456@(127.0.0.1:3306)/test",
"dest":"root:123456@(127.0.0.1:3306)/test2",
"tables":[]
}
json配置项说明
source: 数据库同步源
dest: 待同步的数据库
tables: 数组,配置需要同步的表,为空则是不限制,eg: ["goods","order_*"]
alter_ignore: 忽略修改的配置,表名为tableName,可以配置 column 和 index,支持通配符 *
email : 同步完成后发送邮件通知信息
2.运行命令
#直接运行
./mysql-schema-sync -conf mydb_conf.json -sync
#预览并生成变更sql
./mysql-schema-sync -conf mydb_conf.json 2>/dev/null
./mysql-schema-sync -conf mydb_conf.json 2>/dev/null >db_alter.sql
命令参数说明:
#mysql-schema-sync -help
-conf string
配置文件名称
-dest string
mysql 同步源,eg test@(127.0.0.1:3306)/test_0
-drop
是否对本地多出的字段和索引进行删除 默认否
-source string
待同步的数据库 eg: test@(10.10.0.1:3306)/test_1
该项不为空时,忽略读入 -conf参数项
-sync
是否将修改同步到数据库中去,默认否
-tables string
待检查同步的数据库表,为空则是全部
eg : product_base,order_*
官方下载地址及说明
https://gitee.com/hidu/mysql-schema-sync