本文将详细介绍多主集群(库表)的相关信息。

随着PolarDB MySQL引擎客户的不断增加,大规模头部客户不断涌入,部分头部客户业务体量规模庞大,使得目前PolarDB MySQL引擎的单写(一写多读)架构在特定场景下,写性能出现瓶颈。

PolarDB MySQL引擎全新推出多主架构,实现从一写多读架构到多写多读架构的升级,主要面向SaaS多租户、游戏、电商等高并发读写的应用场景。

多主集群(库表)的架构图如下:多主架构

集群中所有的数据文件都存放在共享存储(PolarStore)中,各个RW节点通过分布式文件系统(PolarFileSystem)共享底层存储(PolarStore)中的数据文件。用户可以通过集群地址访问整个集群,数据库代理会自动转发SQL命令到正确的RW节点。

核心优势和能力

  • 秒级横向写扩展

    支持不同库/表在不同计算节点并发写入,最多支持32个节点同时写入。不同数据库可以在不同计算节点秒级动态调度,极大提升整体的并发读写能力。

  • 多主互备(省去备节点)

    如果某个主节点发生故障,可秒级切换到其他低流量主节点,同时由于没有额外的用于热备的闲置资源,成本降低一半。

  • 全局只读节点

    可以在全局只读节点上读取到所有写节点的数据,方便执行汇聚库的请求。

适用场景

多主集群(库表)主要面向SaaS多租户、游戏、电商等高并发读写的应用场景。
  • SaaS多租户场景:满足高并发性能需求,实现租户间负载均衡

    场景特点:租户的数据库数量变化较快,负载变化较大,需要经常在不同的实例之间调配数据库资源,以便达到最佳用户体验。

    解决方案:多主集群(库表)可帮助客户秒级将租户的数据库在不同RW节点间进行切换,或秒级增加新的RW节点承担突发流量,从而实现负载均衡。

  • 世界服游戏及电商场景:分钟级的扩缩容,适应快速增长的业务请求

    场景特点:世界服游戏及电商场景,一般采用基于中间件或者业务的分库分表场景方案。在版本更新和大促的时候往往需要快速的弹性扩容数倍的集群容量,在活动和大促结束后又需要快速缩容。然而,传统集群的扩缩容都需要迁移数据,非常复杂。

    解决方案:多主集群(库表)的秒级横向扩展和透明路由功能,结合中间件或业务分库分表可以实现透明的秒级扩展,将原来数天的扩容变为分钟级。

  • 分服游戏场景:更好的性能和扩展能力,灵活扩缩容

    场景特点:在游戏成长期,数据库负载较大,且呈现为不断增长的趋势特点。通常表现为在游戏成长期期间,会不断增加数据库,导致RW节点负荷也不断增加。而在游戏衰退期,数据库负载逐渐减少,数据库会不断合并,导致RW节点的负荷也呈减少趋势。

    解决方案:游戏成长期,可快速将部分数据库切换到新的RW节点,实现负载均衡;游戏衰退期,可快速将数据库聚合到少量RW节点,快速降低运作成本。

性能提升情况

经测试,随着集群中的数据库切换至更多的主节点(RW)上,集群整体并发读写能力几乎呈线性提升。测试示例如下:
  • 测试背景:集群包含8个数据库,8个RW节点。
  • 测试过程:初始情况下,8个数据库全部负载在其中一个RW节点上,然后对所有数据库同步执行相同的压力测试。压测期间,将8个数据库分别平均切换到2个RW节点、4个RW节点、8个RW节点上,观察集群整体的性能变化趋势。
  • 性能变化趋势如下,以QPS为例:性能提升

从上图可以看出,随着数据库切换至更多的RW上时,集群整体并发读写能力得到了极大的提升,几乎呈现为线性提升。

支持的内核版本

目前仅PolarDB MySQL引擎8.0内核版本支持多主集群(库表)

节点规格与定价

多主集群(库表)支持独享规格通用规格。更多详情,请参见计算节点规格

关于多主集群(库表)的计费详情,请参见产品计费

如何使用

具体使用方法,请参见使用说明