修改RDS只读副本实例类型,主从复制是否会中断或自动恢复?
RDS只读副本改实例类型后,复制会自动恢复吗?
嘿,我来给你明确这个问题的答案:当你把两个跨区域的RDS只读副本从db.t2.small改成db.t2.medium后,副本重启完成后复制会自动恢复,完全不需要手动干预,也能同步停机期间主实例产生的所有数据,不会出现异常中断的情况。
具体给你拆解下背后的逻辑和细节:
- 在副本停机修改实例类型的这段时间里,主实例的所有写入操作都会正常记录到事务日志(比如MySQL的binlog)里,不会因为副本离线就丢失数据
- 副本重启完成后,会自动尝试和主实例建立复制连接,然后检查自己当前的复制进度(通过复制位点或者GTID,取决于你用的数据库引擎和配置)
- 一旦发现自己落后于主实例,副本会自动从主实例拉取停机期间产生的所有日志文件,然后逐一应用这些日志,直到和主实例的数据完全同步
- 整个恢复过程是RDS原生内置的机制,不管是同区域还是跨区域的副本,只要主副之间的网络连通性正常(你这里跨区域的配置应该已经没问题了),就会自动完成
还有几个需要注意的小细节:
- 同步的耗时取决于副本停机期间主实例产生的日志量,如果这段时间主实例写入不多,同步会很快完成;如果写入量大,可能需要多等一会儿,但不会影响最终的一致性
- 主实例保持db.t2.small不变的操作,完全不会干扰主副本之间的复制关系,主实例全程正常运行,不会有任何停机或者性能影响
- 如果你用的是MySQL以外的引擎(比如PostgreSQL),RDS也是基于对应引擎的原生复制逻辑来恢复的,逻辑和上面一致,同样会自动恢复复制
额外提一句:这种修改实例类型的操作属于RDS的常规维护操作,AWS在设计的时候就已经考虑到了复制链路的自动恢复,所以你完全不用怕复制会永久中断。
内容的提问来源于stack exchange,提问作者Francesco Fazio
相关产品推荐
相关产品推荐

