[版本更新]PolarDB-X v2.2.1 生产级关键能力开源升级

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 2023年3月,PolarDB-X 正式发布2.2.1版本,在分布式数据库金融标准能力基础上,重点加强了生产级关键能力,全面提升PolarDB-X面向数据库生产环境的易用性和安全性,比如:提供数据快速导入、性能测试验证、生产部署建议等。

在今年阿里云瑶池数据库峰会上,PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 正式发布2.2.1 版本。PolarDB 分布式版是阿里巴巴自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。从 2009 年开始服务于阿里巴巴电商核心系统, 2015 年开始对外提供商业化服务,并于 2021 年正式开源。本次新版本发布,是在分布式数据库金融标准能力基础上,重点加强了生产级关键能力,全面提升PolarDB 分布式版面向数据库生产环境的易用性和安全性,比如:提供数据快速导入、性能测试验证、生产部署建议等。


架构简介

PolarDB-X 采用 Shared-nothing 与存储分离计算架构进行设计,系统由5个核心组件组成。

20230324143138.jpg

PolarDB-X 架构


  • 计算节点(CN, Compute Node)
    计算节点是系统的入口,采用无状态设计,包括 SQL 解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务 2PC 协调、全局二级索引维护等,同时提供 SQL 限流、三权分立等企业级特性。
  • 存储节点(DN, Data Node)
    存储节点负责数据的持久化,基于多数派 Paxos 协议提供数据高可靠、强一致保障,同时通过 MVCC 维护分布式事务可见性。
  • 元数据服务(GMS, Global Meta Service)
    元数据服务负责维护全局强一致的 Table/Schema, Statistics 等系统 Meta 信息,维护账号、权限等安全信息,同时提供全局授时服务(即 TSO)。
  • 日志节点(CDC, Change Data Capture)
    日志节点提供完全兼容 MySQL Binlog 格式和协议的增量订阅能力,提供兼容 MySQL Replication 协议的主从复制能力。
  • 列存节点 (Columnar)
    列存节点负责提供列式存储数据,基于行列混存 + 分布式计算节点构建HTAP架构,预计在今年底或者明年初会正式开源

开源地址:https://github.com/polardb/polardbx-sql


01 内核的稳定性和高性能

PolarDB-X 2.2.1版本,重点面向生产级的部署要求,优化数据库实例的稳定性和性能、以及提供面向生产部署的相关实践。

1. 最低部署规格 (建议>=2c8g)

组件 CPU 内存 磁盘类型 网卡 最低数量
CN 2 核 8 GB+ SSD, 200 GB+ 万兆网卡 2
DN 2 核 8 GB+ SSD, 1 TB+推荐2块 万兆网卡 2.5(详见下方说明)
GMS 2 核 8 GB+ SSD, 200 GB+ 万兆网卡 2.5(详见下方说明)
CDC 2 核 8 GB+ SSD, 200 GB+ 万兆网卡 2(可选)

GMS 和 DN 2.5 倍资源说明:GMS 和 DN 是基于多数派 Paxos 协议构建的高可靠存储服务,因此一个 GMS(DN)会包括三个角色的节点:Leader,Follower,Logger。 Leader 与 Follower 资源要求相同,保证高可用切换后的服务质量,而 Logger 节点,只存储日志,不回放日志,固定为2核4GB的资源规格,即可满足常见百万级TPS的需求。因此一个 GMS(DN)需要 2.5 倍的资源,其中 2 是 Leader 和 Follower的资源,0.5 是 Logger的资源。

可以参考文档:PolarDB-X 服务器推荐配置

2. 在线/离线安装部署

PolarDB-X 2.2.1在面向很多线下用户POC测试,受限于现场网络条件,需要提供离线部署安装的能力,比如:从3台裸机开始,从0到1安装PolarDB-X。

PolarDB-X提供了一键下载离线安装包的能力,可参考文档:PolarDB-X 软件包下载

