linux mysql同步工具下载_MySQL表结构自动同步工具mysql-schema-sync安装使用

mysql表结构自动同步工具

用于将 线上 数据库结构变化同步到 本地环境!

支持功能:

同步新表

同步字段 变动:新增、修改

同步索引 变动:新增、修改

支持预览(只对比不同步变动)

邮件通知变动结果

支持屏蔽更新表、字段、索引、外键

首先安装go 和 git环境

安装go语言环境

下载安装包

wget -c https://studygolang.com/dl/golang/go1.10.3.linux-amd64.tar.gz

解压到/usr/local

tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gz

配置环境变量

vi /etc/profile

在文件末尾添加

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin

生效环境变量

source /etc/profile

验证

go version

go version go1.10.3 linux/amd64

安装成功

安装git

yum -y install git

安装mysql-schema-sync

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

执行命令会在当前目录生成一个go/文件夹

以我的安装目录为例 我下载在了/root 目录下 ,

mysql-schema-sync的命令在/root/go/bin/下

配置文件config.json 和 自动运行脚本check.sh 在目录/root/go/src/github.com/hidu/mysql-schema-sync下

配置文件

一定要注意新添加的参数  -tables_ignore string  如果默认值的话工具会跳过所有表的检测

解决办法可以写一个没有的表名 例如  -tables_ignore "x"

{

"source":"root:密码@(10.238.160.1:3306)/xiaodai",

"dest":"root:密码@(10.238.160.2:3306)/xiaodai",

"alter_ignore":{

"tb1*":{

"column":["aaa","a*"],

"index":["aa"],

"foreign":[]

}

},

// tables: table to check schema,default is all.eg :["order_*","goods"]

"tables":[],

// tables_ignore: table to ignore check schema,default is Null :["order_*","goods"]

"tables_ignore":["x"],

"email":{

"send_mail":false,

"smtp_host":"smtp.163.com:25",

"from":"xxx@163.com",

"password":"xxx",

"to":"xxx@163.com"

}

}

[root@10-238-160-1 bin]# ./mysql-schema-sync --help

Usage of ./mysql-schema-sync:

-conf string

json config file path (default "./config.json")

-dest string

mysql dsn dest,eg test@(127.0.0.1:3306)/imis

-drop

drop fields,index,foreign key

-mail_to string

overwrite config's email.to

-source string

mysql dsn source,eg: test@(10.10.0.1:3306)/test

when it is not empty ignore [-conf] param

-sync

sync shcema change to dest db

-tables string

table names to check

eg : product_base,order_*

-tables_ignore string

table names to ignore check

eg : product_base,order_*

mysql schema sync tools 0.3

https://github.com/hidu/mysql-schema-sync/

参数解释:

# 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_*

实际使用

比对表结构并生成sql文件,不执行

./mysql-schema-sync -conf config.json > alter.sql

查看alter.sql 生成了一些添加列或者索引的语句,如下

[root@10-238-160-1 mysql-schema-sync]# head -50 alter.sql

-- Table : fund_sign_config

-- Type : alter

-- RealtionTables :

-- SQL :

ALTER TABLE `fund_sign_config`

ADD `UPDATE_TIME` datetime NOT NULL,

ADD `DEL_FLAG` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除 0 未删除 1删除',

ADD `ID` bigint(20) NOT NULL AUTO_INCREMENT,

ADD `CHANNEL` varchar(20) DEFAULT NULL COMMENT '签约的通道 比如 BF',

ADD `CREATE_TIME` datetime NOT NULL,

ADD `PRIORITY` int(11) NOT NULL COMMENT '优先级 越大越优先',

ADD `FUND_CODE` varchar(20) NOT NULL COMMENT '资金方编码',

ADD `SIGN_TYPE` tinyint(4) DEFAULT NULL COMMENT '签约类型 1 主订单 2 白条 3 逾期',

ADD `PARTNER_ID` varchar(10) DEFAULT NULL COMMENT '商户号',

DROP PRIMARY KEY,

ADD PRIMARY KEY (`ID`);

从源库应用差异结构到目标库

./mysql-schema-sync -conf config.json -sync

可以利用check.sh 配置定时任务,因为我的测试环境较多 有32套 我自己改写了脚本如下

ce2f80a482d8987c3c5659b8dcb94fa3.png

配置定时任务,每周从线上往测试同步一次

#定时从线上同步表结构到测试环境 mysql-schema-sync

00 01 * * 7 cd /root/go/src/github.com/hidu/mysql-schema-sync && bash check.sh >/dev/null 2>&1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值