信创数据库容灾建设有诸多需求难点:如具有技术兼容性、复杂的数据同步机制、快速切换与恢复能力、成本考量等等,多集群部署与跨机房部署哪一种容灾方式是最 优解?本文来自社区金融行业架构师和资深工程师同行结合真实案例进行的投票和观点分享,分析了选择原因和不同方案的利弊,希望能够为即将或正在进行信创数据库容灾建设的同行提供参考价值。
一、信创数据库容灾建设的难点
信创数据库的容灾是指为保证业务连续性和数据安全性,对国产化数据库系统采取的一系列预防措施和技术手段。以下是信创数据库容灾的几个主要难点:
技术兼容性:信创环境通常使用的是国内自主研发的基础软硬件设施,这些设施与国际主流产品可能存在一定程度的技术差异或兼容问题。因此,在构建跨平台、多系统的容灾方案时需要考虑如何解决不同技术体系之间的兼容性和互操作性问题。
成本考量:建立一套完整的容灾体系不仅要投入大量的资金购买相应的硬件设备和软件许可,还需要考虑到后续运维过程中持续的人力物力开销,不同的容灾架构所需成本差异很大。对于许多企业而言,如何平衡容灾需求与预算限制是一大难题。
复杂的数据同步机制:为了保证主备数据中心之间数据的一致性,通常需要实现高效稳定的数据同步功能。然而,在实际操作中,由于网络延迟、带宽限制等因素的影响,很难做到完全实时的数据复制,这就要求设计出既能满足性能要求又能保障数据一致性的解决方案。
快速切换与恢复能力:一旦发生故障,能否快速准确地将服务从原生产环境切换至备用环境中,并且能够在最短时间内恢复正常运营状态,是衡量容灾效果好坏的重要指标之一。特别是金融行业,往往要求极高的系统可用性和快速的恢复时间目标(RTO)以及恢复点目标(RPO),确保在灾难发生后也能迅速恢复正常运营。这增加了容灾解决方案的技术复杂度和成本,也考验着整个架构的设计水平和运维团队应对突发状况的能力。
二、多集群部署和跨机房部署——数据库的两种容灾方式
(一)多集群部署
通过实施多集群部署容灾方案,可以将数据库集群部署两套或者多套。当主集群发生故障时,理想状态下,备集群能够数据无损地快速完成切换,替代主集群继续提供生产服务。
多集群部署可以实现集群隔离。数据库集群间解耦,故障域隔离从而避免全局性的故障;集群间版本隔离,可避免Bug污染,能够快速回切;方便数据库管理员对数据库系统资源使用进行规范和约束。
(二)跨机房部署:
跨机房部署需要在架构上进行良好的设计。跨机房最大的挑战在于机房之间的物理距离远,异地数据传输的延迟难以忽略。在网络普遍延迟的情况下,如何根据业务特性设计高可用的性能达标的分布式系统,将是最为关注的问题之一。
三、社区投票:跨机房部署or多集群容灾——金融行业如何选择信创数据库容灾方案?
twt社区针对跨机房部署和多集群容灾两种数据库容灾方式,组织架构师和资深工程师同行,结合真实案例进行了选择投票和观点分享,分析了选择原因和不同方案的利弊,希望能够为即将或正在进行信创数据库容灾建设的同行提供参考价值。
四、同行热议观点分享
姚雅飞 某商业银行 资深工程师
立场:多集群容灾
观点:
1、技术原因:目前信创数据库不管是双机热备部署还是集群部署,厂商的设计目标一般满足数据库自身稳定运行,主要用于单数据中心内解决高可用的问题。在实际实施时考虑到双中心部署是原理上可行,但设计上由于厂商考虑满足数据库稳定运行,在外部参数的要求上比较苛刻,跨机房部署代价高、稳定性差。多集群方案本质上是两套独立的运行环境,中间通过数据库日志回放等技术完成数据同步,对单集群稳定运行基本没有影响。跨机房部署技术复杂度高,出现问题在短时间内解决困难,多集群部署在出现问题时排查步骤相对简单,干扰因素少。
2、增加了业务连续性风险:容灾最终要解决的是一些极端场景下的业务不间断,发生的频率相对较少。跨机房部署增加了网络稳定性、延时等第三方带来的不确定性,数据库日常的稳定运行不能保证,认为增加了运行风险,带来业务的不稳定。多集群部署都是独立运行的集群,互相之间几乎没有干扰,对于原来的数据库仅是把事务日志发出一份给对方,稳定性几乎不受影响。
董生 某大型银行 数据库架构师
立场:跨机房部署
观点:
个人比较倾向于跨机房部署,减少单机房故障的时候出现数据库系统的不可用情况。以笔者的了解和经验,目前大部分数据库在灾备建设时,采用的是多地多集群的部署模式,单个集群集中部署在一个机房内部。这样的好处是当灾备发生的时候,可以快速的切换到其他区域的集群承载业务。
但是还有一个情况,数据库在灾备建设时,一般会根据自己系统的等级,选择合适的灾备策略。对于很多较低的系统,建设时大部分只有一个异地数据文件的冷备。若生产的数据库都存在于一个机房,发生意外事故时,例如最近阿里的云数据库事件,实际恢复时间相当长,包括需要将异地的冷备传输至生产机房恢复。但是若采用将一个集群跨机房部署,只需将不受影响的机房的数据库提升为主,建立对应从节点,这样相对冷备文件恢复的用时更短。
不过采用跨机房部署,网络布线和分配是需要考虑的,而且个人也不建议跨的机房是处于距离较远的地方,这样网络的传输延迟可能会对系统运行平稳造成一定的影响。
施斌 某证券单位 数据库架构师
立场:多集群容灾
观点:
案例:对客的历史交易数据查询系统,两地三中心部署架构,本地、同城和异地分别创建独立集群,采用多集群容灾技术实现高可用。
1、采用多集群容灾部署方案优势:
架构更加简单,机房间独立集群,不会因为某个机房故障,影响另外机房的集群。如果是多副本方案,主生产和同城副本间还是有一定影响,一方面会担心同城或者异地副本故障会影响到主生产,一方面也担心主生产故障的时候,同城或者异地副本无法正常接管。
架构更加灵活,机房间独立集群,某些情况下同城集群可以单独激活提供一些测试或者演练的功能,而跨机房副本无法独立激活。
部署更加灵活,跨机房副本方案,要考虑机房级故障多数派仲裁接管,仲裁服务器至少需要三机房部署,而多集群部署方案没这个限制。
2、采用多集群部署方案不足之处:
高可用RTO指标相对差一点;同集群间的副本数据同步延迟要比跨集群同步延迟更少。
跨机房副本可以实现自动切换,多集群一般需要手动切换,切换需要更长的时间,操作也相对复杂。
跨机房多副本方案投入的设备会更少一点,一般管理平台是共用一套,数据节点副本一套集群要满足最低3副本,算下来跨机房多副本更省机器。
王兆坤 某银行单位 数据库架构师
立场:跨机房部署
观点:
如果非要选择的话,那选择跨机房部署。
但是从我个人的立场来讲,更加建议两者结合的方式,因为这两种策略保障的高可用方案不同,而且还与自己企业的数据库产品有关系。
考虑因素:
1、企业机房距离、网络带宽、网络延迟。
2、数据库产品。如果数据库属于分布式数据库,优先选择跨机房部署。由于分布式数据库一般都要求多数派,所以机房数量可能需要建议3个。如果只有两个机房,那需要必须增加多集群容灾方案。如果是集中式数据库,那建议使用成熟的跨集群容灾方案。就像RAC很少使用Extend Rac一样,一般都采用RAC+ADG。
3、成本。如果采用跨机房部署+多集群容灾,必然会增加成本。这个也是需要考虑的。
杨光 某金融企业 数据库架构师
立场:多集群容灾
观点:
单一集群跨机房部署的方式,优点是可以节省一部分硬件资源,对于分布式数据库只需要可以支撑5副本数据的服务器。但是基于分布式数据库数据同步的特点,这就要求两个机房之间需要有裸光纤用于数据同步。
多集群的部署方式,虽然每个机房内都至少要有能支撑3副本的服务器,但是对于带宽的要求可以低很多,使用当前的窄带宽也可以勉强支撑。
另外,多集群的部署方式也可以一定程度规避数据库软件bug导致的集群级故障。
梁净净 某保险单位 数据库工程师
立场:跨机房部署
观点:
两种方案都是可行的,对于不同的数据库类型,厂商给出的解决方案以及企业根据自身需求所选择的解决方案可能都是不同的。
1、对于集中式数据库,以某国产数据库为例,两种方案都可以,一般如果企业出于成本考虑,大概率会选择在同城另一个机房通过搭建同步备库方式,实现故障自动切换,达到容灾目的,异地一般可以考虑异步复制搭建备库,一旦故障发生,可通过手动切换方式实现容灾,成本低,恢复快。
2、对于分布式数据库,目前了解很多厂商的容灾方案也需要是一个集群,当然也可以选择单节点作为一个zone的灾备方案,或者是冷备,大部分推荐方案还是与生产同架构同节点数的集群,这种方案的好处是一旦生产发生故障,切换到容灾环境可以快速对外提供服务,减少业务影响,但所需要的成本也是比较高的,一般企业可以根据自身需求进行选择。
吉工 某证券单位 DBA
立场:多集群容灾
观点:
1、成本因素:一般部署多集群容灾,两个机房即可。两个集群相对独立,一般采用日志传输复制方式同步,无需第三方节点仲裁。对于数据中心规划少的系统较合适。
2、运行稳定性:跨数据中心之间的网络延迟可能较高,稳定性较差,多机房部署对网络稳定要求低,个人遇到过跨机房部署架构因网络变更异常导致的脑裂情况。
3、日常运维考虑:目前绝大多数据库都支持多集群部署方式,架构相对跨机房部署简单,改造难度低。
四、共识总结
结合上述专家的观点:
多集群方案的优点是,多套独立运行的环境,架构相对简单;机房间独立的集群,不会因为某个机房故障,影响另外机房的集群,也可避免数据库软件bug导致的集群级故障;同时对网络的要求较低,可以接受窄带宽和较高的网络延迟。缺点是多集群间数据同步延迟要比同集群同步延迟更大;使用的服务器资源及软件许可相对更多;且多集群一般需要手动切换,切换需要更长的时间,切换操作也相对复杂。
跨机房部署的优点是,相对可节省部分硬件资源;同集群的RTO指标相对跨集群更好,可实现自动切换。但跨机房部署的缺点也很明确,需考虑机房间的物理距离,对网络要求很高,稳定性相对较差;同时跨机房部署的系统架构相对复杂,改造和运维难度大。
在投票中,跨机房部署票数稍多于多集群容灾。两种数据库容灾方案是基于不同的维度,多集群架构的实施和运维相对跨机房部署简单,但跨机房部署更方便实现自动切换。根据业务特性及所用数据库架构的特点,综合预算和需求,多方衡量后选择的方案,可能才是最 优解。