我在 EBS 卷上设置了一个带有 MySQL 的 EC2 实例,并设置了另一个充当复制从属实例。复制设置很好。我的问题是关于拍摄这些卷的快照。我注意到快照过程需要锁定表,这可能会给用户带来不便。因此,我的想法是保留主实例并拍摄作为从实例的快照。这是一个好主意吗?有没有人有类似的设置并且可以以正确的方式指导我?
此外,拍摄从属实例的快照需要锁定表。这是否意味着复制将会中断?
提前致谢。
尽管在启动快照时锁定数据库并冻结文件系统是一个好主意,但启动快照的实际 API 调用只需要几分之一秒的时间,因此您的数据库和文件系统不会长时间锁定/冻结。
也就是说,还有一些您没有提到的其他考虑因素:
当您尝试在数据库上创建锁时,可能需要等待其他语句完成才能授予锁。在此期间,您的挂起锁可能会进一步执行语句等待,直到您获取并释放该锁。这可能会导致生产数据库上的语句流中断。
启动快照创建后,您的应用程序/数据库可以自由使用卷上的文件系统,但如果您有大量写入,则可能会遇到高 iowait,有时足以导致应用程序明显减慢。原因是后台快照进程需要将块复制到 S3,然后才允许写入活动卷上的该块。
我通过请求锁定并在未快速授予锁定时超时来解决第一个问题。然后我稍等一下并继续重试,直到获得锁。对于不同的数据库负载,适当的超时和重试延迟可能会有所不同。
正如您所建议的那样,我通过在从属服务器而不是主服务器上执行频繁、一致的快照来解决第二个问题。我仍然建议偶尔对主服务器执行快照,只是为了提高其内在持久性(深层 EBS 属性),但这些快照不需要通过锁定或冻结来执行,因为您不打算将它们用于备份。
我还建议使用支持刷新和冻结 (XFS) 的文件系统。否则,您正在对 MySQL 中的锁定表进行快照,这些表可能尚未将所有块都存储在 EBS 卷上,或者文件系统的其他部分可能会被修改并且在快照中不一致。
如果您有兴趣,我已经发布了开源软件,该软件执行我收集的与使用 MySQL 和 XFS(均为可选)创建一致的 EBS 快照相关的最佳实践。
http://alestic.com/2009/09/ec2-consistent-snapshot http://alestic.com/2009/09/ec2-consistent-snapshot
为了回答你的最后一个问题,锁定主服务器中的表不会中断复制。在我的快照软件中,我还使用读锁刷新表,以确保所有内容都在正在快照的磁盘上,并且我添加关键字“LOCAL”,以便刷新不会复制到任何潜在的从属设备。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)