MySQL表结构同步工具 mysql-schema-sync
mysql-schema-sync 是一款使用go开发的、跨平台的、绿色无依赖的 MySQL 表结构自动同步工具。
用于将线上(其他环境)数据库结构变化同步到测试(本地)环境!
可以解决多人开发,每人都使用独立数据库导致结构不一样的问题!
支持功能:
1. 同步新表
2. 同步字段 变动:新增、修改
3. 同步索引 变动:新增、修改
4. 同步字段、索引 屏蔽变动更新
5. 支持预览(只对比不同步变动)
6. 邮件通知变动结果
配置
参考 默认配置文件 config.json 配置同步源、目的地址。
修改邮件接收人 当运行失败或者有表结构变化的时候你可以收到邮件通知。
默认情况不会对多出的表、字段、索引删除。若需要删除字段、索引 可以使用-drop参数。
配置示例(config.json):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
//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"
]
}
},
// 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 : 同步完成后发送邮件通知信息
运行
1
2
3
4
5
#运行同步
mysql-schema-
sync
-conf mydb_conf.json -
sync
#预览并生成变更sql
mysql-schema-
sync
-conf mydb_conf.json 2>
/dev/null
>db_alter.sql
自动定时运行
添加crontab 任务
30 * * * * cd /your/path/xxx/ && bash check.sh >/dev/null 2>&1
参数说明
mysql-schema-sync [-conf] [-dest] [-source] [-sync] [-drop]
说明:
#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_*
来源:http://git.oschina.net/hidu/mysql-schema-sync