如何使用mysql实用程序比较两个大型数据库

时间:2018-05-30 13:31:15

标签: mysql mysqldbcompare

我有两个数据库服务器,这些服务器在Master to Master复制过程中被复制。由于某些原因,复制停止了。现在我想在两台服务器上比较相同的数据库,EXAMPLE以获得数据一致性。但问题是数据库有一个非常大的表。该表有60百万行。 mysql数据大小为10GB左右。我曾尝试使用MySQL实用程序的 mysqldbcompare 命令。这种工具在低数据量下运行良好。但在这种情况下,一小时后连接最终会被MySQL实用程序删除。

任何人都可以帮我解决这个问题吗?有没有人分析过大量的MySQL数据并有任何经验?

请告诉我最好的开始方式。我应该使用哪些工具以及如何使用它,因为我需要在非常短的时间内完成这项工作。

1 个答案:

答案 0 :(得分:0)

下面的脚本应该可以解决您的比较问题。它divide and conquer algorithm,我在这里申请。此代码适用于Windows,轻微更改适用于任何其他操作系统。

基本上,在这里,您的数据将按表格导出一个文件,然后逐个文件即按表格进行比较。这将减少数据大小。

mysql -h master-database -u masteruser -pmasteruser_Password masterdatabase --skip-column-names --execute='SHOW TABLES;' > tables.tmp
echo "Start!"
 while read p; do
  echo "Exporting Master" $p
  mysqldump -h master-database -u masteruser -pmasteruser_Password master_database $p > master_$p.sql
  echo "Exporting Slave" $p
  mysqldump -h slave-database -u slaveuser -pslaveuser_Password slave_database $p > slave_$p.sql
  echo "Doing Diff"
  ##I'm less familiar with this, but I believe it should work.
  mysqldiff master_$p.sql slave_$p.sql > diff_$p.sql
 done <tables.tmp

 rm tables.tmp

我希望这可以解决你的问题。