导入大型 mysql 数据库时出现问题

导入大型 mysql 数据库时出现问题

所以我有一个 100gb 的 mysql 数据库转储。我需要从中提取一些表,以便将它们导入到备用数据库中。目前,我已尝试将其导入临时 mysql 实例,但在尝试导入特定表时失败,提示不存在。我不知道数据库存在任何问题,所以我能想到的主要差异是我要导入的 mysql 版本与主数据库(转储来自的主数据库)上运行的 mysql 版本不同。有没有人听说过出现此类症状的差异?这是否也可能是数据库损坏的迹象?

我仍然需要表格,所以我考虑对文件进行一些手动更改,但 vim 在编辑 100gb 文本文件时确实很吃力。然后我考虑只 grep 查找“CREATE TABLE 'X'”,但如果表格创建和导入过程发生在多行上,我的 grep 输出将不会包含所有数据。

我想我需要尝试找到一个完全相同的 mysql 版本来安装并从源代码安装它(我想这是可能的),以排除这个问题,但话又说回来,这只是一个盲目的尝试。我仍然很困惑如何转储一个正在工作的数据库,并在尝试导入时注意到表不存在。任何建议都值得赞赏。

答案1

假设您正在恢复到更新MySQL 版本,您的数据库转储可能已损坏/损坏/无效。对于未来,这就是你这样做的原因测试恢复定期检查所有备份 - 无法恢复的备份毫无价值。
希望这不会成为您痛苦的教训,并且您可以在以后的工作流程中实施恢复测试。

(如果您尝试恢复到较旧MySQL 版本 - 不行。存在相当大的不兼容可能性,因为旧版本可能缺少转储中使用的功能。)


就目前的情况来说:

我当时想只是搜索“CREATE TABLE 'X'”,

这听起来确实是一个好主意(假设您正在使用文本转储)——确定该表是否实际上是由您的转储创建的。

但是如果表创建和导入过程发生在多行上,那么我的 grep 的输出将不会包含所有数据。

只要你告诉它,它就会这么做。阅读手册页grep,并特别注意-A和选项(控制 grep 在匹配行之后和之前-B打印多少上下文)。AB

相关内容