文档章节

mysqldiff对数据库间进行差异比较

Elvis.Xiong
 Elvis.Xiong
发布于 2016/11/10 10:41
字数 545
阅读 125
收藏 1
点赞 0
评论 0

mysqldiff对数据库间进行差异比较

  mysqldiff该工具是官方mysql-utilities工具集的一个脚本,可以用来对比不同数据库之间的表结构,或者同个数据库间的表结构 
   如果在windows下,直接下载mysql-utilities安装就可以了,然后运行后,会跑到命令行下: 

1) 基本用法 
   mysqldiff --server1=admin:123456@192.168.79.10 --server2=admin:123456@192.168.79.11 
--difftype=differ test:test 

  这样就比较两个不同库中的数据库test,假设两个库中库名都是test 
也可以比较不同的表 

mysqldiff --server1=user@host1 --server2=user@host2 testdb.table1:anotherdb.anothertable 
     就是使用库名.表名的方式就可以了 

  下面是出来的一个效果 

# mysqldiff --force --server1=root:msandbox@127.0.0.1:21489 --server2=root:msandbox@127.0.0.1:21490 employees:employees 
# WARNING: Using a password on the command line interface can be insecure. 
# server1 on 127.0.0.1: ... connected. 
# server2 on 127.0.0.1: ... connected. 
# Comparing `employees` to `employees`                             [PASS] 
# Comparing `employees`.`departments` to `employees`.`departments`   [FAIL] 
# Object definitions differ. (--changes-for=server1) 

--- `employees`.`departments` 
+++ `employees`.`departments` 
@@ -1,6 +1,6 @@ 
CREATE TABLE `departments` ( 
   `dept_no` char(4) NOT NULL, 
-  `dept_name` varchar(40) NOT NULL, 
+  `dept_name` varchar(256) DEFAULT NULL, 
   PRIMARY KEY (`dept_no`), 
   UNIQUE KEY `dept_name` (`dept_name`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 



  可以看到,默认-号代表左边要比较的server1的变化,+号代表右边server2的不同, 
如果要交换,可以使用参数: 
    –changes-for=server2 

  如果要在比较不同的时候,强行继续比较下去,要增加--force选项 

2) 可以生成差异化的SQL,因为方法1)中,只产生了不同的地方,但如为了生产考虑, 
要生成达到server2的脚本,则可以使用参数 
  --difftype=sql, 
则: 
  mysqldiff --server1=admin:123456@192.168.79.10 --server2=admin:123456@192.168.79.11 
--difftype=sql test:test 

mysqldiff的核心是使用INFORMATION_SCHEMA 
Java代码 

 收藏代码

  1. SHOW CREATE TABLE `departments`;  
  2. SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE, AUTO_INCREMENT, AVG_ROW_LENGTH, CHECKSUM, TABLE_COLLATION, TABLE_COMMENT, ROW_FORMAT, CREATE_OPTIONS  
  3.   FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'employees' AND TABLE_NAME = 'departments';  
  4. SELECT ORDINAL_POSITION, COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE,  
  5.          COLUMN_DEFAULT, EXTRA, COLUMN_COMMENT, COLUMN_KEY  
  6.   FROM INFORMATION_SCHEMA.COLUMNS  
  7.   WHERE TABLE_SCHEMA = 'employees' AND TABLE_NAME = 'departments';  
  8. SELECT PARTITION_NAME, SUBPARTITION_NAME, PARTITION_ORDINAL_POSITION,  
  9.          SUBPARTITION_ORDINAL_POSITION, PARTITION_METHOD, SUBPARTITION_METHOD,  
  10.          PARTITION_EXPRESSION, SUBPARTITION_EXPRESSION, PARTITION_DESCRIPTION  
  11.   FROM INFORMATION_SCHEMA.PARTITIONS  
  12.   WHERE TABLE_SCHEMA = 'employees' AND TABLE_NAME = 'departments';  
  13. SELECT CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_TABLE_SCHEMA,  
  14.          REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME  
  15.   FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE  
  16.   WHERE TABLE_SCHEMA = 'employees' AND TABLE_NAME = 'departments' AND  
  17.         REFERENCED_TABLE_SCHEMA IS NOT NULL;  
  18. SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE, AUTO_INCREMENT, AVG_ROW_LENGTH, CHECKSUM, TABLE_COLLATION, TABLE_COMMENT, ROW_FORMAT, CREATE_OPTIONS  
  19.   FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'employees' AND TABLE_NAME = 'departments';  
  20. SELECT ORDINAL_POSITION, COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE,  
  21.          COLUMN_DEFAULT, EXTRA, COLUMN_COMMENT, COLUMN_KEY  
  22.   FROM INFORMATION_SCHEMA.COLUMNS  
  23.   WHERE TABLE_SCHEMA = 'employees' AND TABLE_NAME = 'departments';  
  24. SELECT PARTITION_NAME, SUBPARTITION_NAME, PARTITION_ORDINAL_POSITION,  
  25.          SUBPARTITION_ORDINAL_POSITION, PARTITION_METHOD, SUBPARTITION_METHOD,  
  26.          PARTITION_EXPRESSION, SUBPARTITION_EXPRESSION, PARTITION_DESCRIPTION  
  27.   FROM INFORMATION_SCHEMA.PARTITIONS  
  28.   WHERE TABLE_SCHEMA = 'employees' AND TABLE_NAME = 'departments';  

本文转载自:

共有 人打赏支持
Elvis.Xiong
粉丝 28
博文 9
码字总数 6819
作品 0
西安
Mysql Utilities

安装Mysql Utilities mysql utilities 使用python开发,首先需要安装MySQL Connector/Python General Availability (GA) release。 2.python版本需要时2.6或者2.7.接下来安装utilities。 命令......