# 下载 x86_64 架构的 PXD 离线安装包
pxd download -env pxd -arch amd64 -repo "registry:5000" -dest ~/ -i images.list
# 下载 ARM64 架构的 PXD 离线安装包
pxd download -env pxd -arch arm64 -repo "registry:5000" -dest ~/ -i images.list
# 下载 x86_64 架构的 K8s 离线安装包
pxd download -env k8s -arch amd64 -repo "registry:5000" -dest ~/ -i images.list
# 下载 ARM64 架构的 K8s 离线安装包
pxd download -env k8s -arch arm64 -repo "registry:5000" -dest ~/ -i images.list

同时,结合生产部署稳定性的要求,提供一份系统与环境配置,包含系统OS参数、磁盘配置等,可参考文档:PolarDB-X 系统与环境配置

3. 性能全面提升

PolarDB-X 2.2.1在公有云上选择了标准ECS进行了性能测试和摸底,相比于2.2.0版本结合多方面的优化,有了明显的性能提升

测试资源:

组件名称 机型 说明
OPS机器 ecs.g7.4xlarge 安装部署
计算节点 (CN) ecs.hfg7.4xlarge * 3 16c64g,主机单价:2324元/月
存储节点 (DN) + 元数据节点(GMS) ecs.i4.4xlarge * 3 16c128g + 3.5TB的存储,主机单价:3776元/月

sysbench测试:

Sysbench场景 2.2.1版本800并发 2.2.1版本2000并发 2.2.0版本800并发 2.2.0版本2000并发 性能提升
point_select 368768.08 401115.95 357033.85 383850.57 +3~5%
read_only 164165.17 175842.29 132726.85 139712.47 +20~25%
read_write 106222.37 122152.42 77727.57 82000.08 +35~50%
write_only 47657.71 61934.61 39171.12 46697.96 +20~30%

TPC-C测试:

TPC-C场景 2.2.1版本1000并发 2.2.0版本1000并发 性能提升
tpmC 176861.03 148623.13 +19%

可参考性能白皮书:

  1. PolarDB-X sysbench 测试报告
  2. PolarDB-X TPC-C 测试报告

4. 分布式1024节点

PolarDB-X 分布式数据库中最重要的特性就是线性扩展,目前市面上也有众多分布式数据库号称超大规模的线性扩展,但理论和实践还是需要相结合,通过面向用户可验证的方式,来体验下PolarDB-X在分布式1024节点下的稳定性。

PolarDB-X提供了基于k8s生态构建的 polardbx-operator 组件,基于k8s的分布式容器技术可以快速构建PolarDB-X 1024节点,考虑用户的体验成本,采用了虚拟化的压缩部署方式,选择在24台ECS主机上完成分布式1024超大规格节点的部署,并通过近百万级别TPS的稳定性验证。

20230324143332.jpg

PolarDB-X 1024节点主机资源

说明:

  1. PolarDB-X采用存储计算分离的架构,CN和DN是可以独立部署,实验设计部署1024个DN节点,比如公有云PolarDB-X单个DN节点可支持3TB,那超大规模节点下可支持 1024 * 3TB = 3PB
  2. DN节点选择了最小的1C8GB (1024节点下也需要8TB的内存),通过k8s的多租户cgroup技术,采用24台高配ECS进行部署,单个ECS平均需要承载40+的PolarDB-X CN/DN节点。
  3. 本实验所需要的测试资源的成本,24台ECS按量付费 288元/小时,测试时间1天左右,预计花费7000元。

参考文档:分布式1024节点!1天玩转PolarDB-X超大规模集群

02 分布式CDC架构升级

Binlog是MySQL记录变更数据的二进制日志,它可以看做是一个消息队列,队列中按顺序保存了MySQL中详细的增量变更信息,通过消费队列中的变更条目,下游系统或工具实现了与MySQL的实时数据同步,此机制也称为CDC(Change Data Capture,增量数据捕捉)

