亚马逊RDS备份/快照实际上是如何工作的?

105

我是一个Amazon RDS的客户,每天遇到Amazon RDS写入延迟峰值,大致对应备份窗口期。在快照结束时也会看到延迟峰值(例如:运行快照需要约1小时,在最后5分钟内,出现写入延迟峰值)。我正在运行一个多AZ m1.large部署。

有人能够解释一下Amazon RDS备份 实际上 是如何工作的吗?我已经阅读了Amazon RDS文档,据我所知,Amazon RDS没有按规范行事。具体来说,这些备份/快照操作应该命中我的副本数据库,因此不会导致任何停机/性能问题,至少我是这么认为的。

我可以把我的问题归结为六个问题:

  • 在快照和备份期间技术上发生了什么,它们之间有什么不同?(如果您回答这个问题,请告诉我您是否能够通过实证确认您的答案,或者是否只是引用文档)。
  • 在多AZ部署中备份窗口期间会出现写入延迟峰值吗?
  • 在多AZ部署中快照结束时会出现写入延迟峰值吗?
  • 如果我不是多AZ的话,我的写入延迟峰值会更高吗?
  • 从架构上来看,如果我在两个m1.large EC2实例上运行自己的数据库,能否避免这些写入延迟峰值?
  • 是否有任何配置可以避免这些写入延迟峰值,同时仍然使用RDS托管我的数据库,还是我只能受制于Amazon?

附加问题:您在哪里以及如何托管您的MySQL数据库?

总体而言,除了这些每日的写入延迟问题,我对RDS非常满意。我喜欢内置的数据库监控功能,它相当简单易用。

谢谢!

amazon RDS 写入延迟

2个回答

83

除了我们自己管理的一些机器上的MySQL,我们还运行几个RDS实例。我不是Amazon工程师,无法具体评论,但我学到了几件事情,可以解释你所看到的:

  • 虽然Amazon没有100%分享后端细节,但我们强烈怀疑他们正在使用他们的EBS系统来支持RDS数据库。

  • 这篇文章帮助解释了EBS的限制和快照功能http://blog.rightscale.com/2008/08/20/amazon-ebs-explained/ 再次强调,虽然它没有明确说明,但Amazon使用这种基础设施来提供RDS服务是有意义的。

  • 通常,与快照相比,MySQL备份涉及使用像mysqldump这样的工具创建SQL语句文件,该文件将复制数据库。进行此操作时不需要冻结数据库。对于EBS后端,最佳实践是在拍摄快照时冻结数据库(暂停所有交易),以避免数据损坏。

  • 备份窗口结束时出现的峰值。如果Amazon在复制品的快照期间暂停复制,则在快照完成后,复制品需要“赶上”交易。这将导致延迟峰值。

  • 跨多个可用区部署的复制本 inherently 比单个可用区部署慢。更好的冗余性所付出的代价。


8
我可以确认,Amazon RDS正在使用EBS作为其RDS数据库的后备存储。RDS Cloudwatch中的读取延迟和写入延迟图表有效地描述了一个EBS实例。谢谢你的答案,这很有道理。 - esilver
1
亚马逊在其事故事后报告中分享了更多细节,详情请参阅此处:http://aws.amazon.com/message/65648/ - Joshua
@Joshua,你对这个(有点相关的)话题有什么想法吗?https://dev59.com/oGw15IYBdhLWcg3wJ4YR 谢谢! - esilver
如果使用读副本,那会影响主副本吗? - Matej
1
AWS文档现在指出:“在单可用区数据库实例的自动备份和DB快照操作期间,通常会发生短暂的I/O冻结,持续几秒钟。” http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.BackingUpAndRestoringAmazonRDSInstances.html - baxang
显示剩余2条评论

8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接