#HA

YashanDB的HA(High Availability)架构提供高可用相关的基础能力。

主备复制是数据库最主要的高可用手段,通过将主机上的数据实时复制到备机来实现。主机是执行业务的数据库实例,备机是复制主机数据的数据库实例。当主机发生故障的时候,业务可以转移到备机上继续执行,降低故障对业务的影响,提高数据库的可用性。

# 高可用部署

YashanDB支持主备模式(一主多备)和级联备模式(不限层级)的高可用部署架构。

主备实例部署在不同的主机上,两台主机一般应连接到同一交换机,确保网络低时延,并应考虑交换机的冗余配置,保证高可用避免单点故障。

级联备为异步备机,从备机接收日志,减少主机上的带宽负载,通常用于异地容灾中。

以下图为例:

主机

当前提供在线数据库服务,读写模式。

备机

从主机接收日志并回放,只读模式,主机故障时从备机状态切换为主机状态,一台主机可以多台备机。

级联备

备机的备机,从备机接收日志并回放,一台备机可以多台和多层级联备。当上级备机升为主机后,级联备转为普通备机;当主机变成备机后,它的备机变成级联备。

# 主备复制链路

主备复制中,通过主机发送redo日志,备机接收日志并回放,以实现备机和主机的在线同步。YashanDB采用环形Log Cache缓存redo日志,同步模式下日志发送和备机回放优先从缓存读取数据,提高速度。

日志回放

备机通过重演主机发送过来的redo日志来恢复数据页面,以达到和主机的及时同步。当在Log Cache和redo文件中均未找到需要的数据时,将启动线程同步主机上的归档日志文件到备机并从中查找所需数据,最大程度保障主备机的数据一致性。

# 主备切换

YashanDB支持手动切换主备节点,以及多备节点情况下,不需要外部干预而自己选出主节点进行切换。

手动切换

支持Switchover(主备节点同步正常的情况)和Failover(主节点数据库损坏,或者由于系统损坏导致主节点数据库不可用的情况)两种模式的手动切换。

自动选举

开启自动选举时,如主机发生故障,系统根据Raft算法在备机节点中选出主节点并自动执行主备切换,降低运维复杂度。

# 分布式高可用

在分布式集群中,典型的高可用部署形态如下所示:

一个分布式集群由多个服务组成,服务内有多个节点组,节点组内有多个节点。这些节点部署在不同主机上,有不同的安装目录、数据目录,并且通过一些网络端口进行内部通讯或对外提供服务。

MN group

管理节点组,组内包含一个主机和多个备机,主机提供当前在线服务,读写模式,备机从主机接收日志并回放,只读模式,主机故障时从备机状态切换为主机状态。

CN多活

协调节点组,组内包含多个主机,均提供在线服务且支持负载均衡,当某个主机出现异常时,由其他主机继续提供服务。

DN group

数据节点组,组内包含一个主机和多个备机,主机提供当前在线服务,读写模式,备机从主机接收日志并回放,只读模式,主机故障时从备机状态切换为主机状态。