快乐学习
前程无忧、中华英才非你莫属!

mysqldiff对比主从表结构是否一致

 
 
mysqldiff该工具是官方mysql-utilities工具集的一个脚本,可以实现主从服务器表结构是否一致。数据校验需要使用Percona的pt-table-checksum工具。

安装:

1
2
3
# tar zxvf mysql-utilities-1.5.4.tar.gz
# cd mysql-utilities-1.5.4
# python setup.py install

使用方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysqldiff --server1=admin:123456@192.168.79.10 --server2=admin:123456@192.168.79.11 
--difftype=differ test:test
# WARNING: Using a password on the command line interface can be insecure.
# server1 on 192.168.79.10: ... connected.
# server2 on 192.168.79.11: ... connected.
# Comparing `test` to `test`                                       [PASS]
# Comparing `test`.`t1` to `test`.`t1`                             [FAIL]
# Object definitions differ. (--changes-for=server1)
#
  CREATE TABLE `t1` (
    `id` int(11) DEFAULT NULL,
-   `name` char(4) DEFAULT NULL
?               ^
+   `name` char(16) DEFAULT NULL
?               ^^
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
Compare failed. One or more differences found.

很直观的找出不一样的地方。

如果你想打印出修改表结构的语句,如下:

1
2
3
4
5
6
7
8
9
10
11
12
# mysqldiff --server1=admin:123456@192.168.79.10 --server2=admin:123456@192.168.79.11 
--difftype=sql test:test
# WARNING: Using a password on the command line interface can be insecure.
# server1 on 192.168.79.10: ... connected.
# server2 on 192.168.79.11: ... connected.
# Comparing `test` to `test`                                       [PASS]
# Comparing `test`.`t1` to `test`.`t1`                             [FAIL]
# Transformation for --changes-for=server1:
#
ALTER TABLE `test`.`t1` 
  CHANGE COLUMN name name char(16) NULL;
Compare failed. One or more differences found.

本文出自 “贺春旸的技术专栏” 博客,请务必保留此出处http://hcymysql.blog.51cto.com/5223301/1633831
打赏

未经允许不得转载:同乐学堂 » mysqldiff对比主从表结构是否一致

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

特别的技术,给特别的你!

联系QQ:1071235258QQ群:226134712
error: Sorry,暂时内容不可复制!