PolarDB-X是兼容MySQL生态的分布式数据库。通过实例内PolarDB-X的CDC组件,能够提供与MySQL binlog格式兼容的变更日志,并且对外隐藏了实例扩缩容、分布式事务、全局索引等分布式特性,让您获得与单机MySQL数据库一致的使用体验

PolarDB-X 2.2.1版本后,提供了两种形态的binlog日志消费订阅能力,且两种形态可同时共存。

  • 单流形态:即单流binlog日志(也称为Global binlog),将所有DN的binlog归并到同一个全局队列,提供了保证事务完整性和有序性的日志流,可以提供更高强度的数据一致性保证。例如在转账场景下,基于Global binlog接入PolarDB-X的下游MySQL,可以在任何时刻查询到一致的余额。
  • 多流形态:即多流binlog日志(也称为Binlog-X),并不是将所有DN的binlog归并到一个全局队列,而是将数据进行Hash打散并分发到不同的日志流,在一定程度上牺牲了事务的完整性,但大大提升了扩展性,可以解决大规模集群下单流binlog存在的单点瓶颈问题。

CDC 单流形态:

20230324143513.jpg

PolarDB-X CDC单流形态

CDC 多流形态:

20230324143632.jpg

PolarDB-X CDC多流形态

多流binlog提供了3种形式的数据拆分级别,在开通多流服务时可进行设定,满足不同场景下的使用需求。

  • 库级别按照数据库的名字计算Hash值并进行分发,即对应同一个库的binlog数据,会始终按序路由给同一个binlog数据流,适用于单个PolarDB-X实例上数据库比较多的场景,如果事务不涉及跨库操作,该策略下不仅可以具备多流能力,还可以保证事务的完整性。
  • 表级别按照数据表的名字计算Hash值并进行分发,即对应同一张表的binlog数据,会始终按序路由给同一个binlog数据流,适用于表的数量较多且希望针对单张表的操作(如DML、DDL等)在binlog日志流中保持有序的场景。
  • 记录级别按照数据行的主键计算Hash值并进行分发,即对应同一数据行的binlog数据,会始终按序路由给同一个binlog数据流,适用于希望将数据充分打散且不要求日志数据按库或按表保持有序的场景,该策略要求数据表必须含有主键,无主键表的数据会被直接丢弃。

使用例子:

# 查看binlog多流stream列表
SHOW BINARY STREAMS;
返回例子:
+--------+-----------------+-------------------------------+----------+
| GROUP  | STREAM          | FILE                          | POSITION |
+--------+-----------------+-------------------------------+----------+
| group1 | group1_stream_0 | group1_stream_0#binlog.000001 |  3625148 |
| group1 | group1_stream_1 | group1_stream_1#binlog.000001 |  3625148 |
| group1 | group1_stream_2 | group1_stream_2#binlog.000001 |  3625148 |
| group1 | group1_stream_3 | group1_stream_3#binlog.000001 |  3625148 |
+--------+-----------------+-------------------------------+----------+

MySQL相关指令体验:

#不加WITH子句,可查看单流服务的global binlog文件列表。
# 添加WITH子句,可查看多流服务的某个流下面的binlog文件列表。参数stream_name表示某个流的名称
SHOW MASTER STATUS [WITH stream_name]
SHOW BINLOG EVENTS [WITH stream_name]
SHOW BINARY LOGS [WITH stream_name];
## 单流返回的例子
+---------------+-----------+
| LOG_NAME      | FILE_SIZE |
+---------------+-----------+
| binlog.000001 |         4 |
+---------------+-----------+
## 多流返回的例子
+-------------------------------+-----------+
| LOG_NAME                      | FILE_SIZE |
+-------------------------------+-----------+
| group1_stream_0#binlog.000001 |   3626808 |
+-------------------------------+-----------+