Zuo_W ⋅ 2016/06/07 ⋅ 0

工欲利其器: sqlyog 数据架构同步

打开sqlyog, 进入高级工具,最顶上三个功能. 主要功能是对比及同步两表的结构与数据. 数据库s 同步向导 跟 可视化数据比较向导两功能非常类似, 区别在于数据库s 同步向导有计划任务功能. 有些...

Tuesday ⋅ 2013/08/22 ⋅ 34

ClearCase四大功能详述(版本控制)

ClearCase的核心功能是版本控制,它是对在软件开发进程中一个文件或一个目录发展过程进行追踪的手段。ClearCase对所有文件系统对象(包括文件、目录和链接)增强了版本控制系统功能。可定版本...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

腾讯AI Lab提出新型损失函数LMCL:可显著增强人脸识别模型的判别能力

深度卷积神经网络 (CNN) 已经推动人脸识别实现了革命性的进展。人脸识别的核心任务包括人脸验证和人脸辨识。然而,在传统意义上的深度卷积神经网络的 softmax 代价函数的监督下,所学习的模型...

u011808673 ⋅ 05/13 ⋅ 0

方差分析中两两比较方法的选择

如果多组间比较认为总体上有统计学差异,通常还可以进一步做组间两两比较。两两比较的方法有很多,SPSS就提供了20余中,多到令人尴尬,令人不知如何选择。 两两比较.png 常用的两两比较方法 ...

StatsHuo ⋅ 2015/12/23 ⋅ 0

有哪些比较工具

当我们需要比较两个文件,图片,程序等的差异的时候,我们需要用软件在进行比较,不如太耗时间尽力。但是现今网络上有着很多种文件比较工具,大家不知道那些比较好用。下面我们就来给大家介绍...

Navicat数据库管理工具 ⋅ 2016/06/07 ⋅ 0

比较二进制工具哪家强?

二进制是计算技术中广泛采用的一种数制,用0和1两个数码来表示的数。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。 如果两份二进制文件存在差异,肉...

Navicat数据库管理工具 ⋅ 2016/05/16 ⋅ 0

ClearCase四大功能详述(Build管理)

使用ClearCase,构造软件的处理过程可以和传统的方法兼容。对于ClearCase控制的数据可以使用自制脚本或本机的make程序,但ClearCase的向上兼容建立工具clearmake和omake为构造提供了重要的特...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

mysqldump+binlog的备份与恢复

数据备份类型 按业务划分:可分为完全备份,增量备份,差异备份。 完全备份:就是对整个数据库的数据和数据结构进行备份,好处是很直观,容易被人理解。不足之处:由于每天都对系统进行完全备...

雾中花1 ⋅ 2017/12/03 ⋅ 0

SQL Server 备份简述

SQL Server支持多种不同类型的备份,但最常用的还是完整备份、差异备份和事务日志备份。至于说到底能使用哪一种备份还要参考数据库的恢复模式,如简单恢复模式就不支持事务日志备份。 完整备...

dufei ⋅ 2015/06/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Netweaver和SAP云平台的quota管理

Netweaver 以需要为一个用户上下文(User Context)能够在SAP extended memory区域中分配内存尺寸创建quota为例。 对于Dialog工作进程,使用事务码修改参数 ztta/roll_extension_dia. 对于非D...

JerryWang_SAP ⋅ 2分钟前 ⋅ 0

IDEA提示编码速度

焦点移动 将焦点冲代码编辑窗口移动到菜单栏:Alt+菜单栏带下划线字母 将焦点从工具窗口移动到代码编辑窗口 Esc或Shift+Esc 将焦点从代码编辑移动到最近使用的工具窗口 F12 模板提示 Ctrl+J...

bithup ⋅ 11分钟前 ⋅ 0

180623-SpringBoot之logback配置文件

SpringBoot配置logback 项目的日志配置属于比较常见的case了,之前接触和使用的都是Spring结合xml的方式,引入几个依赖,然后写个 logback.xml 配置文件即可,那么在SpringBoot中可以怎么做?...

小灰灰Blog ⋅ 35分钟前 ⋅ 0

冒泡排序

原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第...

人觉非常君 ⋅ 42分钟前 ⋅ 0

Vagrant setup

安装软件 brew cask install virtualboxbrew cask install vagrant 创建project mkdir -p mst/vmcd mst/vmvagrant init hashicorp/precise64vagrant up hashicorp/precise64是一个box......

遥借东风 ⋅ 59分钟前 ⋅ 0

python3.6 安装pyhook_3

我的是在win下的,忙了半天老是安装不了, pip install 也不行。 那么可以看出自己的版本是32bit 一脸懵逼 没办法 只好下载32版本的来安装 我一直以为 是 对应32 位的 。 下面是 小例子 http...

之渊 ⋅ 今天 ⋅ 0

004、location正则表达式

1、location的作用 location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。 2、location的语法 = 开头表示精确匹配 ^~...

北岩 ⋅ 今天 ⋅ 0

CentOS7 静默安装 Oracle 12c

环境 CentOS7.5 最小安装 数据库软件 linuxx64_12201_database.zip 操作系统配置 关闭 SELinux sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config 关闭防火墙 systemctl disable ......

Colben ⋅ 今天 ⋅ 0

Yii2中findAll()的正确使用姿势/返回为空的处理办法

从一次错误的操作开始 $buildingObject = Building::findAll("status=1"); 1 这个调用看着没有任何毛病,但是在使用时返回的结果却是一个空数组。再回过头来看看数据表中: 按照套路来讲,查...

dragon_tech ⋅ 今天 ⋅ 0

如何优雅的编程——C语言界面的一点小建议

我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随着时间的变化而变化。可是,如果不是直到现在把它们写在纸上,长久以...

柳猫 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部