暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

国产数据库多主架构演进的竞争力验证思考

原创 Cantian数据库存储引擎 2024-11-06
113

数据库存算分离架构回归

国产数据库经历了40年左右的发展,在一些外部因素的作用下,最近几年进入了快速发展的阶段。国产数据库不断取得技术突破,在分布式数据库、云计算数据库以及正在变革的AI数据库等方向都有很好的实践,市场拓展方面也取得了显著成就。

传统关系型数据库的架构主要有下面三种:

image.png

过去 30-40 年来,这种整体式的关系数据库堆栈没有太大改变。虽然在数据库扩展方面存在不同的常规方法(例如,分区、无共享或共享磁盘等),但这些方法都基于同样的基本数据库架构。不同的技术架构,有不同的适配场景,在面向关键核心业务的技术架构选择上,国产数据库逐渐回归到存算分离架构上,其中:

TDSQL-C MySQL 版
image.png
在架构上,TDSQL-C 存算分离,把计算层和存储层进行解耦,做分层处理,分层过后通过池化让计算、存储的能力变得无限大。存算分离后,存储可以使用集群化的云存储,大大提升存储上限,计算资源可以跨实例、跨物理机调度,按需使用,弹性大大增加。TDSQL-C 存算分离架构虽然使用了共享存,但是并未真正将多个实例副本归一,每个实例对应的数据文件采用的是三副本,通过多副本强一致策略保证数据的一致性。对外服务上只有一个RW实例,其余实例是RO实例。

openGauss资源池化

image.png
openGauss 在 3.1.1 版本引入的资源池化特性,同样的,也实现了主备机共享一份存储的能力,实现基于磁阵设备的资源池化HA部署形态。该特性是基于共享存储建库,将目录分为三种类型,每实例独占且不共享、每实例独占且共享、所有实例共享。虽然未实现所有类型的数据在不同的副本间均共享同一份,但也是在TDSQL-C MySQL架构多份副本的基础上,进一步减少了数据的副本数,降低存容量的消耗。同样的,openGauss当前架构也是只有一个RW节点,其余节点为RO节点。

 

华为参天技术架构

 

Cantian引擎是基于共享存储的多写集群,各个节点在架构上对等,从任何一个节点都 可以对数据库做DDL/DML/DCL等操作。任何一个节点做的修改,在满足隔离级别的要求下,其他节点都可以看到。所有计算节点共享和读写存储上同一份用户数据。

image

Cantian架构在极大程度的减少数据副本数的同时,提供多主,多节点同时读写的能力。Cantian可以将基于共享存储的数据库能力充分发挥,提供极致的数据库性能同时,降低TCO。

对比 Oracle RAC 架构

在数据库这个专业的技术领域中,提到存算分离和多主架构,都可以跟Oracle Real Application Clusters (RAC) 架构进行一下比较。Oracle 数据库在使用外置存储方面有着丰富的经验和成熟的解决方案。国产数据库与Cantian进行联动配合,在多主架构未来的演进上,如果能够实现和Oracle RAC 相同的体验,在国内进行核心数据库系统业务替换或改造的场景库中,可以为客户提供更具有吸引力的数据库解决方案。

Real Application Clusters (RAC)数据库具有多个位于RAC群集上的数据库实例。这些实例访问共享存储上的一组数据库文件。通常,共享存储由托管RAC数据库实例的节点本地的ASM实例提供。通过ASM实例,简化了外置共享存储的管理,通过对磁盘的条带化和镜像管理,在提供高性能的同时,保障数据的可靠性。

Oracle Database with Oracle RAC Architecture

image.png

Oracle RAC中的多个实例在共享同一份数据的基础上,可同时对外提供服务。对于外部应用,可以通过统一访Ì可入口Single Client Access Name (SCAN) IP访问到RAC集群,会自动根据策略分发至数据库节点VIP来访问数据库。对于任何应用来说,不需要考虑每个节点缓存的数据也不需要考虑数据是如何存放在下同类型的存储中,由数据库统一管理,对于应用来说RAC数据库就是一个多实例多主数据库。

 

国产数据库多主架构竞争力

对比Oracle,Cantian + 存储的多主架构的竞争力可以从以下几个方面呈现:

存储管理

  • Oracle ASM(自动存储管理):Oracle 提供了 ASM 技术,简化了存储管理,通过对磁盘的条带化和镜像管理,提高了性能和可靠性。
  • Cantian + 存储:国产数据库通常依赖于文件系统或第三方存储解决方案,需要在应用层面实现条带化和冗余。Cantian作为数据库存储引擎,通过DBStor 存储特性,对上层数据库及应用屏蔽存储的管理,通过库Log和Page的读写存储接口,将数据库存储引擎的存储 逻辑卸载到共享存储,提升数据库的性能,并发挥存储底座的高可靠能力。

