阿里云PolarDB-X迎来开源后首个重大版本升级,新增5大特色功能 原创

程序员sharon
发布于 2022-5-27 16:48
浏览
0收藏

2022 年 5 月 25 日,阿里云开源 PolarDB-X 升级发布新版本!PolarDB-X 从 2009 年开始服务于阿里巴巴电商核心系统, 2015 年开始对外提供商业化服务,并于 2021 年 10 月正式开源。本次发布是开源后首个重大版本升级,重磅推出在稳定性、生态融合以及易用性上有了长足进步的 2.1 版本,该版本在内核能力上首次对齐商业版,新增 X-Paxos、自动分区、OSS 冷热数据分离等诸多重要特性,并在 MySQL 生态融合、K8S 生态融合方向持续迭代。

发布会视频回顾

PolarDB-X 是一款面向超高并发、海量存储、复杂查询场景设计的云原生分布式数据库系统。其采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,具备企业级、云原生、高可用、高度兼容 MySQL 系统及生态等特点。PolarDB-X 最初为解决阿里巴巴天猫 “双十一” 核心交易系统数据库扩展性瓶颈而生,之后伴随阿里云一路成长,是一款经过多种核心业务场景验证的、成熟稳定的数据库系统。

新增功能:

本次开源包含 5 大核心特性,全面提升 PolarDB-X 稳定性和生态兼容性。

01. 高可用的开源能力补齐

分布式一致性算法(Consensus Algorithm )是一个分布式计算领域的基础性问题,其最基本的功能是为了在多个进程之间对某个(某些) 值达成一致(强一致),进而解决分布式系统的可用性能问(高可用),近几年 NewSQL 和云原生数据库的不断兴起,极大的推动了关系数据库和一致性协议的结合,常见的技术有 Paxos 和 Raft。

2022 年 4 月 1 号,PolarDB-X 正式开源 X-Paxos,基于原生 MySQL 存储节点,提供 Paxos 三副本共识协议,可以做到金融级数据库的高可用和容灾能力,做到 RPO=0 的生产级别可用性,可以满足同城三机房、两地三中心等容灾架构。

Paxos 协议对于面向云的架构是非常必要的,云的本质是虚拟化和资源池化,节点的变化和弹性是一个常规操作,我们需要解决面向用户透明运维的能力,任何情况下数据都不能丢、不能错。

02. 分布式水平扩展能力升级

PolarDB-X 作为一款基于 MySQL 原生分布式,除了提供基于 Paxos RPO=0 的金融级容灾能力外,最重要的特性就是分布式的水平扩展,在 PolarDB-X 2.1.0 版本正式推出新版数据分区表,提供 Auto 分区模式。

Auto 模式的数据库支持自动分区,即创建表时无需指定分区键,数据即可自动在集群内均匀分布;同时也支持使用标准的 MySQL 分区表语法,对表进行手动分区。结合新版分区表能力,新增支持热点分裂、TTL (Time To Live) 分区、Locality 亲和性调度等能力,可以让您便捷地享受到分布式数据库的透明式分布、弹性伸缩和分区管理等诸多红利。

具体细节可参考文档:请添加链接描述

基于新版分区表,可扩展提供分布式热力分析能力,样例效果图
阿里云PolarDB-X迎来开源后首个重大版本升级,新增5大特色功能-鸿蒙开发者社区

03. MySQL 生态适配加速

PolarDB-X 架构中有一个特殊的 CDC (Change Data Capture) 组件,其主要用于提供分布式的增量日志获取,作为 MySQL 原生分布式,对应分布式 CDC 在设计上也选择全面兼容 MySQL Binlog,在 PolarDB-X 2.1.0 版本我们又进一步完善了与 MySQL 现有 CDC 生态的适配和兼容。

首先,PolarDB-X CDC 的 binlog 服务,与 canal、maxwell、debezium、Flink CDC 等开源 MySQL binlog 解析组件完成适配认证。其次,PolarDB-X CDC 新增 replica 服务,全面兼容 MySQL Replication 相关协议,通过 MySQL 的 start slave 指令,可以将 PolarDB-X 作为开源 MySQL 的备库实时同步数据。

