灾备方案介绍

云数据库 Tair(兼容 Redis)作为高性能的Key-Value数据库,在业务场景中往往承载着大量的重要数据,为保障数据安全性,云数据库 Tair(兼容 Redis)提供了多种灾备方案供您选择。

容灾架构演进

当实例因不可预料的原因(例如设备故障、机房断电等)发生故障,容灾机制可用于保障数据的一致性和业务可用性。

图 1. 容灾架构演进

image

灾备方案

灾备级别

说明

单可用区高可用方案

★★★☆☆

主备节点部署在同一可用区中的不同机器上,当任一节点发生故障时,由高可用HA(High Availability)系统自动执行故障切换,避免单点故障引起的服务中断。

同城容灾方案

★★★★☆

主备节点分别部署在同一地域下两个不同的可用区,当任一可用区因电力、网络等不可抗因素失去通信时,高可用HA系统将执行故障切换,确保整个实例的持续可用。

跨地域容灾方案

★★★★★

由多个子实例构成全球多活实例,所有子实例通过同步通道保持实时数据同步,由通道管理器负责子实例的健康状态监测、主备切换等等异常事件的处理,适用于异地灾备、异地多活、应用就近访问、分摊负载等场景。

单可用区高可用方案

实例全架构(不含单副本版)均支持单机房高可用架构。由高可用HA(High Availability)系统监控主备节点的健康状态并自动执行故障切换,避免单点故障引起的服务中断。

部署架构

说明

标准架构(双副本)

图 2. 标准版-双副本高可用架构

image

标准架构(双副本)实例采用双机主从(Master-Replica)架构,高可用HA模块侦测到主节点故障时,会自动进行主从切换,将Replica提升为Master,而原来的Master恢复连接后会成为新的Replica。

集群架构(多副本)

图 3. 集群版-多副本高可用架构

image

集群架构(多副本)实例中的数据分片用于承载数据,每个数据分片均为多副本(分别部署在不同机器上)高可用架构,主节点发生故障后,系统会自动进行主备切换保证服务高可用。

读写分离架构

图 4. 读写分离版高可用架构

image
  • 自动监控各节点的健康状态,异常时发起主备切换或重搭只读节点,并更新相应的路由及权重信息。

  • Proxy会实时探测只读节点的状态,当出现下述情况时,Proxy会执行流量管控动作:

    • 只读节点处于异常状态:Proxy会降低该节点的服务权重,如果多次无法连接该节点,Proxy会停止该节点的服务(即不再将流量转发至该节点),待该异常被修复后重新启用该节点。

    • 只读节点处于全量同步状态:Proxy会暂时停止该节点的服务,直到该节点完成全量同步。

同城容灾方案

云数据库 Tair(兼容 Redis)提供跨双机房的同城容灾架构。如果业务为单一地域部署,且对容灾要求较高,可在创建实例时,选择支持同城容灾的可用区(即多可用区)。操作方法,请参见创建实例

图 5. 创建同城容灾实例创建同城容灾实例

完成创建后,备机房将创建与主机房相同规格的Replica实例,主备机房的实例数据通过专门的复制通道同步。

当主机房出现电力或网络问题时,Replica实例将升级为Master实例,系统调用Config Server接口为Proxy更新路由信息。同时,云数据库 Tair(兼容 Redis)优化了Redis的同步机制,在同步位点上借鉴MySQL的GTID,实现了全局Opid,查找Opid的操作通过后台线程无锁进行,发送AOF binlog是异步同步的过程(可限流),保障了Redis服务的性能。

图 6. 同城容灾实例的数据同步过程

跨地域容灾方案

随着业务的快速发展,在业务分布较广时,如果还采用跨地域远距离访问的架构,将导致访问的延迟大,影响用户体验。借助阿里云的Tair全球多活(分布式缓存)功能,可帮助您解决业务因跨地域访问导致延迟大的问题,全球多活功能具有如下优势:

  • 可直接创建或指定需要同步的子实例,无需通过业务自身的冗余设计来实现,极大降低业务设计的复杂度,让您专注于上层业务的开发。

  • 可提供跨域复制(Geo-replication)能力,快速实现数据异地灾备和多活。

该功能可应用于跨地域数据同步场景及多媒体、游戏、电商等行业的全球化业务部署等场景。更多介绍,请参见全球多活

图 7. Tair全球多活架构全球多活架构

如何应对故障

故障(例如设备故障、机房断电、自然灾害等)通常可分为主节点故障或可用区级别故障,虽然发生概率较低,但故障可能会导致实例一段时间无法写入、闪断,甚至会造成实例停机或数据丢失(实例的可靠性还与架构息息相关,通常集群架构的可靠性更高)。为了尽可能地降低故障带来的影响,多副本、多可用区实例会在故障时自动执行切换,这会最大限度地缩短停机时间。下文向您介绍不同灾备方案的实例如何应对故障。

应对节点故障

当主节点发生故障时:

  • 若实例为单可用区多副本节点(例如具备主、备节点):系统会在发生节点故障时自动执行故障切换,选取复制延迟最小的备节点成为新的主节点,并更新路由关系。

  • 若实例为单可用区单副本节点:系统会在发生节点故障时创建一个全新的节点,原实例数据会丢失。

  • 若实例为多可用区:系统会在发生节点故障时自动执行故障切换,选取另一可用区的备节点成为新的主节点,并更新路由关系。但此时可能产生实例与其他业务跨机房访问的情况。

    说明

    在多可用区集群架构中,当主、备可用区都存在备节点时,主备切换会优先选择主可用区的备节点进行切换,避免业务跨可用区访问。

应对可用区故障

当发生可用区故障(例如断电、火灾等,造成整个机房不可用)时:

  • 若实例为单可用区部署:实例整体不可用,需要等待该可用区恢复,此时,您可以通过历史的备份数据在其他可用区创建新实例。

  • 若实例为多可用区部署:会触发自动切换。

重要
  • 从安全性来说,选择多可用区、并在每个可用区创建多个副本可以尽可能地减少停机时间,但您需要在发生故障的概率、业务数据的重要性、成本之间作出选择。

  • 全球多活的子实例也适用上述原则,但单个子实例故障时不会影响其他子实例的可用性。推荐全球多活的子实例为多可用区部署,避免因单个子实例故障而导致数据写入失败。