共计 4479 个字符,预计需要花费 12 分钟才能阅读完成。
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 的备库实时同步数据。
- 轻量化部署功能完善
PolarDB-X Operator 是一个基于 Kubernetes 的 PolarDB-X 集群管控零碎,心愿能在原生 Kubernetes 上提供残缺的生命周期治理能力,满足用户的轻量化部署。在 PolarDB-X 2.1.0 版本咱们进一步欠缺了局部运维能力,比方提供 Prometheus + Grafana 的监控零碎、欠缺分布式节点升降配、扩缩容、版本升级等能力。
- 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/…