1

我有一个关于备份多个 MySQL innodb 数据库的问题,这些数据库彼此之间具有跨数据库关系。一个问题是数据库备份和恢复期间数据的关系完整性。

这种情况的用例是一个“主”数据库用于保存顶级数据,例如无法合并到一个数据库中的多个单独域的用户信息。设置这个不是问题,因为 MySQL 允许与 innodb 外键的跨数据库关系。

但是,如何在备份期间不破坏外键的情况下正确备份主数据库和辅助数据库(假设它们在同一台服务器上)。

我正在寻找一种方法来了解如何在那个瞬间及时捕获这些数据库的“快照”,或者如果在备份期间无法保留关系...

4

1 回答 1

1

我希望我能正确理解这个问题。

假设您有两个数据库(db1 和 db2),其中来自 db2 中一个或多个表的外键约束引用了 db1 中的某些内容。

如果您想在进行备份时确保一切都在时间点一致,您可以让mysqldump为您完成。每当您运行 mysqldump 时,您都会发出如下--single-transaction选项:

mysqldump -u... -p... --single-transaction --databases db1 db2 > db1_db2.sql

创建了一个内部检查点,以便 db1 和 db2 在引用完整性和时间点方面保持一致,即使在备份期间将数据输入到 db1 和 db2 中也是如此。

在恢复 mysqldump 期间,禁用外键以允许干净、快速的重新加载重新加载。如果且仅当使用该--single-transaction选项创建 mysqldump 时,您可以信任在还原期间禁用的外键。

于 2012-06-15T19:40:20.300 回答