mysql表结构对比工具介绍
一、AmpNmp.DatabaseCompare工具
1、工具特点:
以及每张表中的字段名、数据类型、字符集、默认值、注释的不同,
支持数据库MySQL、MS SQL Server、SQLite的比较。
全面支持 Windows 系统,Windows XP / Windows 7 / Windows 8 / Windows 10 / Windows Server 2003 / Windows Server 2008 / Windows Server 2012 / Windows Server 2016 等。
下载地址:http://ampnmp.com/database-compare/
2、安装使用
下载安装包直接在windows上面安装后使用。Host是对于的ip地址、username、password对应数据库账号密码,点击连接后选择对应的需要对比的表对比,点击ConnectionString可以查看配置连接的端口号等,加入Port=3333可以执行其他的连接端口号。
二、mysqldiff对比表结构差异
缺点:对于整库下面所有表的对比不显示具体的表差异,只对比表是否存在。它会忽略表的注释、null or not null的差异。
1、安装mysqldiff
1.1 linux下安装mysqldifff
mysql不会安装mysqldiff,需要安装mysql-utilities.noarch包
# yum install mysql-utilities.noarch -y
# rpm -qa mysql-utilities --查询是否安装成功
mysqldiff --help --查询mysqldiff参数含义
$ mysqldiff --version
MySQL Utilities mysqldiff version 1.3.6 (part of MySQL Workbench Distribution 5.2.47)
License type: GPLv2
1.2 window下安装mysqldiff
MySQL Utilities下载地址:https://downloads.mysql.com/archives/utilities/
Windows系统中需提前安装“Visual C++ Redistributable Packages for Visual Studio 2013”,下载地址:https://www.microsoft.com/en-gb/download/details.aspx?id=40784 下载相应winsow版本的下载后直接点击下步就可以安装。安装成功之后可以使用命令:
cmd中 mysqldiff --version 查看版本,使用语法命令和linux中一样。
2、使用mysqldiff
2.1mysqldiff用法解析
mysqldiff --server1=user:pass@host:port:socket --server2=user:pass@host:port:socket db1.object1:db2.object1 db3:db4
db1:db2:如果只是指定数据库,那么就将两个数据库中互相缺少的对象显示出来,而对象里面的差异不进行对比;这里的对象包括表、存储过程、函数、触发器等。
db1.object1:db2.object1:如果指定了具体表对象,那么就会详细对比两个表的差异,包括表名、字段名、备注、索引、大小写等都有的表相关的对象。
--character-set:配置连接时用的字符集,如果不显示配置默认使用“character_set_client”
-d DIFFTYPE, --difftype:差异的信息显示的方式,有[unified|context|differ|sql](default: unified),如果使用sql那么就直接生成差异的SQL这样非常方便。
--changes-for=:例如--changes-for=server2,那么对比以sever1为主,生成的差异的修改也是针对server2的对象的修改。
--show-reverse:这个字面意思是显示相反的意思,其实是生成的差异修改里面同时会包含server2和server1的修改。
--skip-table-options:这个选项的意思是保持表的选项不变,即对比的差异里面不包括表名、AUTO_INCREMENT,ENGINE, CHARSET等差异。
2.2 操作演练
mysqldiff --server1=root:123456@172.16.104.10:3306 --server2=test:123456@172.16.104.7:3306 --changes-for=server1 --show-reverse --difftype=sql --skip-table-options test.a:test.a
mysqldiff --server1=root:123456@172.16.104.10:3306 --server2=test:123456@172.16.104.7:3306 --changes-for=server1 --show-reverse --difftype=sql --force test:test
mysqldiff --server1=root:123456@172.16.104.10:3306 --server2=test:123456@172.16.104.7:3306 --changes-for=server1 --show-reverse --difftype=sql test:test
三、navicat对比mysql表结构
navicate需要收费。navicate的表结构对比实际使用的就是结构同步的功能。只做比较的话,不要继续执行比较后的步骤。
四、dms对比表结构
dms是阿里云的客户端支持表结构的对比和生产差异修改语句,并且可以审批到目标端执行。dms实际使用的是结构同步的功能,只做比较的话,不要继续执行比较后的步骤。
参考文档:https://help.aliyun.com/document_detail/202275.html