数据保护

  • Oracle Data Guard:提供完整的数据保护和灾难恢复解决方案,通过实时数据复制实现数据库的高可用性。
  • 国产数据库 + 存储:依赖于主从复制和流复制技术,通常需要结合第三方工具(如 MHA)实现高可用。Cantian天然具备多主能力,利用存储的复制特性,通过数据库层和存储层容灾配合,可实现同城RPO=0,数据库主集群可读可写、备集群可读的高可用容灾恢复方案。由于是利用存储侧能力,可以实现日志同步卸载到存储层,不消耗主机资源的同时,提升数据库主机的性能。

性能优化

  • Oracle Exadata:专为高性能数据库设计的集成系统,优化了数据库与存储之间的交互。
  • Cantian + 存储 + 网络:国产数据库的性能优化主要依赖于硬件和网络配置,通常是进行应用层的调优。高性能是华为存储的核心竞争力,针对数据库业务有专门的内部性能优化。网络上也具备NoF/RDMA/SoCC等完善的解决方案,结合Cantian的数据库语义卸载特性,可以为用户提供极致的性能体验。

成本与复杂性

  • Oracle:通常伴随较高的许可成本和复杂性,但提供了更全面的企业级功能,通过RAC架构,实现副本归一,用尽可能少的副本数提供高可用能力。
  • Cantian + 存储:国产数据库的使用成本通常较低,由于没有完善的多主高可用能力,需要在某些高级功能上投入更多的开发和维护资源,且数据副本数较多,实际的存储容量消耗会带来大量的成本投入,运维的复杂度及成本变高。通过Cantian + 存储的方案,首先可以减少数据副本数,降低多份数据带来的存储容量成本投入。另外,存储本身已有完善的容灾高可用方案,通过简单的适配,不需要引入和维护额外的组件开发,既可以实现本地高可用+异地容灾的完善灾备解决方案,降低数据库完整方案的复杂性及运维成本。

数据库多主架构竞争力验证思考

数据库是专业性、技术性非常强的基础软件,前面分析的与Oracle RAC 对比的数据库多主架构竞争力,除了依赖Cantian和存储的特性能力外,需要结合实际和的客户场景及不同国产数据自身的能力,设计合理有效的测试场景,通过完备的测试验证及测试结果分析呈现,结合技术原理,通过实测数据来充分说明方案的竞争力效果。

在保障质量的同时,多主架构竞争力验证在以下各个阶段环节需要着重改进:

测试环境搭建

  • 模拟生产环境:搭建与生产环境相似的测试环境,包括网络拓扑、存储配置、操作系统配置、数据库集群配置等。存储管理形成简化的配置指导。
  • 使用测试工具:利用有效的测试工具的同时,进行二次开发,实现能够表征不同客户场景且具有代表性的负载模型(如:跑批、数据加载等),进行压力测试和性能测试。
  • 多场景测试:模拟各种场景下的操作,如高并发读写、网络故障、硬件故障等,验证系统的稳定性和可靠性。
  • 多副本归一量化:通过环境部署过程的容量规划、实际数据副本数等方式,量化出多主架构相比传统国产数据架构的容量消耗减少情况。

性能测试

  • 基准测试:进行基准测试,评估在不同配置下的数据库性能。
  • 负载测试:在不同负载下测试系统的响应时间、吞吐量等性能指标。
  • 性能调优:通过分析测试结果,识别系统的性能瓶颈,并进行优化,提升基准测试及负载测试结果,形成最佳实践指导。

数据一致性测试

  • 事务测试:测试数据库多主架构下,在事务并发情况下的一致性,确保无数据丢失或冲突。
  • 故障恢复测试:多主架构下,模拟各种故障情况,验证数据的恢复能力。
  • 一致性测试:在多主架构环境中,验证跨节点以及异地容灾的数据一致性,确保备份副本可用。

高可用性测试

  • 故障切换测试:测试在节点故障情况下的自动切换和恢复能力,提升RTO/RPO竞争力,RTO尽量可视化。
  • 备份与恢复测试:验证备份方案的有效性和恢复速度,确保多主架构下,备份恢复对性能的影响可控。通过测试实践,优化备份与恢复流程,持续降低用户运维复杂度。
  • 压力下的高可用性测试:在高负载下测试系统的高可用性,确保在高压环境下的多主稳定性。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论