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亲和性调度等能力,能够让您便捷地享受到分布式数据库的通明式散布、弹性伸缩和分区治理等诸多红利。

具体细节可参考文档:AUTO模式数据库。

基于新版分区表,可扩大提供分布式热力剖析能力,样例效果图

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的备库实时同步数据。

  1. 轻量化部署功能完善

PolarDB-X Operator 是一个基于 Kubernetes 的 PolarDB-X 集群管控零碎,心愿能在原生 Kubernetes 上提供残缺的生命周期治理能力,满足用户的轻量化部署。在PolarDB-X 2.1.0版本咱们进一步欠缺了局部运维能力,比方提供Prometheus + Grafana 的监控零碎、欠缺分布式节点升降配、扩缩容、版本升级等能力。

  1. OSS冷热数据拆散

TTL(time-to-live)

如何将冷数据从InnoDB行存中剥离进去?这是一个令很多开发者头疼的问题。如果应用delete from 语句 + where条件的模式来删除冷数据,很可能会因为扫描行数太多、数据太过扩散,而造成锁表,影响整个数据库实例的拜访;如果提前依照工夫进行分区,再一一将旧工夫分区drop掉,则许多不适宜依照工夫分区的表将会大刀阔斧。

针对用户反馈的这一理论问题,PolarDB-X 引入了TTL(time-to-live)这一新个性来帮忙用户实现冷热数据剥离。用户无需手动保护,而是通过提前指定起始工夫、分区大小和过期工夫等信息,来实现数据的主动过期。咱们在更底部的存储层将每张物理表做进一步的通明分区,数据依照最近的更新工夫被集中到一起。

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

对于TTL的具体应用,能够参考官网文档:什么是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)

Sysbench 性能测试
规格:
●压测ECS:1 * 8C32G
●CN:6 * 16C128G
●Sysbench表行数: 1亿
●并发数:100
sysbench性能测试数据如下:

一键迁徙

实现了冷热数据剥离后,如何将数据疾速归档到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/G...
存储层:https://github.com/apsaradb/G...

PolarDB 开源社区介绍

PolarDB 开源社区是阿里云数据库开源产品PolarDB的技术交流平台。作为一款开源的数据库产品,离不开用户和开发者的反对, 大家能够在社区针对PolarDB产品提问题、性能需要、交换应用心得、分享最佳实际、提交issue、奉献代码等。

为了让社区成员能够更不便的交换, 促成数据库行业的倒退, 社区会组织线上和线下的meetup, 举办高校、企业的交流活动, 组织技术类的竞技流动等。欢送宽广的数据库爱好者、用户、开发者退出社区小家庭。

PolarDB-X 开源官网:
https://www.polardbx.com/home

PolarDB-X 开源训练营正在炽热报名中:
https://developer.aliyun.com/...