架构简介
PolarDB-X 采用 Shared-nothing 与存储分离计算架构进行设计,系统由 4 个核心组件组成。
计算节点(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 协议的主从复制能力。
开源地址:[https://github.com/ApsaraDB/g...]
版本说明
我们也选择了今天给大家一份诚意满满的礼物:PolarDB-X 正式发布 2.1.0 版本本次开源包含四大核心特性,全面提升 PolarDB-X 稳定性和生态兼容性
- 高可用的开源能力补齐
分布式一致性算法(Consensus Algorithm )是一个分布式计算领域的基础性问题,其最基本的功能是为了在多个进程之间对某个(某些) 值达成一致(强一致),进而解决分布式系统的可用性能问(高可用),近几年 NewSQL 和云原生数据库的不断兴起,极大的推动了关系数据库和一致性协议的结合,常见的技术有 Paxos 和 Raft。
2022 年 4 月 1 号,PolarDB-X 正式开源 X-Paxos,基于原生 MySQL 存储节点,提供 Paxos 三副本共识协议,可以做到金融级数据库的高可用和容灾能力,做到 RPO=0 的生产级别可用性,可以满足同城三机房、两地三中心等容灾架构。
Paxos 协议对于面向云的架构是非常必要的,云的本质是虚拟化和资源池化,节点的变化和弹性是一个常规操作,我们需要解决面向用户透明运维的能力,任何情况下数据都不能丢、不能错。
下面一个例子演示基于 kubernetes(k8s)虚拟化,结合 Paxos 的高可用切换提供 RPO=0
https://www.zhihu.com/zvideo/...
- 分布式水平扩展能力升级
PolarDB-X 作为一款基于 MySQL 原生分布式,除了提供基于 Paxos RPO=0 的金融级容灾能力外,最重要的特性就是分布式的水平扩展,在 PolarDB-X 2.1.0 版本正式推出新版数据分区表,提供 Auto 分区模式。
Auto 模式的数据库支持自动分区,即创建表时无需指定分区键,数据即可自动在集群内均匀分布;同时也支持使用标准的 MySQL 分区表语法,对表进行手动分区。结合新版分区表能力,新增支持热点分裂、TTL(Time To Live)分区、Locality 亲和性调度等能力,可以让您便捷地享受到分布式数据库的透明式分布、弹性伸缩和分区管理等诸多红利。
具体细节可参考文档:AUTO模式数据库
基于新版分区表,可扩展提供分布式热力分析能力,样例效果图
- 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 的监控系统、完善分布式节点升降配、扩缩容、版本升级等能力。
更详细的 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 集群监控信息