PolarDB-X CDC引入多流形态,可以在满足binlog兼容性的同时,结合业务场景提升分布式增量日志变更的吞吐量。同时CDC多流形态,为了更好的兼容现有binlog开源生态,联合alibaba canal提供了多流兼容消费的能力,参考PR:add support for polardbx multi binlog streams #4660

canal使用例子:

# canal一键拉起PolarDB-X的多流binlog
sh run.sh -e canal.auto.scan=false
-e canal.instance.master.address=pxc-xxxx.polarx.xxxx.rds.aliyuncs.com:3306
-e canal.instance.dbUsername=tpcc
-e canal.instance.dbPassword=xxxx
-e canal.instance.connectionCharset=UTF-8
-e canal.instance.tsdb.enable=true
-e canal.instance.gtidon=false
-e canal.instance.multi.stream.on=false
-e canal.destinations.expr=group1_stream_{0-7}

参考文档:

  1. CDC单流性能解读,Sysbench 30w QPS / TPC-C 100w tpmC下,增量数据延迟时间 < 1秒
  2. CDC高可用架构解读,可以在各种故障形态下,满足RTO在20~45秒内
  3. CDC多流形态,以及 如何创建CDC节点

03 基于时间点的恢复(point-in-time recovery, PITR)

PolarDB-X 2.2.0的版本中,我们正式提供了静态的全量备份集恢复能力,通过 PolarDB-X Buckup工具 (基于XtraBuckup改造而来) ,我们基于DN的物理备份的方式,结合分布式并行提升备份吞吐量,备份速度可达到GB/s,同时提供了分布式下的一致备份集。

在阿里云数据库服务用户过程中,经常会遇到用户误删数据后期望通过备份恢复的方式找回数据,对于基于时间点的恢复有比较强的诉求。因此,PolarDB-X 2.2.1开源版本中,我们提供了日志增量备份 + 基于时间点的恢复的完整能力,满足用户数据库安全性的需求。

大致的工作原理:

20230324143802.jpg

PolarDB-X 指定时间点恢复的工作原理图

说明:

  1. 全量备份集,指定调度规则进行定期全量备份,参考文档:PolarDB-X 备份调度
0 2 * * 1,4 周一和周四的2点发起备份
  1. 增量日志备份,准实时备份增量的日志数据,备份的实时性决定了数据可恢复的最近时间点,参考文档:PolarDB-X 增量日志备份
  2. 发起指定时间点恢复(PITR),找到恢复时间点最近的一个全量备份集,再从增量备份中找到全量备份集时间点和恢复时间点之间的增量日志,执行一个全量+增量的物理恢复,参考文档:PolarDB-X 指定时间点恢复

使用的例子:

apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
  name: polardb-x-clone   # 恢复出的集群名字
spec:
  topology: # 集群规格
    nodes:
      cn:
        template:
          image: polardbx/polardbx-sql:latest
      dn:
        template:
          image: polardbx/polardbx-engine:latest
  restore: # 指定集群的创建方式是恢复
    from:
      clusterName: polardb-x        # 源PolarDB-X 集群名称
    time: "2023-03-24T11:11:11Z"    # 恢复的时间点

04 MySQL一键导入PolarDB-X

开源MySQL的主备复制协议,主要支持增量日志的同步和消费,在MySQL 8.0开始在内核中新增了Clone Plugin,全量通过物理文件拷贝,结合增量日志的同步和消费提供了clone实例的效果。

PolarDB-X作为分布式数据库,在物理数据分布和文件格式上和开源MySQL略有差异,为了方便用户体验类似MySQL 8.0的Clone Plugin的效果,PolarDB-X 2.2.1提供了类似Clone Plugin的一键导入能力,通过一条DDL指令,可以对存量MySQL进行表结构迁移、存量数据的全量迁移,最后保持一个持续的增量数据同步

工作原理:

20230324143901.jpg

PolarDB-X 一键导入工作原理

使用例子:

