GaussDB(for MySQL) RegionlessDB 发布:全球数据库技术
本文分享自华为云社区《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 的跨地域同步低时延,全球业务就近读取等优势。
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。
(4)长距离高网络延迟下,Window 中的发送不需要等待回包,网络带宽得到极大的利用,最终确保复制延迟< 1s。
(5)日志同时写入到从 Region 的 Log Server 和 Page Server,Page 真正实现实时回放。一旦进行跨 Region 切换,Crash Recovery 所需的页面已经准备好了,使得容灾切主的时间可小于 30s。
3.2 构建 Global 事务快照,写转发能力满足就近读
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.2 使用 RegionlessDB
RegionlessDB 添加从集群后,后台会将主集群存量数据全量同步到新建的从 Region 集群中,并将主集群写入的新数据实时同步到从集群中。典型场景 RegionlessDB 主从集群间实时复制时延小于 1s。
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
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/34bcec927523aedff59e2b4eb】。文章转载请联系作者。
评论