uda*_*ran 2 mysql replication amazon-ec2 master-slave
我在EBS卷上设置了一个带有MySQL的EC2实例,并设置了另一个充当Slave for Replication的实例.复制设置很好.我的问题是拍摄这些卷的快照.我注意到需要为快照过程锁定表,这可能会给用户带来不便.因此,我的想法是单独保留Master实例并拍摄作为slave的实例的快照.这是一个好主意吗?是否有人有类似的设置,并能以正确的方式指导我?
此外,拍摄从属实例的快照需要锁定表.这是否意味着复制会破裂?
提前致谢.
虽然在启动快照时锁定数据库并冻结文件系统是个好主意,但启动快照的实际API调用只需几分之一秒,因此您的数据库和文件系统不会被锁定/冻结很长时间.
也就是说,还有一些其他考虑因素没有提及:
当您尝试在数据库上创建锁时,可能需要等待其他语句在授予锁之前完成.在此期间,您的挂起锁定可能会进一步声明,直到您获得并释放锁定.这可能会导致生产数据库上的语句流中断.
在您开始创建快照之后,您的应用程序/数据库可以自由地使用卷上的文件系统,但是如果您有大量写入,则可能会遇到很高的iowait,有时足以导致应用程序显着减慢.原因是后台快照进程需要先将块复制到S3,然后才允许在活动卷上写入该块.
我通过请求锁定来解决第一个问题,如果没有快速授予,则超时.然后我等一下,继续重试,直到我拿到锁.对于不同的数据库负载,适当的超时和重试延迟可能会有所不同.
正如您所建议的那样,我通过在从站而不是主站上执行频繁,一致的快照来解决第二个问题.我仍然建议只是为了提高其固有的持久性(深度EBS属性)而对主服务器执行偶尔的快照,但是这些快照不需要通过锁定或冻结来执行,因为您不打算将它们用于备份.
我还建议使用支持刷新和冻结(XFS)的文件系统.否则,您正在快照MySQL中的锁定表,这些表可能尚未在EBS卷上拥有所有块,或者文件系统的其他部分可能在快照中被修改和不一致.
如果您有兴趣,我已经发布了开源软件,该软件执行我收集的与使用MySQL和XFS(两者都是可选的)创建一致的EBS快照相关的最佳实践.
要回答上一个问题,锁定主表中的表不会破坏复制.在我的快照软件中,我还使用读锁定刷新表,以确保所有内容都在正在快照的磁盘上,并添加关键字"LOCAL",以便刷新不会复制到任何潜在的从站.
归档时间: |
|
查看次数: |
1411 次 |
最近记录: |