我的理解是RDS主要使用EBS,而EBS具有很高的可用性,而从主服务器读取的从服务器也使用相同的存储,因此延迟将很小。
我可以说,如果将事务从主数据库提交到磁盘,则当从属服务器升级为主服务器时,没有数据丢失(除非整个EBS失败)或冲突的可能性吗?
答案 0 :(得分:2)
要指出的第一个事实是MySQL RDS Read Replicas使用异步复制,因此您的主实例将在执行事务处理的SQL之后复制它们。如果此RDS实例失败,则可以,您可能会丢失少量数据。
然后,只要源数据库实例发生更改,它就会使用引擎的本机异步复制来更新只读副本
升级只读副本期间应遵循的steps如下:
如果您升级RDS实例,则该实例将在此时成为独立的RDS实例,它将仅包含升级之前的事务。其他任何红色副本将保留在原始群集中。
即使主数据库恢复了,此时升级的RDS实例也属于另一个群集,此时无法撤消该操作。如果两者之间存在任何交易差异,则需要手动应用。
对于您的应用程序,主要更改是数据库DNS名称现在已更改。我建议创建或使用private route 53 hosted zone并创建一个指向原始RDS cname的CNAME记录。完成此更新后,您的应用程序将在您的专用托管区域中使用CNAME。
如果您需要提升只读副本,则只需将Route 53中的CNAME值更新为新的RDS CNAME。如果您确实使用了此功能,请记住将Route 53记录的TTL保持在低水平,以确保快速进行故障转移。
或者,如果您可以使用Multi-AZ设置,它将自动为您执行升级和故障转移。
要总结这是您对3个问题的回答