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