阿里云PolarDB-X迎来开源后首个重大版本升级,新增5大特色功能-鸿蒙开发者社区

04. 轻量化部署功能完善

PolarDB-X Operator 是一个基于 Kubernetes 的 PolarDB-X 集群管控系统,希望能在原生 Kubernetes 上提供完整的生命周期管理能力,满足用户的轻量化部署。在 PolarDB-X 2.1.0 版本我们进一步完善了部分运维能力,比如提供 Prometheus + Grafana 的监控系统、完善分布式节点升降配、扩缩容、版本升级等能力。

阿里云PolarDB-X迎来开源后首个重大版本升级,新增5大特色功能-鸿蒙开发者社区

05. OSS 冷热数据分离

TTL(time-to-live)

如何将冷数据从 InnoDB 行存中剥离出来?这是一个令很多开发者头疼的问题。如果使用 delete from 语句 + where 条件的形式来删除冷数据,很可能会因为扫描行数太多、数据太过分散,而造成锁表,影响整个数据库实例的访问;如果提前按照时间进行分区,再逐个将旧时间分区 drop 掉,则许多不适合按照时间分区的表将会束手无策。

针对用户反馈的这一实际问题,PolarDB-X 引入了 TTL (time-to-live) 这一新特性来帮助用户完成冷热数据剥离。用户无需手动维护,而是通过提前指定起始时间、分区大小和过期时间等信息,来完成数据的自动过期。我们在更底部的存储层将每张物理表做进一步的透明分区,数据按照最近的更新时间被集中到一起。

例如对于订单表 t_orders,用户按照订单 id 进行哈希分区。引入了 TTL 之后,每个分区被进一步透明划分。旧时间分区(图中的 2022-01 分区)的过期,如同撕掉便利贴一样,在不锁表、不手动分区的情况下完成冷热数据的剥离。

阿里云PolarDB-X迎来开源后首个重大版本升级,新增5大特色功能-鸿蒙开发者社区

关于 TTL 的具体使用,可以参考官网文档:什么是 请添加链接描述

高性能查询

当冷数据从主库中剥离出来,归档至 OSS 存储服务后,我们就得到了一张以 OSS 为存储载体的归档表。它完全兼容 MySQL 数据类型和各种查询方式,在低成本、高可用的前提下,能带来与主表一致的使用体验。 为了满足不同用户对历史数据的查询需要,我们在设计上兼顾了点查和复杂分析型查询。对此我们进行了相应的测评。由于 PolarDB-X on OSS 使用列存,在报表查询中有天然的优势,因此相比于 PolarDB-X on MySQL 行存模式,TPC-H 测试成绩有了大幅提升;1 亿行数据量下的 Sysbench 点查测试也显示,归档表可以满足历史数据的查询要求。 在实现以上功能的过程中,最为关键的设计是文件系统、多级缓存、多级索引与查询裁剪。此外还包括列存索引选择、向量化计算、AGG 加速等,我们都将在后续的文章中详细介绍。

TPC-H 性能测试
规格:
●CPU:6 * 16C
●内存:6 * 128GB
●SF = 100 (TPC-H 100GB)
总耗时约 89s (PolarDB-X on MySQL 总耗时 150s)

阿里云PolarDB-X迎来开源后首个重大版本升级,新增5大特色功能-鸿蒙开发者社区

Sysbench 性能测试
规格:
●压测 ECS:1 * 8C32G
●CN:6 * 16C128G
●Sysbench 表行数: 1 亿
●并发数:100
sysbench 性能测试数据如下:
阿里云PolarDB-X迎来开源后首个重大版本升级,新增5大特色功能-鸿蒙开发者社区

一键迁移

完成了冷热数据剥离后,如何将数据快速归档到 OSS 上呢?我们基于 MySQL 标准语法,提供了非常简易便捷的方式,只需要执行一条建表语句:

CREATE TABLE [oss_table_name] LIKE [innodb_table_name] 
 ENGINE = 'OSS' ARCHIVE_MODE = 'TTL'

