MySQL表結(jié)構(gòu)同步工具 mysql-schema-sync
mysql-schema-sync 是一款使用go開發(fā)的、跨平臺的、綠色無依賴的 MySQL 表結(jié)構(gòu)自動同步工具。
用于將線上(其他環(huán)境)數(shù)據(jù)庫結(jié)構(gòu)變化同步到測試(本地)環(huán)境!
可以解決多人開發(fā),每人都使用獨立數(shù)據(jù)庫導(dǎo)致結(jié)構(gòu)不一樣的問題!
支持功能:
1. 同步新表
2. 同步字段 變動:新增、修改
3. 同步索引 變動:新增、修改
4. 同步字段、索引 屏蔽變動更新
5. 支持預(yù)覽(只對比不同步變動)
6. 郵件通知變動結(jié)果
配置
參考 默認配置文件 config.json 配置同步源、目的地址。
修改郵件接收人 當(dāng)運行失敗或者有表結(jié)構(gòu)變化的時候你可以收到郵件通知。
默認情況不會對多出的表、字段、索引刪除。若需要刪除字段、索引 可以使用-drop參數(shù)。
配置示例(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:待同步的數(shù)據(jù)庫
"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: 數(shù)據(jù)庫同步源
dest: 待同步的數(shù)據(jù)庫
tables: 數(shù)組,配置需要同步的表,為空則是不限制,eg: ["goods","order_*"]
alter_ignore: 忽略修改的配置,表名為tableName,可以配置 column 和 index,支持通配符 *
email : 同步完成后發(fā)送郵件通知信息
運行
1
2
3
4
5
#運行同步
mysql-schema-sync -conf mydb_conf.json -sync
#預(yù)覽并生成變更sql
mysql-schema-sync -conf mydb_conf.json 2>/dev/null >db_alter.sql
自動定時運行
添加crontab 任務(wù)
30 * * * * cd /your/path/xxx/ && bash check.sh >/dev/null 2>&1
參數(shù)說明
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 待同步的數(shù)據(jù)庫 eg: test@(10.10.0.1:3306)/test_1 該項不為空時,忽略讀入 -conf參數(shù)項 -sync 是否將修改同步到數(shù)據(jù)庫中去,默認否 -tables string 待檢查同步的數(shù)據(jù)庫表,為空則是全部 eg : product_base,order_*
來源:http://git.oschina.net/hidu/mysql-schema-sync

浙公網(wǎng)安備 33010602011771號