如何验证 mysql 导入是否成功完成

如何验证 mysql 导入是否成功完成

我做了一件mysql DBname < dumpFile.sql非常愚蠢的事情,我没有将进程置于后台,最终我的 ssh 会话因管道损坏而终止。如何使用转储文件验证 mysql DB 上的导入是否完成?RHEL 6,mysql 5.1.6。

答案1

检查转储文件的最后插入内容(它是文本,尾部)并查看该数据是否已进入数据库。

答案2

之一:

  • 从数据库中转储并比较新旧数据库

  • 删除数据库并重新导入数据

答案3

只需对新数据库执行 mysqldump,然后将其与旧数据库进行比较。

答案4

假设两台服务器上的 MySQL 版本匹配(或非常接近匹配)...

步骤1

从 MySQL 提示符运行CHECKSUM TABLE table_name;并查看两个地方的校验和是否匹配。

请注意,这将需要一点时间来运行并占用您的表。但是,即使有几 GB 的数据,它也应该少于一分钟左右……除非您的盒子配置有点奇怪。

http://dev.mysql.com/doc/refman/5.1/en/checksum-table.html

第2步

因为在非匹配的表上以及为了后代,校验和冲突的可能性很小,所以这是您的备份步骤。

运行(更改 your_database_name 和 your_table_name 之后)...

SELECT CONCAT(table_schema, '.', table_name) AS 'database.table',
     FORMAT(table_rows, 0) AS table_rows,
     FORMAT(data_length, 0) AS data_length,
     FORMAT(index_length, 0) AS index_length
FROM information_schema.TABLES
WHERE table_schema = 'your_database_name'
AND table_name = 'your_table_name';


如果一切都匹配,那么一切就绪了!如果不匹配,您就必须进一步深入挖掘。

索引大小不匹配可能不是问题,因为导入通常(取决于设置)会在导入时创建新索引而不会产生碎片。但是,如果索引确实不匹配,并且您想在继续之前尝试同步它们,请对源表运行 OPTIMIZE TABLE 并再次检查以查看是否能解决问题。

我还没有完全理清索引大小的一个边缘情况,仅供参考......为什么 mysqldump 导入后 MySQL MyISAM 表索引(又名 MYI 文件)的大小不匹配?

结论

对我来说,99% 的情况下,这种方法都有效,没有任何问题。需要注意的是,我主要使用 MyISAM(出于各种原因),但对于 InnoDB 来说,这种方法也应该没问题。希望对您有所帮助!


这就是你要找的答案……(挥动绝地之手)

相关内容