如何比较每个表和行的mysql数据库?

时间:2016-05-20 00:53:06

标签: php mysql database nginx

我的webapp在私有虚拟机上运行,​​我刚从数据中心的严重系统故障中恢复过来,因此mysql服务一直在崩溃,直到我决定转移到最后一个备份虚拟机映像。它需要两天(所以在最近两天系统不稳定)总之,有没有办法比较每个表和两个Mysql数据库的每一行? (相同的结构)。 我在系统故障之前以及在移动到最后一个备份VM映像之前的数据库备份。 供参考: 时间间隔(失败前和恢复后)aprox。 52小时。  Ubuntu 14.04,Nginx,php和Mysql

2 个答案:

答案 0 :(得分:0)

我认为您想使用校验和。 看看它的MySQL参考。 https://dev.mysql.com/doc/refman/5.7/en/checksum-table.html 祝你好运

答案 1 :(得分:0)

mysql-utilities中的mysqldiff和mysqldbcompare可能有帮助;

data_check或structure_check可能需要很长时间; 通过

安装mysql-utilities
apt-get install mysql-utilities 

或yum;

像这样使用mysqldiff

mysqldiff --server1=<user>:<pwd>@<ip> --server2=<user>:<pwd>@<ip> --difftype=unified <dbname in server1>:<dbname in server1>

结果是这样的 enter image description here

mysql.gtid_executed在server1和server2中有所不同,差异显示在底部;

比较数据,使用mysqldbcompare;

mysqldbcompare --server1=<user>:<pwd>@<ip> --server2=<user>:<pwd>@<ip> --difftype=unified <dbname in server1>:<dbname in server1>

结果是这样的 enter image description here