高可用 #
背景 #
高可用是现代系统的最基本诉求,作为系统基石的数据库,对于高可用的要求也是必不可少的。
在存算分离的分布式数据库体系中,存储节点和计算节点的高可用方案是不同的。 对于有状态的存储节点来说,需要其自身具备数据一致性同步、探活、主节点选举等能力; 对于无状态的计算节点来说,需要感知存储节点的变化的同时,还需要独立架设负载均衡器,并具备服务发现和请求分发的能力。
DBPlusEngine 自身提供计算节点,并通过数据库作为存储节点。 因此,它采用的高可用方案是利用数据库自身的高可用方案做存储节点高可用,并自动识别其变化。
挑战 #
DBPlusEngine 需要自动感知多样化的存储节点高可用方案的同时,也能够动态集成读写分离方案,是实现的主要挑战。
目标 #
尽可能的保证 7X24 小时不间断的数据库服务,是 DBPlusEngine 高可用模块的主要设计目标。
核心概念 #
高可用类型 #
DBPlusEngine 不提供数据库高可用的能力,它通过第三方提供的高可用方案感知数据库主从关系的切换。
确切来说,DBPlusEngine 提供数据库发现的能力,自动感知数据库主从关系,并修正计算节点对数据库的连接。
动态读写分离 #
高可用和读写分离一起使用时,读写分离无需配置具体的主库和从库。
高可用和读写分离一起使用时,支持在半同步复制,异步复制时探测从库的延迟时间,并动态路由延迟较低的从库提供读流量。
高可用的数据源会动态的修正读写分离的主从关系,并正确地疏导读写流量。
高可用还提供从库全部宕机,读流量自动路由至主库,从而保证业务系统的可用性。
使用规范 #
支持项 #
- 支持 MySQL MGR;
- 支持 MySQL 主从;
- 支持 openGauss 主从;
- 支持 GaussDB(for MySQL) 主从;
- 支持 PostgreSQL 主从。
不支持项 #
- 不支持多主集群模式;
- 不支持级联集群模式;
- 不支持主主集群模式。