我是靠谱客的博主 感性草莓,这篇文章主要介绍表结构同步工具 - mysql-schema-sync数据库表同步,现在分享给大家,希望可以做个参考。

数据库表同步

摘要

在项目中期阶段,我们不同环境的数据库结构同步会出现很多的问题,例如我们要部署生产环境时,由于一个字段同步漏了,生产环境的程序就可能会出问题,于是就可以使用“mysql-schema-sync”工具来生成数据库同步脚本

golang 、git环境安装

复制代码
1
2
yum install go git

命令 go version 查看 go 环境是否安装成功

进入 /usr/lib/golang/src 目录下

复制代码
1
2
3
# 安装 mysql-schema-sync go get -u github.com/hidu/mysql-schema-sync

直接 GET 会超时,用代理还是靠谱些

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
export GOPROXY=https://goproxy.io export GO111MODULE=on # go.mod 配置 module github.com/zhaojh329/rttys go 1.14 require ( github.com/dwdcth/consoleEx v0.0.0-20180521133551-f56f6eb78b76 github.com/gorilla/websocket v1.4.1 github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c github.com/json-iterator/go v1.1.9 github.com/kylelemons/go-gypsy v0.0.0-20160905020020-08cad365cd28 github.com/mattn/go-colorable v0.1.4 github.com/rakyll/statik v0.1.7 github.com/rs/zerolog v1.18.0 golang.org/x/crypto v0.0.0-20200311171314-f7b00557c8c4 )

执行安装后,输出以下日志

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@VM_0_8_centos src]# go get -u github.com/hidu/mysql-schema-sync go: finding github.com/hidu/mysql-schema-sync latest go: downloading github.com/hidu/mysql-schema-sync v0.0.0-20200101011914-2d93ae04acf6 go: extracting github.com/hidu/mysql-schema-sync v0.0.0-20200101011914-2d93ae04acf6 go: downloading github.com/go-sql-driver/mysql v1.4.1 go: extracting github.com/go-sql-driver/mysql v1.4.1 go: downloading google.golang.org/appengine v1.6.2 go: extracting google.golang.org/appengine v1.6.2 go: finding github.com/go-sql-driver/mysql v1.5.0 go: finding google.golang.org/appengine v1.6.6 go: downloading github.com/go-sql-driver/mysql v1.5.0 go: extracting github.com/go-sql-driver/mysql v1.5.0

查看 go 环境变量配置

复制代码
1
2
go env

找到 go 默认第三方源安装目录

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/root/.cache/go-build" GOENV="/root/.config/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/root/go" GOPRIVATE="" GOPROXY="direct" GOROOT="/usr/lib/golang" GOSUMDB="off" GOTMPDIR="" GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64" GCCGO="gccgo" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build499542284=/tmp/go-build -gno-record-gcc-switches"

源安装地址为 /root/go

复制代码
1
2
3
pwd /root/go/bin

编辑 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
24
25
26
27
# vim config 文件,将以下配置替换 cat /root/go/src/github.com/hidu/mysql-schema-sync/config.json { "source":"数据库用户名:数据库密码@(数据库IP:端口)/数据库名称", "dest":"数据库用户名:数据库密码@(数据库IP:端口)/数据库名称", "alter_ignore":{ "tb1*":{ "column":[""], "index":[""], "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":[], "email":{ "send_mail":false, "smtp_host":"smtp.163.com:25", "from":"xxx@163.com", "password":"xxx", "to":"xxx@163.com" } }

执行以下命令查看同步表差异

复制代码
1
2
./mysql-schema-sync -conf /root/go/src/github.com/hidu/mysql-schema-sync/config.json 2>/dev/null >db_alter.sql

汇总查询结果

复制代码
1
2
3
4
5
6
7
1. 进入 bin 目录 cd /root/go/bin 2. 执行查询 ./mysql-schema-sync -conf /root/go/src/github.com/hidu/mysql-schema-sync/config.json 2>/dev/null >db_alter.sql 或者 ./mysql-schema-sync -conf /root/go/src/github.com/hidu/mysql-schema-sync/config.json

参考资料

GitHub:https://blog.csdn.net/liyyzz33/article/details/84587300

安装MySQL同步工具:https://github.com/hidu/mysql-schema-sync/

第三方包存储路径:https://blog.csdn.net/taoerchun/article/details/92766214

GO 目录详解:https://www.baidu.com/link?url=ygwRwgKo9cc0wbFACZ7opm1JSQDXGzy5NvRZqWb_jGYc8iSoWH9E0ZYO1B7jsDmWJy1WD_u64whZOeYHhfdASq&wd=&eqid=bd3f251400168765000000035f12a269

最后

以上就是感性草莓最近收集整理的关于表结构同步工具 - mysql-schema-sync数据库表同步的全部内容,更多相关表结构同步工具内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(108)

评论列表共有 0 条评论

立即
投稿
返回
顶部