本文分享自华为云社区《GaussDB(for MySQL) RegionlessDB发布:全球数据库技术》,作者: GaussDB 数据库。

1.技术背景

对于一些典型行业,如跨境电商和大型互联网企业,其业务往往遍及世界各地。在当今中资出海的浪潮下,客户业务全球化部署诉求对传统的数据库部署形态提出了挑战。

过去客户主要选择的解决方案有两类:第一类,数据库中心化部署一套,应用端统一接入;第二类,数据库随应用全球部署,通过同步工具完成各区域间数据同步。对于前者,异地读写数据库的时延不甚理想;对于后者,数据状态一致性难以保障,整体链路成本也偏高。

针对传统解决方案的弊端,同时结合客户的诉求,华为云GaussDB(for MySQL)团队预见性地提出未来云原生数据库的部署形态将从以资源、地域为中心转变为以应用、流量为中心这一理念。基于此,GaussDB(for MySQL) RegionlessDB形态应运而生。

GaussDB(for MySQL) RegionlessDB,是由分布在全球多个地域间若干GaussDB(for MySQL)集群组成的数据库网络。其中,主集群对外提供写服务,每个集群均可提供读服务(从集群接收到的写请求会被转发到主集群处理),RegionlessDB网络中所有集群的数据保持同步。客户可以无需上层应用改造,享受GaussDB(for MySQL) RegionlessDB的跨地域同步低时延,全球业务就近读取等优势。

1.jpg

2.特性价值

(1)全球多活,近端访问:在业务部署跨全球多个地域情况下,传统中心化数据库部署方案中,数据库在主地域,其它地域的应用需要跨region,乃至跨大洲访问主地域的数据库,较高的网络延迟会导致数据库性能低下,带来种种不良的用户体验。通过GaussDB(for MySQL) RegionlessDB的跨地域低延迟同步,叠加本地就近读取能力,可以确保在常规负载下,各地域的应用访问数据库时的延迟均小于1秒。

(2)Global级的数据库灾备:在提升服务整体可用性、搭建容灾集群的角度,通过GaussDB(for MySQL) RegionlessDB的实时同步和故障时主动切换的能力,可轻松搭建金融级可用的跨地域数据库灾备集群。

3.实现原理

3.1 跨洲际复制延迟< 1s和RTO < 30s的关键技术

(1) 基于Redo的实时异步复制。

(2)直接从存储读取Redo Log,SQL节点只同步位点信息。复制效率与主Region业务效率无相互干扰。

(3)并行地读取、同步和写入Redo Log,并在存储节点独立地并行地回放Page。

2.png

(4)长距离高网络延迟下,Window中的发送不需要等待回包,网络带宽得到极大的利用,最终确保复制延迟< 1s。

(5)日志同时写入到从Region的Log Server和Page Server,Page真正实现实时回放。一旦进行跨Region切换,Crash Recovery所需的页面已经准备好了,使得容灾切主的时间可小于30s。

3.2 构建Global事务快照,写转发能力满足就近读

3.png

User Session与Write Forwarding Session通过共享事务状态,构建Global的事务快照,从集群等待日志同步到快照的LSN位点,后续的读操作皆可直接在本地读取数据,而不用转发到主集群中,且满足各种级别的一致性要求。

3.3 可控RPO支持用户控制容灾切换下,允许丢失事务的量级

复制延迟<1s,能确保在容灾切换的情况下,丢失的日志量在1s以内。但对于长事务,若其提交完成的一瞬间且提交日志还未复制到从集群,那么容灾切换后,该长事务产生的数据将全部丢失。

为了解决这个问题,RegionlessDB提供可控RPO的能力。用户可以控制在主集群上执行时间超过T的事务进入等待集合,同时主集群实时获取从集群日志持久化的LSN A,直到等待集合中事务的commit LSN<=A时,才提交返回。这样达到用户自主控制长事务提交返回前,其事务已经完整地持久化在从集群中的效果,从而在容灾切换场景下,减少数据丢失的程度。

4.业务场景/流程

4.1 新实例创建RegionlessDB

选择主Region购买GaussDB(for MySQL)数据库后,在管理控制台RegionlessDB页面选择创建RegionlessDB,以已购买的GaussDB(for MySQL)集群为主Region集群创建RegionlessDB。

RegionlessDB创建完成后,在RegionlessDB界面,点击添加从集群,创建从Region集群并添加到选中的RegionlessDB中。一个RegionlessDB最多支持创建1个主Region集群和5个从Region集群。

4.png

4.2 使用RegionlessDB

RegionlessDB添加从集群后,后台会将主集群存量数据全量同步到新建的从Region集群中,并将主集群写入的新数据实时同步到从集群中。典型场景RegionlessDB主从集群间实时复制时延小于1s。

5.png

5.总结

GaussDB(for MySQL)支持在不同地域,特别是跨地区/大洲进行RegionlessDB的部署。用户可在不同的Region,享受小于1s延迟且满足各级别数据一致性的就近访问体验。结合存储节点实时快速回放日志的能力,使得RTO<30s成为现实。同时借助可控RPO能力,使得容灾切换场景下丢失事务量级可由用户定义。

产品当前进入邀测阶段,欢迎有需要的客户申请试用,您可通过工单申请,将会有对应的研发人员协助您开启并使用GaussDB(for MySQL)RegionlessDB。

附录

  • 本文作者

华为云GaussDB(for MySQL)团队

  • 华为云GaussDB(for MySQL)官方产品文档:

https://support.huaweicloud.com/gaussdbformysql/index.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