![如何测试mysql数据库和记录是否已经正确迁移到服务器?](https://linux22.com/image/612703/%E5%A6%82%E4%BD%95%E6%B5%8B%E8%AF%95mysql%E6%95%B0%E6%8D%AE%E5%BA%93%E5%92%8C%E8%AE%B0%E5%BD%95%E6%98%AF%E5%90%A6%E5%B7%B2%E7%BB%8F%E6%AD%A3%E7%A1%AE%E8%BF%81%E7%A7%BB%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%9F.png)
我必须将数据库移至新服务器。我从服务器 A 执行数据库的 mysqldump 并将其导入服务器 B。然后我从服务器 B 执行转储,并通过 bash 上的 diff 将其与服务器 A 的转储进行比较。此操作失败,有些行不匹配,尽管手动检查显示没有涉及任何数据行。两台服务器运行的 mysql 5.0.x 版本略有不同。
使用的mysqldump命令:
mysqldump -u user -p mydb > mydbA.sql
经过一番研究后,我使用 bash 上的工具完成了以下操作:
- 旧服务器 A 上的 mysqldump ,完整转储和仅数据转储。
- 在新服务器 B 上创建数据库并从 A 导入完整转储。
- 然后仅从服务器 B 转储数据。
- 对数据转储 A 和数据转储 B 进行差异比较。
- 应以 0 退出 - 来自 echo $?
- MD5 也给出相同的哈希值。
两个服务器运行的 mysql 5.0.x 版本略有不同。
“全部”转储
mysqldump -u user -p mydb > mydbFULL.sql
仅数据转储
mysqldump --no-create-info --skip-opt --skip-comments --skip-extended-insert --compact -u user -p mydb > mydbDATAonly.sql
答案1
您可能需要查看 Percona Toolkit for MySQL。pt-table-checksum 工具将针对每个表运行校验和。虽然这是为 MySQL 复制设计的,但我认为您也可以使用它来比较迁移的数据。