mysql表结构对比工具

云掣YunChe11个月前技术文章2290

一、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可以执行其他的连接端口号。

连接后对比后显示如下:

image (16).png

二、mysqldiff对比表结构差异

优点:可以生成差异语句

缺点:对于整库下面所有表的对比不显示具体的表差异,只对比表是否存在。它会忽略表的注释、null or not null的差异。

基于CentOS release 6.8操作系统实验:

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中一样。


image (2).png

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:如果指定了具体表对象,那么就会详细对比两个表的差异,包括表名、字段名、备注、索引、大小写等都有的表相关的对象。

主要的参数含义:

--server1:配置server1的连接

--server2:配置server2的连接

--character-set:配置连接时用的字符集,如果不显示配置默认使用“character_set_client”

--width:配置显示的宽度

-d DIFFTYPE, --difftype:差异的信息显示的方式,有[unified|context|differ|sql](default: unified),如果使用sql那么就直接生成差异的SQL这样非常方便。

--changes-for=:例如--changes-for=server2,那么对比以sever1为主,生成的差异的修改也是针对server2的对象的修改。

--show-reverse:这个字面意思是显示相反的意思,其实是生成的差异修改里面同时会包含server2和server1的修改。

--force    失败的时候不终止退出

--skip-table-options:这个选项的意思是保持表的选项不变,即对比的差异里面不包括表名、AUTO_INCREMENT,ENGINE, CHARSET等差异。

2.2 操作演练

1、显示一个表的差异:

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

image (3).png

2、显示整库的对比加上--force,会显示出表的差异

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

image (5).png

3、显示整理的对比不加--force,不显示表的对比

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

image (6).png


3、存在问题:

对表名的对比更改有问题(原因未知)

没有加--skip-table-options但是没有显示表名对比




加了--skip-table-options:还是显示表名对比和更改的语句

image (9).png

三、navicat对比mysql表结构

navicate需要收费。navicate的表结构对比实际使用的就是结构同步的功能。只做比较的话,不要继续执行比较后的步骤。

选择 工具>结构同步> 调用比较功能



选择比较进入之后如下:

image (12).png


点击下步进入如下界面,可以对脚本进行修改后点击开始执行

image (13).png

点击开始后,执行成功如下,之后可以重新比较数据看是否一致。


image (14).png



四、dms对比表结构

dms是阿里云的客户端支持表结构的对比和生产差异修改语句,并且可以审批到目标端执行。dms实际使用的是结构同步的功能,只做比较的话,不要继续执行比较后的步骤。

旧版的dms只能支持同地域的对比,新版的可以跨地域对比。

参考文档:https://help.aliyun.com/document_detail/202275.html

image (15).png

相关文章

oracle手工完全恢复

一)基本概念1)完全恢复的步骤1)restore: OS拷贝命令还原所有或部分datafile2)recover:SQL*PLUS利用归档日志和当前的redo日志做恢复2)完全恢复可以基于三个级别re...

系统RDSCPU打满问题分析报告

系统RDSCPU打满问题分析报告

1. 问题概述在2023年9月01日09点13分,玳数运维组侧接收到业务侧反馈系统响应缓慢,与此同时运维群内新系统RDS 发出CPU打满的告警,告警通知如下: 2. 问题分析a. 数据库会话管理核查玳...

apache Hbase2.x  使用hbck2修复工具

apache Hbase2.x 使用hbck2修复工具

1、背景默认情况下apache hbase 使用hbck2时,无法使用-j 来加载hbck2的jar包,无法进行修复2、解决办法是由于默认情况下只使用自带的hbase hbck修复命令,大部分功能在2...

REPMGR-PG高可用搭建(一)

REPMGR-PG高可用搭建(一)

PG高可用对比数据库复制的术语和定义这些术语和定义应该有助于讨论复制。在与其他Postgres开发人员进行了大量讨论之后,我编译了它们,但是这些定义应该是普遍可用的,并且也应该适用于其他RDBMS。复...

企业级大数据安全架构(一)

前言1.企业级大数据平台安全隐患目前企业级大数据平台面临的一些安全隐患,只要将这些安全隐患全部解决之后才可以部署到生产环境去使用,因此安全性是大数据平台必备的能力之一。1.1缺乏统一的访问控制机制大数...

数据湖技术之iceberg(十三)Iceberg与Hudi对比

Iceberg和Hudi都是数据湖技术,从社区活跃度上来看,Iceberg有超越Hudi的趋势。他们有以下共同点:l   都是构建于存储格式之上的数据组织方式l &nbs...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。