// 配置MySQL与PolarDB-X的复制关系
CHANGE MASTER TO
    MASTER_HOST='10.0.0.1',
    MASTER_USER='root',
    MASTER_PASSWORD='xxxxxx',
    MASTER_PORT=3306,
    MASTER_LOG_FILE='mysql_bin.000001',
    MASTER_LOG_POS='58050130',
    SOURCE_HOST_TYPE=mysql, 
    Mode='IMAGE'; // 指定mode为image镜像复制模式
// 设置需要同步的库表,不配置就是默认整个实例
CHANGE REPLICATION FILTER REPLICATE_DO_DB=(tpcc);
// 开启任务
START SLAVE;
// 查看任务
SHOW SLAVE STATUS \G

整个操作体验,最大化的兼容了MySQL DBA的运维体验,基于常见的主备复制管理方式可以很方便的实现单机MySQL到PolarDB-X分布式的一键迁移,如果考虑数据割接后的回滚链路,可以反向配置PolarDB-X到MySQL的主备复制链路。

参考文档:PolarDB-X 一键导入


版本说明

梳理下PolarDB-X 开源脉络:

  • 2021年10月,在云栖大会上,阿里云正式对外开源了云原生分布式数据库PolarDB-X,采用全内核开源的模式,开源内容包含计算引擎、存储引擎、日志引擎、Kube等。
  • 2022年1月,PolarDB-X 正式发布 2.0.0 版本,继 2021 年 10 月 20 号云栖大会正式开源后的第一次版本更新,更新内容包括新增集群扩缩容、以及binlog生态兼容等特性,兼容 maxwell 和 debezium 增量日志订阅,以及新增其他众多新特性和修复若干问题。
  • 2022年3月,PolarDB-X 正式发布 2.1.0 版本,包含了四大核心特性,全面提升 PolarDB-X 稳定性和生态兼容性,其中包含基于Paxos的三副本共识协议
  • 2022年5月,PolarDB-X正式发布2.1.1 版本,重点推出冷热数据新特性,可以支持业务表的数据按照数据特性分别存储在不同的存储介质上,比如将冷数据存储到Aliyun OSS对象存储上。
  • 2022年10月,PolarDB-X 正式发布2.2.0版本,这是一个重要的里程碑版本,重点推出符合分布式数据库金融标准下的企业级和国产ARM适配,共包括八大核心特性,全面提升 PolarDB-X 分布式数据库在金融、通讯、政务等行业的普适性。

2023年3月,PolarDB-X 正式发布2.2.1版本,在分布式数据库金融标准能力基础上,重点加强了生产级关键能力,全面提升PolarDB-X面向数据库生产环境的易用性和安全性,比如:提供数据快速导入、性能测试验证、生产部署建议等。


更详细的ChangeLog

PolarDB-X 各组件的开源地址,欢迎访问github

  Github 仓库名称 仓库地址
总项目 polardbx https://github.com/polardb/polardbx
计算节点 polardbx-sql https://github.com/polardb/polardbx-sql
存储节点 polardbx-engine https://github.com/polardb/polardbx-engine
日志节点 polardbx-cdc https://github.com/polardb/polardbx-cdc
k8s operator 组件 polardbx-operator https://github.com/polardb/polardbx-operator
rpc 组件 polardbx-glue https://github.com/polardb/polardbx-glue
备份工具 polardbx-backup https://github.com/polardb/polardbx-backup
常用工具 polardbx-tools https://github.com/polardb/polardbx-tools
文档 polardbx-operator-docs https://github.com/polardb/polardbx-operator-docs


结尾

PolarDB-X 是由阿里自主研发的原生MySQL分布式数据库,坚持以全内核开源的方式,保持开源的持续迭代。本次发布V2.2.1的升级版本,重点加强了生产级关键能力,全面提升PolarDB-X面向数据库生产环境的易用性和安全性。期望PolarDB-X未来能作为国内原生MySQL分布式数据库的开源领导者,持续做好开源!


