文档章节

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

Elvis.Xiong
 Elvis.Xiong
发布于 2016/11/10 10:41
字数 545
阅读 127
收藏 1

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
176
0
工欲利其器: sqlyog 数据架构同步

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

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

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

u011808673
05/13
0
0
SQLServer容灾备份_3_数据库容灾备份操作

一、概述 完整备份 备份数据库所有文件 差异备份 备份最近一次完成备份后增加的所有内容 二、操作 1-1 新建维护计划(在A(生产)服务器进行设置) 路径:数据库 -> 【管理】 -> 【维护计划】 ...

玖湖弋
08/22
0
0
ClearCase四大功能详述(版本控制)

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

晨曦之光
2012/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
今天
1
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部