MYSQL数据库同步工具
MYSQL数据库同步工具
GIT地址:https://gitee.com/michlee/mysql-sync
因开发需要,经常要同步MYSQL数据库结构及部分基础数据到其他生产服务器。而且有时候需要一次性同步到多台服务器,而且不同的服务器同步的表结构还不一样。Navicat一次就只能同步一台服务器。所以写了这个同步工具。可以一次性把需要同步的表结构同步到需要同步的其他服务器(单个/多个都可以)。
用这个工具先创建同步配置,根据不同的同步需求,创建不同的同步配置。然后根据不同的需求,选择相应的配置进行同步即可。配置一次,以后每次同步直接选配置即可,不用再每次都去选服务器。
功能
目前仅针对Mysql数据库
1.表结构同步 (支持1对多数据库配置:新表/单表/多表/全表 (备注:多配置全表同步速度会慢一点。而且全表同步时,表之间有关联的表,如果关联表不存在,有可能第一次同步时有些表会创建失败,需要再同步一次。))
2.视图同步 (支持1对多数据库配置)
3.函数同步 (支持1对多数据库配置)
4.数据全量同步 (1对1数据库配置, 支持多表)
5.本地启动 http://localhost:8765/
6.默认管理账户admin/123456
说明
程序采用SpringBoot + Shiro + Mysql + thymeleaf架构,做了基础的用户权限控制(有其他需求可自行扩展)。前端页面使用了LayUi(本人做后端,前端不太熟,不喜勿喷)。
配置方式1:
用数据库配置(脚本自行导入tabsync.sql,参考图示),并且配置可以根据不同用户设置为私有(公开配置,所有用户都可见,私有配置只有自己可见)。~~(mysqlType【版本】字段:暂时没有任务意义,仅做数据库版本记录)~~
配置方式2:
配置JSON文件(master.json/targetList.json; 使用测试类直接执行,该方式未写数据同步,可自行改代码)。
master.json:(源数据库/单个)
{"host": "127.0.0.1:3306",
"username": "root",
"password": "root",
"database": "test",
"mysqlType": "5",
"charSet": "utf8"
}
targetList.json:(目标数据库/JSON数组(可多个))
[
{"host": "192.168.1.2:6603",
"username": "root",
"password": "root",
"database": "test",
"mysqlType": "5",
"charSet": "utf8"
},
{"host": "192.168.1.3:6603",
"username": "root",
"password": "root",
"database": "test",
"mysqlType": "5",
"charSet": "utf8"
}
]
可以配置自动执行代码-程序启动完成自动执行一次(ExecuteTask.java)
备注:
表结构比对借鉴于https://gitee.com/alchemystar/Lancer,并按需求做了部分改动。
配图