24

【数据库】全方位解析云数据库Redis灾备简介!

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI0NTE4NjA0OQ%3D%3D&%3Bmid=2658363381&%3Bidx=2&%3Bsn=a6dc82f9c43c33d6354b1ddc0c7dccf7
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

数据是很多业务的核心元素,作为数据载体的数据库承担着举足轻重的责任。云数据库Redis版作为高性能的Key-Value数据库,在业务场景中往往承载着大量的重要数据。本文将全方位地为您解析云数据库Redis版的灾备机制。

云数据库Redis版容灾架构演进

程序在运行过程中总会遇到各种各样的问题,例如程序BUG、设备故障、机房断电等,理想的容灾机制能够在这些问题发生时,保证数据的一致性和业务可用性。云数据库Redis版为了保证业务的高可用,不断提升容灾能力,为不同的业务场景提供相应的高可用方案。

下图反映了云数据库Redis版容灾架构的演进历史。

图 1.  Redis容灾架构演进
qyeQ3uU.png!web

当前三种方案同时存在,您可以根据业务需求选择合适的方案。下文将对各方案进行详细介绍。

单可用区高可用机制

Redis全架构均支持单机房HA高可用架构。HA监控系统采用独立的平台化架构,提供跨可用区的高可用机制,使云数据库Redis版比自建Redis更稳定。

标准版-双副本

标准版-双副本实例采用双机主从(Master-Replica)架构,高可用HA模块侦测到主节点故障时,会自动进行主从切换,将Replica提升为Master,而原来的Master恢复连接后会成为新的Replica。实例默认开启数据持久化功能,支持数据自动备份,您可以使用备份文件回滚实例或者克隆实例,有效地解决误操作问题并实现可靠的灾备。

图 2.  标准版-双副本高可用架构
3Y3Yzuq.png!web

集群版-双副本

集群版-双副本实例由配置服务器、代理服务器和分片服务器组成:

  • 配置服务器(Config Server)是用于提供全局路由信息和配置信息的集群管理工具,采用遵循Raft协议的三副本集群架构;

  • 代理服务器(Proxy Server)为单节点架构,集群版结构中会有多个Proxy,系统自动对所有Proxy进行负载均衡及故障转移;

  • 分片服务器(Shard Server)同样采用双副本高可用架构,与标准版-双副本实例相同,主节点故障之后,HA模块会自动进行主从切换保证服务高可用,并更新Proxy Server和Config Server的信息。

图 3.  集群版-双副本高可用架构
IzU7beY.png!web

读写分离版

读写分离版实例由代理服务器、主从架构的读写节点以及若干只读副本(Read-Only Replica)构成。

  • 高可用HA模块实时监测各节点的状态,在读写节点的主节点发生故障时发起主从切换,同时将只读节点连接到新的主节点上来;

  • 当只读节点发生故障时, HA模块将重建只读节点,并更新相应的路由及权重信息。

  • Proxy实时监控只读节点的服务状态,当发现某个只读节点状态异常时会降低该节点的权重。如果只读节点多次连接失败,Proxy将停止该节点的服务,直至其恢复正常。

图 4.  读写分离版高可用架构
vmqaq2V.png!web

同城容灾机制

Redis标准版和集群版提供跨双机房的同城容灾架构。如果业务为单一地域部署,且对容灾要求较高,可在创建云数据库 Redis版实例时,选择支持同城容灾的可用区,如下图中的 华东1多可用区(B+F)华东1多可用区(G+H)

图 5.  创建同城容灾实例
iQ7bYvU.png!web

创建多可用区实例时,备机房将创建与主机房相同规格的Replica实例,主备机房的实例数据通过专门的复制通道同步。

当主机房出现电力或网络问题时,Replica实例将升级为Master实例,系统调用Config Server接口为Proxy更新路由信息。底层网络根据路由精细度实现故障切换,主机房网段的精细度高,因此在正常情况下,数据会直接传输到主机房的实例;当主机房出现故障时,不会上传路由明细信息,此时骨干网中只存在备机房的精细度较低的大网段路由信息,系统就会自动把请求路由到备机房,从而实现故障切换。

云数据库Redis版优化了Redis的同步机制,在同步位点上借鉴MySQL的GTID,实现了全局OpID,并且查找OpID的操作通过后台线程无锁进行。同时,发送AOF binlog是异步同步的过程,可以限流,保障了Redis服务的性能。

图 6.  同城容灾实例的数据同步过程
RRNVJrR.png!web

跨地域容灾

云数据库Redis版提供了全球范围的异地多活服务,即Redis全球多活,适用于需要在多地域同步部署的业务场景,与传统的灾备方案最大的区别在于多活。异地多活架构使业务能够在多个地域同时进行,各地域中的全球多活子实例实时双向同步。

说明 Redis全球多活当前仅对部分测试用户开放。

Redis全球多活实例由多活子实例、同步通道以及通道管理器构成。

  • 多活子实例是基本服务单元,所有子实例均可读写;

  • 同步通道支持子实例间的实时双向同步,以及容忍度达到天级别的断点续传;

  • 通道管理器管理同步通道的生命周期,同时处理子实例在故障时的主从切换以及备份重搭,保证多活实例的高可用。

图 7.  全球多活同步架构
fYjQvyB.png!web

说明 子实例间通过异步复制进行同步,不影响Redis的服务性能。

使用Redis全球多活架构时,可在业务端设置切换条件,使得业务流量在某一地域出现问题时切换到另一地域的子实例上,保证业务的可用性。

Redis全球多活实例的创建方法请参见创建多活实例。

云数据库Redis版提供了实例级别、可用区级别、地域级别的多种高可用架构,请根据业务需要选择合适的灾备方案。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK