首页 > 代码库 > MySQL表结构同步工具 mysql-schema-sync

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

MySQL表结构同步工具 mysql-schema-sync