两地三中心跨Region容灾
要实现跨Region容灾,需要部署两套数据库实例,一套主数据库实例,一套灾备数据库实例。主数据库实例和灾备数据库实例一般部署在相距较远的两个不同城市。数据库实例之间借助存储介质或者不借助存储介质直接实现数据的全量和增量同步。当主数据库实例(即生产数据库实例)出现地域性故障,数据完全无法恢复时。可考虑启用将灾备数据库实例升主,以接管业务。
openGauss当前提供基于流式复制的异地容灾解决方案。
基于流式复制的异地容灾解决方案
概述
从openGauss 3.1.0版本开始,两地三中心跨Region容灾开始提供该解决方案。
规格与约束
本节就该解决方案的特性规格与约束进行详细描述,管理人员需重点关注。
特性规格
-
主数据库实例或灾备数据库实例内网络时延要求<=10毫秒,主备数据库实例之间异地网络时延要求<=100毫秒。该时延范围内可保证容灾的正常运行,否则会导致主备数据库实例断链等情况出现。
-
在网络带宽非瓶颈,灾备数据库实例打开并行回放前提下,不同硬件规格可支持主数据库实例日志产生速度如下表所示。在该日志产生速度下可以保证RPO、RTO,否则无法保证。
表 1 典型配置下日志产生速率
-
如果磁盘混合部署,应采用低配部分的规格(比如数据库实例内有NVMe和SATA盘,请参考SATA盘配置的规格)。
-
灾备数据库实例升主:
- 灾备数据库实例升主允许丢失一定的数据,RPO<=10秒 ;
- 灾备数据库实例处于normal态,灾备升主RTO<=10分钟,数据库实例处于degraded状态等叠加故障场景下,执行灾备数据库实例升主RTO一般在20分钟以内。
- 灾备数据库实例为独立数据库实例,无法感知主数据库实例的状态,因此不支持自动升主。第三方应用可通过接口调用触发灾备数据库实例升主,相关操作参见灾备数据库实例升主failover。
-
演练特性:计划内主备数据库实例倒换,无数据丢失RPO=0,RTO<=20分钟(包含主数据库实例降为灾备实例,灾备数据库实例升主两个流程)。
须知: 经过测试,SATA SSD极限写入速率在240MB/s左右,SAS SSD可以达到500MB/s以上的写入速度,NVMe SSD表现则更为优异。如果硬件条件达不到如上标准,则可支持的主数据库实例单分片日志产生速度应下调,才可保证RPO、RTO。
主备数据库实例出现文件句柄,内存等资源耗尽时,无法保证RPO,RTO。
特性约束
- 搭建容灾关系前,主集群需创建具有流复制权限的容灾用户,用于容灾鉴权,主备集群必须使用相同的容灾用户名和密码,一次容灾搭建后,该用户密码不可修改。若需修改容灾用户名与密码,需要解除容灾,使用新的容灾用户重新进行搭建。容灾用户密码中不可包含以下字符“| ;&$<>`'"{}()[]~*?!\n空白”。
- 搭建容灾的主备集群版本号必须相同。
- 流式容灾搭建前不支持已存在首备及级联备。
- 搭建容灾关系时,如果集群副本数<=2,会设置most_available_sync为on,在容灾解除或者failover后此参数不会恢复初始值,持续保证集群为最大可用模式。
- 搭建容灾关系时,会设置synchronous_commit为on,解除容灾或failover升主时恢复初始值。
- 灾备集群可读不可写。
- 灾备集群通过failover命令升主后,和原主集群灾备关系将失效,需要重新搭建容灾关系。
- 在主数据库实例和灾备数据库实例处于normal状态时可进行容灾搭建;在主数据库实例处于normal态并且灾备数据库实例已经升主的情况下,主数据库实例可执行容灾解除,其他数据库实例状态不支持。在主数据库实例和灾备数据库实例处于normal状态时,通过计划内switchover命令,主数据库实例可切换为灾备数据库实例,灾备数据库实例可切换为主数据库实例。灾备数据库实例处于非Normal且非Degraded状态时,无法升主,无法作为灾备数据库实例继续提供容灾服务,需要手动修复或重建灾备数据库实例。
- 灾备集群DN多数派故障或者CMS、DN全故障,无法启动容灾,灾备集群无法升主,无法作为灾备集群,需要重建灾备集群。
- 主集群如果进行了强切操作,需要重建灾备集群。
- 主集群和灾备集群都支持gs_probackup工具中的全备和增备。容灾状态下,主集群和灾备集群都不能做恢复。如果主数据库实例要做恢复,需要先解除容灾关系,在完成备份恢复后重新搭建容灾关系。
- 容灾关系搭建之后,不支持DN实例端口修改。
- 建立容灾关系的主数据库实例与灾备数据库实例之间不支持GUC参数的同步。
- 主备集群不支持节点替换、修复、升降副本,DCF模式。
- 当灾备数据库实例为2副本时,灾备数据库实例在1个副本损坏时,仍可以升主对外提供服务,如果剩余的这个副本也损坏,将导致不可避免的数据丢失。
- 容灾状态下仅支持灰度升级,且继承原升级约束,容灾状态下升级需要遵循先升级主集群,再升级备集群,再提交备集群,再提交主集群的顺序。
- 建议对于流式容灾流复制IP的选择,应考虑尽量使集群内的网络平面与跨集群网络平面分离,便于压力分流并提高安全性。