我有两个数据库服务器,这些服务器在Master to Master复制过程中被复制。由于某些原因,复制停止了。现在我想在两台服务器上比较相同的数据库,EXAMPLE以获得数据一致性。但问题是数据库有一个非常大的表。该表有60百万行。 mysql数据大小为10GB左右。我曾尝试使用MySQL实用程序的 mysqldbcompare 命令。这种工具在低数据量下运行良好。但在这种情况下,一小时后连接最终会被MySQL实用程序删除。
任何人都可以帮我解决这个问题吗?有没有人分析过大量的MySQL数据并有任何经验?
请告诉我最好的开始方式。我应该使用哪些工具以及如何使用它,因为我需要在非常短的时间内完成这项工作。
答案 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
我希望这可以解决你的问题。