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

rfbsl7qr  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(315)

我有两个数据库服务器,它们是在主到主复制过程中复制的。由于某些原因,复制被停止。现在我要比较同一个数据库,例如在两个服务器上的数据一致性。但问题是数据库有一个非常大的表。这个表有六千万行。mysql的数据大小大约是10gb。我尝试过使用mysql实用程序的mysqldbcompare命令。这个工具在低数据量下工作得很好。但在这种情况下,一小时后连接最终会被mysql实用程序中断。
有人能帮我解决这个问题吗?有没有人分析过大量的mysql数据,有没有经验?
请告诉我最好的开始方式。我应该使用什么工具以及如何使用这些工具,因为我需要在很少的时间内完成这项工作。

6l7fqoea

6l7fqoea1#

下面的脚本应该可以解决您的比较问题。它 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

我希望这能解决你的问题。

相关问题