redgate的mysql架构比较和数据比较工具
最近线上数据需要进行架构比较,比较两个服务器上的mysql实例上数据库的架构
数据比较可以用percona的pt-table-checksum和pt-table-sync,但是这两个工具只能比较数据的异同不能比较架构的异同
网上搜索了一下,只找到redgate的mysql架构比较和数据比较工具
地址:http://www.red-gate.com/products/mysql/mysql-comparison-bundle/
下载了mysql-comparison-bundle之后安装会有两个工具,一个是 MySQL Compare用来比较架构的异同,一个是MySQL Data Compare用来比较数据的异同
MySQL Compare
数据源选项卡
选项选项卡
选项里面两个
1、差异脚本行为
用来生成差异脚本的行为
例如是否包含use database,是否包含脚本头等
2、忽略选项
忽略sql中的注释
约束名
忽略自增列
忽略反引号 backticks
忽略表注释
两边架构相同的情况
两边架构不同的情况
生成的差异脚本以左边的mysql实例为标准
生成的脚本
-- Script generated by MySQL Compare 1.0.1.4 on 2017/6/12 23:40:53 SET @ORIGINAL_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @ORIGINAL_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @ORIGINAL_SQL_MODE=@@SQL_MODE, SQL_MODE='ALLOW_INVALID_DATES,NO_AUTO_VALUE_ON_ZERO,NO_AUTO_CREATE_USER'; SET @ORIGINAL_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @ORIGINAL_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @ORIGINAL_SQL_MODE=@@SQL_MODE, SQL_MODE='ALLOW_INVALID_DATES,NO_AUTO_VALUE_ON_ZERO,NO_AUTO_CREATE_USER'; ALTER TABLE `school`.`tt3` DROP COLUMN `tid`; SET FOREIGN_KEY_CHECKS=@ORIGINAL_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@ORIGINAL_UNIQUE_CHECKS; SET SQL_MODE=@ORIGINAL_SQL_MODE;
MySQL Data Compare
数据源选项卡
表格选项卡
如果表没有主键几乎是不能比较的,所以建议所有表都要有主键
可以自己选择比较的字段,也可以用where条件,但是where条件比较鸡肋,要针对所有表的
选项里面两个
1、比较行为
消除末尾空格
2、部署行为
包含部署脚本头
包含架构(数据库)名
两边数据相同的情况
两边数据不同的情况
生成的差异脚本以左边的mysql实例为标准
生成的脚本
SET @ORIGINAL_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @ORIGINAL_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; INSERT INTO `school3`.`tt4` VALUES (5, '78pppppppppp'); SET FOREIGN_KEY_CHECKS=@ORIGINAL_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@ORIGINAL_UNIQUE_CHECKS;
f