执行后,OSS 表将克隆 InnoDB 表的表结构,免去用户对归档表结构的设计;同时,冷数据归档表和源表被绑定起来,源表过期的数据将自动导入到归档表中。此后,用户可以像访问普通表一样,通过 SQL 来完成包括点查、范围查询、复杂分析型查询在内的各种数据访问。

手动强制过期

如果您想要更灵活的过期和归档操作,下列语句可以让您手动过期数据,并将过期数据导入至 OSS 中:

ALTER TABLE [innodb_table_name] EXPIRE LOCAL PARTITION [local_partition_name]

更详细的 Features

 新增 支持创建数据库指定建表模式 (新的分区表模式与老的分库分表模式),默认是分库分表模式
 新增 支持使用 MySQL 分区表语法 创建一级分区的分区表,分区策略包括 Hash/Range/List 等
 新增 支持分区表的动态裁剪能力,包括支持分区列条件的常量折叠、区间合并以及前缀查询裁剪等功能
 新增 支持分区表的 JOIN 计算下推
 新增 提供分区表的分区管理能力,包括分区的添加、删除、分裂、合并与迁移等功能
 新增 提供表组及其他能力(包括表组的创建、删除、变更等),支持分区变更期间 JOIN 计算下推不受影响
 新增 支持全局索引表使用 MySQL 分区表语法并按 Hash/Range/List 等分区策略进行分区
 新增 自动拆分支持使用分区表语法
 新增 拆分变更增加支持分区表
 新增 新分区表 GSI 自动拆分会携带主键,可以处理 GSI 热点问题
 新增 支持实例的缩容
 新增 支持分区表的 TTL 及其管理能力(包括调整 TTL 的初始时间与时间间隔等)
 优化 Check Table 指令,支持校验主表分区、索引表分区与列定义等元数据一致性
 新增 SQL Advisor 支持推荐广播表
 新增 支持 Instant Add Column 功能
 新增 支持 Explain Statistics 拉取优化器优化需要的所有信息
 新增 限制 cbo 的搜索空间,减少复杂查询的优化耗时
 优化 部分 DDL 后台操作的数据校验任务的性能,使 GSI / 扩缩容 DDL 变更操作加速
 新增 支持兼容 MySQL 的 Replica 相关指令
 新增 支持存储节点 PAXOS 三节点集群
 新增 Replica 组件,支持通过 change master … 语法的方式将 PolarDB-X 作为 MySQL Slave 来消费数据
 全局 Binlog 中支持记录 Rows_query_event 类型数据,前置条件:需将 DN 节点 binlog_rows_query_log_events 参数设置为 On
 新增 Flink CDC 接入
 新增 CR PolarDBXMonitor 用来监控 PolarDBXCluster
 新增 Helm Chart polardbx-monitor,包含定制化的 kube-prometheus 和预定义的 Dashboard 用来展示 PolarDB-X 集群监控信息
 PXD 工具支持单副本和三副本两种部署模式

PolarDB-X 源码开放地址

计算层:https://github.com/apsaradb/GalaxySQL
存储层:https://github.com/apsaradb/GalaxyEngine

PolarDB 开源社区介绍

PolarDB 开源社区是阿里云数据库开源产品 PolarDB 的技术交流平台。作为一款开源的数据库产品,离不开用户和开发者的支持,大家可以在社区针对 PolarDB 产品提问题、功能需求、交流使用心得、分享最佳实践、提交 issue、贡献代码等。

为了让社区成员可以更方便的交流,促进数据库行业的发展,社区会组织线上和线下的 meetup, 举办高校、企业的交流活动,组织技术类的竞技活动等。欢迎广大的数据库爱好者、用户、开发者加入社区大家庭。

PolarDB-X开源官网

随着新版本发布,PolarDB-X 第一期训练营也即将开营,你可以深入体验并学习包括以上 Demo 在内的诸多 PolarDB-X 特性,感兴趣的读者可以查看训练营信息

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
收藏
回复
举报
回复
    相关推荐