GoldenDB 数据库系统中的每个主备式的节点之间的复制方式,采用快同步方式,称之为 gSync。基于 gSync,可以灵活地在高可靠和高可用两个场景之间进行平衡。效果以下图数据节点分片1说明:

复制方式
要求: 相同 TEAM 中的 DN 节点需来自同一个机房。
TEAM:即安全组,GoldenDB 中使用 TEAM 为单位判断主备同步的状态。主机向备机同步事务,只要 TEAM 中有>= TEAM 响应数个备机同步了主机,则认为该TEAM是正常的。
基于 TEAM,我们使用分片的水位来描述分片的可用和可靠,分片水位即分片中正常 TEAM 的个数配置。
分片水位处于高水位,表示该分片处于可靠状态,主机发生故障时,数据不会丢失,RPO=0。
分片水位处于低于低水位,表示该分片处于不可用状态,无法提供写服务。
如上图中,1 个分片中有 2 个 TEAM,一般高水位设置为 2,主机不计数,低水位设置为 1,主机不计数。则:
正常 TEAM>=2 时,则分片处于高水位状态;
正常 TEAM<1 时,则分片处于低于低水位状态。
基于此,可以根据本地同城机房情况灵活调整水位配置,以达到相关要求,比如本地同城两个AZ,高低水位配置为高水位 2 主不计数,低水位 1 主不计数 ,能保证正常情况下同城机房存在强同步的副本,在本地机房故障时,同城机房不丢失数据。
GoldenDB 基于分组管理、高低水位及组合策略,实现满足业务灵活性的高可用策略设置:
分组管理: 将每个机房作为一个 TEAM 进行分组管理,达到该机房响应数(默认为 1 )时,判定为本机房已回响应。
高低水位: 水位就是已回响应的 TEAM 数。基于分组管理,可以设置一个城市所有机房的响应情况,可设置高水位阈值和低水位阈值。高水位用于设置正常运行要求,达到高水位后立刻提交。低水位用于设置机房机最低响应数要求,没有到高水位、但满足低水位要求,提交数据库事务但会产生告警。如果没有达到低水位要求,数据库事务不会提交。

高低水位
通过不同的水位参数设置,系统可以设置成下列 3 种模式:
最大保护模式
最大保护模式要求所有分组必须都回复同步响应,能够最大程度保护数据的安全性,对应的水位是高 2 低 2 主不计数,即两个TEAM都必须回响应才能提交。
最高性能模式
最高性能模式不需要任何分组响应即可提交事务,能够自大限度满足应用的性能需求,对应的水位是高 1 低 1 主计数,即不需要任何一个TEAM回响应(主计数模式下主本身算水位 1)。
最高可用模式
最高可用模式的响应数介于最大保护模式和最大性能模式之间,既满足应用的性能需求也能满足应用的安全需求。
GoldenDB 在发生进程、机器、网络、机房、数据中心故障,在少数节点发生故障的情况下,可以实现自动切换并保证不丢数据 RPO=0,一旦发生故障可以快速恢复服务 RTO<8s 。




