高可用服务由 Detection、Repair、Notice 等模块组成,主要保障数据链路服务的可用性,除此之外还负责处理数据库内部的异常。
另外,RDS 还通过迁移到支持多可用区的地域和采用适当的高可用策略,提升 RDS 的高可用服务。
Detection
Detection 模块负责检测 DB Engine 的主节点和备节点是否提供了正常的服务。通过间隔为 8~10 秒的心跳信息,HA 节点可以轻易获得主节点的健康情况,结合备节点的健康情况和其它 HA 节点的心跳信息,Detection 模块可以排除网络抖动等异常引入的误判风险,在 30 秒内完成异常切换操作。
Repair
Repair 模块负责维护 DB Engine 的主节点和备节点之间的复制关系,还会修复主节点或者备节点在日常运行中出现的错误。
例如:
| 云数据引擎 | 服务优先级 | 数据复制方式 | 组合特点 |
| MySQL 5.1 | RPO | Async | 在 Master 发生故障的情况下,切换会发生在 Slave 应用完所有的 Relay Log 之后。在 Slave 发生故障的情况下,应用操作 Master 不受影响。在 Slave 恢复之后再同步 Master 上面的数据。 |
| MySQL 5.5 | RPO | Async | 在 Master 发生故障的情况下,切换会发生在 Slave 应用完所有的 Relay Log 之后。在 Slave 发生故障的情况下,应用操作 Master 不受影响。在 Slave 恢复之后再同步 Master 上面的数据。 |
| MySQL 5.5 | RTO | Semi-Sync | 在 Master 发生故障且数据复制未退化的情况下,因为数据一致性已经得到保障,RDS 将立即触发切换操作把流量导向 Slave。在 Slave 发生故障的情况下,应用操作 Master 将会出现超时,而后数据复制方式退化为异步复制方式;在 Slave 恢复并同步完 Master 上的数据之后,数据复制方式恢复为强同步。在双节点数据不一致且数据复制方式已经退化为异步复制方式的情况下,如果 Master 发生了故障,则切换会发生在 Slave 应用完所有的 Relay Log 之后。 |
| MySQL 5.6 | RPO | ASync | 在 Master 发生故障的情况下,切换会发生在 Slave 应用完所有的 Relay Log 之后。在 Slave 发生故障的情况下,应用操作 Master 不受影响。在 Slave 恢复之后再同步 Master 上面的数据。 |
| MySQL 5.6 | RTO | Semi-Sync | 在 Master 发生故障且数据复制未退化的情况下,因为数据一致性已经得到保障,RDS 将立即触发切换操作把流量导向 Slave。在 Slave 发生故障的情况下,应用操作 Master 将会出现超时,而后数据复制方式退化为异步复制方式;在 Slave 恢复并同步完 Master 上的数据之后,数据复制方式恢复为强同步。在双节点数据不一致且数据复制方式已经退化为异步复制方式的情况下,如果 Master 发生了故障,则切换会发生在 Slave 应用完所有的 Relay Log之后。 |
| MySQL 5.6 | RPO | Semi-Sync | 在 Master 发生故障且数据复制未退化的情况下,因为数据一致性已经得到保障,RDS 将立即触发切换操作把流量导向 Slave。在 Slave 发生故障的情况下,应用操作 Master 将会出现超时,而后数据复制方式退化为异步复制方式;在 Slave 重新获取到 Master 信息时(Slave 恢复或者网络故障恢复),数据复制方式恢复为强同步方式。在双节点数据不一致且 Slave 上的数据差异无法补全的情况下,如果 Master 发生了故障,则用户可以通过 API 获取 Slave 的时间点并决定何时切换以及补全数据的方法。 |
| MySQL 5.7 | X | X | 目前不支持调整 |
| SQL Server 2008 R2 | X | X | 目前不支持调整 |
| SQL Server 2012 | X | X | 目前不支持调整 |
| PostgreSQL | X | X | 目前不支持调整 |
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。