【问题标题】:Do ec2 snapshots wait for mysql queries to finish before executing?ec2 快照在执行之前是否等待 mysql 查询完成?
【发布时间】:2012-06-20 03:46:57
【问题描述】:

我再也找不到链接了,但我记得读到过,如果在写入数据库时​​正在拍摄 ec2 快照 - 如果您从该快照创建一个 ami 并从该 ami 启动一个实例,它可能由于二进制错误而无法正确加载。是在执行 mysql 查询时拍摄 ec2 快照,还是等待查询完成,然后锁定数据库然后拍摄快照?

另外 - 什么是 mysql 应用程序的快照最佳实践?我需要在拍摄快照之前锁定我的数据库吗?

最后 - 我偶尔会获取这个数据库的 mysqldumps。当您使用 mysqldump 时,它会冻结数据库的写入,然后继续转储数据,还是在进行转储之前我需要锁定我的数据库?

【问题讨论】:

    标签: mysql amazon-ec2 amazon-web-services


    【解决方案1】:
    1. 不,当您创建快照时,您不能保证文件系统不在写入过程中。如果使用量很大,最好先冻结音量。我使用 XFS 文件系统并简单地使用 XFS freeze 来停止文件系统。 (别忘了解冻)

    2. 最佳实践是刷新 mysql 表,锁定它们,然后冻结文件系统。这样可以确保数据不会损坏。

    3. mysqldump 在确保您的数据没有损坏方面要好得多。您可以依靠 mysqldump 为您提供优质数据,而无需冻结整个世界。

    看看这个script我写信这样做。

    我通常有一个 mysql 主从设置,每天在从属设备上做一次我的 ebs 快照,我做 mysql 转储并将它们上传到 s3 的频率更高。

    【讨论】:

    • 感谢您的详尽建议。你如何去冻结文件系统?我认为 ec2 快照会自动执行此操作,所以我需要做的就是 FLUSH TABLES WITH READ LOCK,拍摄快照然后终止正在运行的进程 FLUSH TABLES WITH READ LOCK
    • 要冻结文件系统,请运行 xfs_freeze 命令(如果文件系统是 XFS),请参阅:linux.die.net/man/8/xfs_freeze
    • 但要回答您问题的另一部分,在询问您是否应该冻结文件系统时,我已经得到了故事的两面性。由于我的 EBS 卷仅由 MySQL 真正写入,并且只要我将表冻结,那么我就很好。但为了安全起见,冻结文件系统也无妨。如果您正在将日志写入此磁盘,或者 MySQL 未在其自己的卷上运行,等等,我会冻结磁盘。但是如果你确定它只是 MySQL 写入磁盘,那么你可能会很好。
    猜你喜欢
    • 2016-08-31
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    相关资源
    最近更新 更多