mysql表結構自動同步工具

mysql-schema-sync

mysql表結構自動同步工具

mysql表結構自動同步工具

用於將 線上 數據庫結構變化同步到 本地環境!

支持功能:

  1. 同步新表
  2. 同步字段 變動:新增、修改
  3. 同步索引 變動:新增、修改
  4. 支持預覽(只對比不同步變動)
  5. 郵件通知變動結果
  6. 支持屏蔽更新表、字段、索引、外鍵
  7. 支持本地比線上額外多一些表、字段、索引、外鍵

安裝

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

配置

參考 默認配置文件 config.json 配置同步源、目的地址。

修改郵件接收人 當運行失敗或者有表結構變化的時候你可以收到郵件通知。

默認情況不會對多出的表、字段、索引、外鍵刪除。若需要刪除字段、索引、外鍵 可以使用 -drop 參數。

配置示例(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":"[email protected]",
"password":"xxx",
"to":"[email protected]"
}
}

json配置項說明

source: 數據庫同步源

dest: 待同步的數據庫

tables: 數組,配置需要同步的表,為空則是不限制,eg: ["goods","order_*"]

alter_ignore: 忽略修改的配置,表名為tableName,可以配置 column 和 index,支持通配符 *

email : 同步完成後發送郵件通知信息

運行

直接運行

mysql-schema-sync -conf mydb_conf.json -sync

預覽並生成變更sql

mysql-schema-sync -conf mydb_conf.json 2>/dev/null >db_alter.sql

使用shell調度

bash check.sh

每個json文件配置一個目的數據庫,check.sh腳本會依次運行每份配置。 log存儲在當前的log目錄中。

自動定時運行

添加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

待同步的數據庫 eg: test@(10.10.0.1:3306)/test_1
該項不為空時,忽略讀入 -conf參數項
-drop
是否對本地多出的字段和索引進行刪除 默認否
-source string
mysql 同步源,eg test@(127.0.0.1:3306)/test_0
-sync
是否將修改同步到數據庫中去,默認否
-tables string
待檢查同步的數據庫表,為空則是全部
eg : product_base,order_*


分享到:


相關文章: