故障原因
- 可用区中断
- 主数据库实例故障
- 更改数据库实例服务器类型
- 数据库实例的操作系统在进行软件修补
- 数据库实例的手动故障转移是使用 Reboot with failover 启动的。
Amazon RDS 单可用区故障恢复
无论是主数据库实例故障, 还是从数据库实例故障, 此时均为 EC2 启动并替换的时间, 一般需要 5-10 分钟.
Amazon RDS 多可用区故障恢复
只读实例也可以单独配置多可用区.
此时会进行故障迁移, 一般需要 60-120秒.
Aurroa Mysql 故障
写入器故障
此时会进行故障迁移, 一般在30 秒内完成
读取器故障
读取器需要进行硬件替换, 一般读取器实例故障耗时需要 5-10 分钟来恢复, 也就是启动 EC2 实例的时间.
读取器实例时无法配置多可用区.
关于 Aurora Mysql 读取器实例故障恢复时间过久解法
解法一: reader endpoint
- 业务方使用reader endpoint, 且reader 节点的机器都是一样的, 有利于load balance. 如果极端情况下所有的reader node都挂了, reader endpoint可以利用上writer node, 这样就可以实时保障高可用了
- 减少 DNS 缓存超时, 将 Java DNS TTL 设置为较小的值有助于在后续连接尝试时在读取节点之间进行循环切换. 一般建议小于等于60s.
解法二: rds proxy
参见: https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/rds-proxy.html#rds-proxy-failover