如何冻结/停止/锁定 MYSQL 数据库?然后如何使数据库恢复正常?

如何冻结/停止/锁定 MYSQL 数据库?然后如何使数据库恢复正常?

基本上,我需要停止它。(这样我就可以在没有新数据的情况下进行备份)。一切都“冻结”。

那么,我该如何启用它以便人们可以再次对其进行更改?

答案1

扩展 3dinfluence 的回答。mysqldump 将在转储表之前用读锁锁定表(这就是您说“冻结”时所要的效果)。根据您的存储引擎,UPDATES(可能还有 SELECTS)将排队等待,直到转储完成(此时它将解锁表)。

如果您想手动执行此操作,您需要的命令将是类似的(如果您不想要全局锁,请进行调整以适应)。

flush tables with read lock;

这将应用全局锁并刷新查询缓存。然后你可以使用以下命令移除锁

unlock tables;

答案2

您只需使用 mysqldump 命令即可获取正在运行的数据库的快照,而无需锁定或冻结它。

答案3

如果你的数据库存储在 lvm 上 - 使用快照功能。你可以使用自己的脚本或例如mylvm备份

如果你使用 innodb 数据库 - 你可以使用带有单事务选项的 mysqldump,或者你可以尝试备份

有了这些选项,您就不必在备份期间使数据库脱机。

相关内容