本文来源:PolarDB-X知乎号

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
19天前
|
数据库
|
1月前
|
存储 关系型数据库 分布式数据库
使用开源PolarDB和imgsmlr进行高效的图片存储和相似度搜索
使用开源PolarDB和imgsmlr进行高效的图片存储和相似度搜索
|
1月前
|
SQL JSON 关系型数据库
MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
【10月更文挑战第3天】MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
137 5
|
1月前
|
关系型数据库 分布式数据库 数据库
PolarDB 开源:推动数据库技术新变革
在数字化时代,数据成为核心资产,数据库的性能和可靠性至关重要。阿里云的PolarDB作为新一代云原生数据库,凭借卓越性能和创新技术脱颖而出。其开源不仅让开发者深入了解内部架构,还促进了数据库生态共建,提升了稳定性与可靠性。PolarDB采用云原生架构,支持快速弹性扩展和高并发访问,具备强大的事务处理能力及数据一致性保证,并且与多种应用无缝兼容。开源PolarDB为国内数据库产业注入新活力,打破国外垄断,推动国产数据库崛起,降低企业成本与风险。未来,PolarDB将在生态建设中持续壮大,助力企业数字化转型。
85 2
|
2月前
惊世骇俗!开源 PolarDB-X 部署安装大冒险,全程心跳与惊喜不断!
【9月更文挑战第8天】作为技术爱好者的我,近期成功完成了开源 PolarDB-X 的部署安装。尽管过程中遇到不少挑战,但通过精心准备环境、下载安装包、配置参数及启动服务等步骤,最终顺利实现部署。本文将详细介绍部署全过程及可能遇到的问题,为您的 PolarDB-X 探索之旅提供参考与启发,希望能让大家在技术海洋里畅游得更加顺利!
151 2
|
2月前
|
关系型数据库 MySQL 分布式数据库
PolarDB开源社区动态:最新版本功能亮点与更新解读
【9月更文挑战第6天】随着云计算技术的发展,分布式数据库系统成为企业数据处理的核心。阿里云的云原生数据库PolarDB自开源以来备受关注,近日发布的最新版本在内核稳定性、性能、分布式CDC架构及基于时间点的恢复等方面均有显著提升,并新增了MySQL一键导入功能。本文将解读这些新特性并提供示例代码,帮助企业更好地利用PolarDB处理实时数据同步和离线分析任务,提升数据安全性。未来,PolarDB将继续创新,为企业提供更高效的数据处理服务。
176 3
|
1月前
|
关系型数据库 MySQL 分布式数据库
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶,邀请好友完成更有机会获得​小米Watch S3、小米体重称​等诸多好礼!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
|
2月前
|
关系型数据库 MySQL Serverless
探索PolarDB MySQL版:Serverless数据库的灵活性与性能
本文介绍了个人开发者对阿里云PolarDB MySQL版,特别是其Serverless特性的详细评测体验。评测涵盖了产品初体验、性能观测、Serverless特性深度评测及成本效益分析等方面。尽管试用过程中遇到一些小问题,但总体而言,PolarDB MySQL版表现出色,提供了高性能、高可用性和灵活的资源管理,是个人开发者和企业用户的优秀选择。
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 与传统数据库的性能对比分析
【8月更文第27天】随着云计算技术的发展,越来越多的企业开始将数据管理和存储迁移到云端。阿里云的 PolarDB 作为一款兼容 MySQL 和 PostgreSQL 的关系型数据库服务,提供了高性能、高可用和弹性伸缩的能力。本文将从不同角度对比 PolarDB 与本地部署的传统数据库(如 MySQL、PostgreSQL)在性能上的差异。
233 1
|
17天前
|
关系型数据库 分布式数据库 数据库
锦鲤附体 | PolarDB数据库创新设计赛,好礼不停!
锦鲤附体 | PolarDB数据库创新设计赛,好礼不停!

相关产品

  • 云原生数据库 PolarDB