Mysql数据结构同步工具

一直从事软件网站系统开发工作,经常要在本地开发完成后,同步数据库结构到服务器端,

一般来说新项目就是把本地数据库直接导出到生产环境即可,但是后续的维护在数据结构同步上就稍显麻烦,

因此就有了这个项目的由来分享一个自己开发的小工具,方便进行两个数据库之间的同步,废话不多说直接进入正题,

下载dbsync工具包 https://download.csdn.net/download/weixin_36441117/12382401 (支持下赚点资源分谢谢)

压缩包内有个bin文件夹,其中找到对应的版本

压缩包文件目录及对应的版本说明如下

/bin

/bin/386/windows      如果是32位Windows系统请使用本文件夹下的dbsync.exe

/bin/386/linux             如果是32位Linux系统请使用本文件夹下的dbsync

/bin/amd64/windows 如果是64位Windows系统请使用本文件夹下的dbsync.exe

/bin/amd64/linux             如果是64位Linux系统请使用本文件夹下的dbsync

/bin/arm64                  应该没有arm嵌入式设备的用户吧,忽略此目录

 

找到对应的执行文件,放到与跟文件加下的config.json相同目录下,如下图

 

打开命令行工具到对应的目录下,并且执行dbsync如下图

为了方便使用先看下config,json文件如何配置

{
	"configure":{
		"UseLogFile" : false     //是否启用日志文件
		,"LogLevel" : 0          //日志等级0:除错模式 1.提醒 2.讯息 3.错误 4.致命错误
		
	},
	"source_db":{             //这里设置来源的数据库,如果使用xml模式可不设置
			"driver":"mysql"
			,"host":"192.168.26.1"
			,"port":"3306"
			,"user":"test"
			,"password":"123456"
			,"dbname":"test"
			,"charset":"utf8"
	},
	"target_db":[            //这里设置目标数据库,注意是数组,可以设置多个目标
		{
			"driver":"mysql"
			,"host":"192.168.26.1"
			,"port":"3306"
			,"user":"test"
			,"password":"123456"
			,"dbname":"test1"
			,"charset":"utf8"
			,"definer":"test@localhost"
		}	
	],
	"data_sync":[   //这里设置需要数据同步的表跟相对应的字段
		{
			"table_name" : "config"
			,"key_field" : "name,site_uid"
			,"exclude_field" : ["cfg_id"]
		},
		{
			"table_name" : "menu"
			,"key_field" : "mid"
			,"exclude_field" : []
		}
	
	],
	"scp_remote" :{  //这里设置的使用SCP上传的ssh设置
		"host" : "1.2.3.4"
		,"port" : 22
		,"username" : "root"
		,"password" : ""
	}
	
	
}

(1) source_db 是设置数据库的结构来源,如果使用库对库结构同步,

或者将数据库结构导出成XML文件时,需要设置此部分

(2)target_db 是用来将结构同步到那些数据库,所以注意这里是个数组,每个目标服务器是对象

(3)data_sync 这个设置要特别说一下,因为我们可能除了数据结构需要同步以外,有可能有一些数据也需要同步,

例如菜单表,可能我们系统增加功能之后,也需要在目标库中去新增对应的菜单,如下


		{
			"table_name" : "menu"
			,"key_field" : "mid"
			,"exclude_field" : []
		}

菜单表的表名为menu,然后为了判断该数据目标数据库是否有重复,所以需要指定 key_field如果目标表,

已经有相同的mid时就不插入该条数据,再看一个例子

		{
			"table_name" : "config"
			,"key_field" : "name,site_uid"
			,"exclude_field" : ["cfg_id"]
		},

我项目中还有一个环境变量配置表,这张表的目的是项目中,经常需要一些环境配置,这些配置是直接由数据表来生成,

配置的表单的,这张数据表的pk字段是cfg_id,但是因为本地的id可能跟线上不同,另外因为我们的项目是多用户系统,

每个站点使用site_uid来区分,每个变量都是使用 name 这个字段来区分不同变量,因此在数据同步的时候,使用了

"name,site_uid"来判断目标库里是否有相同数据,但是在插入数据的时候要忽略这张表本身的cfg_id主键字段以免重复

(4)scp_remote 为了方便我们经常需要将本地的数据库结构导出成XML文件并且上传到服务器,

因此提供了一个快速的上传命令,这里是配置远端的服务器的SSH设置使用此设置透过scp来上传

当配置完成来看下如何使用吧,命令特别简单

 

直接库对库的结构同步

D:\dbsync_v1.7>dbsync.exe sync

如果要将来源数据库结构导出XML文件,导出成 schema.xml

D:\dbsync_v1.7>dbsync.exe export

如果要将XML同步到目标数据库

D:\dbsync_v1.7>dbsync.exe xsync

将本地的文件透过SCP上传服务器

D:\dbsync_v1.7>dbsync.exe upload schema.xml /home/yang/

如有问题欢迎留言反馈

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值