#主备高可用
主备复制是数据库最主要的高可用手段,通过将主机上的数据实时复制到备机来实现。主机是执行业务的数据库实例,备机是复制主机数据的数据库实例。当主机发生故障的时候,业务可以转移到备机上继续执行,降低故障对业务的影响,提高数据库的可用性。
# 主备部署架构
YashanDB支持主备模式(一主多备)和级联备模式(不限层级)的高可用部署架构。
主备实例部署在不同的主机上,两台主机一般应连接到同一交换机,确保网络低时延,并应考虑交换机的冗余配置,保证高可用避免单点故障。
级联备为异步备机,从备机接收日志,减少主机上的带宽负载,通常用于异地容灾中。
以下图为例:
主机:
当前提供在线数据库服务,读写模式。
分布式主备高可用部署中,每个MN Group和DN Group组内包含一个主机。
共享集群主备高可用部署中,主机被扩展为主集群的概念,集群中多实例同时提供在线数据库服务,均为读写模式。
备机:
从主机接收日志并回放,只读模式,主机故障时从备机状态切换为主机状态,一台主机可以有多台备机。
分布式主备高可用部署中,每个MN Group和DN Group组内包含一个或多个备机。
共享集群主备高可用部署中,备机被扩展为备集群的概念,但只需要备集群中的1号实例进行日志接收和回放。
级联备:
备机的备机,从备机接收日志并回放,一台备机可以有多台和多层级联备。当上级备机升为主机后,级联备转为普通备机;当主机变成备机后,它的备机变成级联备。
分布式和共享集群主备部署中无级联备。
# 主备复制链路
主备复制中,通过主机发送redo日志,备机接收日志并回放,以实现备机和主机的在线同步。YashanDB采用环形Log Cache缓存redo日志,同步模式下日志发送和备机回放优先从缓存读取数据,提高速度。
主备机复制链路:
主备集群复制链路:
日志回放
备机通过重演主机发送过来的redo日志来恢复数据页面,以达到和主机的及时同步。当在Log Cache和redo文件中均未找到需要的数据时,将启动线程同步主机的归档日志文件到备机并从中查找所需数据,最大程度保障主备机的数据一致性。
# 主备切换
YashanDB支持手动切换主备节点,以及多备节点情况下,不需要外部干预而自己选出主节点进行切换。
手动切换
支持Switchover(主备节点同步正常的情况)和Failover(主节点数据库损坏,或者由于系统损坏导致主节点数据库不可用的情况)两种模式的手动切换。
自动选举
开启自动选举时,如主机发生故障,系统根据Raft算法在备机节点中选出主节点并自动执行主备切换,降低运维复杂度。