文章目录
1、PolarDB-X是什么?
PolarDB-X是由阿里巴巴自主研发的云原生分布式数据库,融合分布式SQL引擎DRDS与分布式自研存储X-DB,基于云原生一体化架构设计,可支撑千万级并发规模及百PB级海量存储。专注解决海量数据存储、超高并发吞吐、大表瓶颈以及复杂计算效率等数据库瓶颈问题,历经各届天猫双十一及阿里云各行业客户业务的考验,助力企业加速完成业务数字化转型。
PolarDB-X核心能力通过标准关系型数据库技术实现,配合完善的管控运维及产品化能力,使其具备稳定可靠、高度可扩展、持续可运维、类传统单机MySQL数据库体验的特点。
PolarDB-X在公共云和专有云环境沉淀打磨多年,历经各届天猫双十一核心交易业务及各行业阿里云客户业务的考验。承载大量用户核心在线业务,横跨互联网、金融支付、教育、通信、公共事业等行业,是阿里巴巴集团内部所有在线核心业务及众多阿里云客户业务接入分布式数据库的事实标准。
2、PolarDB-X架构
核心组件
- 元数据服务(Global Meta Service,GMS),主要提供分布式的元数据,提供全局授时服务(TSO)、维护Table/Schema、Statistic等Meta信息、维护账号、权限等安全信息。
- 计算节点(Compute Node,CN),主要提供分布式SQL引擎,包含核心的优化器和执行器。基于无状态的SQL引擎提供分布式路由和计算,解决分布式事务2PC协调、分布式DDL执行、全局索引维护等。
- 存储节点 (Data Node,DN),主要提供数据存储引擎,基于多数派Paxos共识协议提供高可靠存储、分布式事务的MVCC多版本存储,另外提供计算下推能力满足分布式的计算下推要求(比如Project/Filter/Join/Agg等下推计算),可支持本地盘和共享存储。
- 日志节点(Change Data Capture,CDC),主要提供兼容MySQL生态的主备复制协议,兼容Binlog协议和数据格式、支持主备复制Replication的协议和交互。
如同大多数传统单机关系型数据库,PolarDB-X分为网络层、SQL解析层、优化层、执行层、存储层,其中优化层包含逻辑优化和物理优化,执行层包含单机两阶段执行、单机并行执行和多机并行执行,存储层包含应用了多种传统单机数据库优化和执行技术。
3、PolarDB-X架构优势
-
高可用
经过阿里多年双十一验证的X-DB(X-Paxos共识协议能力),提供数据强一致,保证节点故障切换时RPO=0。另外支持多样化的部署和容灾能力,比如基于Paxos强同步的同城三机房、三地五中心,另外搭配binlog异步复制的两地三中心、异地灾备、异地多活等。尤其在异地长距离传输上,基于Batching & Pipelining 进行网络优化来提升性能。
-
高兼容
PolarDB-X主要兼容MySQL,包括SQL、函数类型等,技术上引入全局时间授时服务,提供全局一致性的分布式事务能力,通过TSO+2PC提供数据库完整的ACID能力,满足分布式下的Read-Committed/Repeatable-Read的隔离级别。同时在分布式事务的基础上,提供全局二级索引能力,通过事务多写保证索引和主表数据强一致的同时,引入基于代价的CBO优化器实现索引选择。除此以外,在元数据和生态对接层面,PolarDB-X基于Online DDL的技术提供了分布式下元数据的一致性。同时硬件层面,兼容主流国产操作系统和芯片认证,比如麒麟、鲲鹏、海光等。
另外在业界主流的分布式数据库里,分布式下的redolog/binlog等数据库变更日志其实一直被厂商所忽视,从关系数据库的发展历史来看,生态和标准对于市场规模化非常重要,PolarDB-X支持全局binlog能力,兼容和拥抱MySQL数据库生态,用户可以将PolarDB-X当做一个MySQL库,采用标准的binlog dump协议获取binlog日志。
-
高扩展
PolarDB-X基于Share-Nothing的架构支持水平扩展,同时支持数据库在线扩缩容能力,在OLTP场景下可支持千万级别的并发、以及PB级别的数据存储规模,同样在OLAP场景下,引入MPP并行查询技术,扩展机器后查询能力可线性提升,满足TPC-H等的复杂报表查询诉求。
-
HTAP
随着移动互联网和Iot设备的普及,数据会产生爆炸式的增长趋势,传统的OLTP和OLAP的解决方案是基于简单的读写分离或者ETL模型,将在线库的数据T+1的方式抽取到数据仓库中进行计算,这种方案存在存储成本高、实时性差、链路和维护成本高等缺陷。PolarDB-X设计中支持OLTP和OLAP的混合负载的能力,可以在一个实例里同时运行TPC-C和TPC-H的benchmark测试,保证AP的查询不影响TP流量的稳定性。核心技术层面,也有所创新,比如我们会在计算层精确识别出TP和AP的流量,结合多副本的特性和多副本的一致性读能力,智能将TP和AP路由到不同的副本上,同时在AP链路上默认开启MPP并行查询技术,从而在满足隔离性的基础上,线性提升AP的查询能力。在存储层上,我们也在完善计算下推能力,未来也会提供高性能列存引擎,实现行列混合的HTAP能力。
-
极速弹性
PolarDB-X结合PolarDB云原生的技术,可以基于PolarDB的共享存储+RDMA网络优化能力,提供秒级备份、极速弹性、以及存储按需扩展的能力。基于共享存储的基础上,结合分布式的多点写入能力,可以在不迁移数据的前提下提供秒级弹性的能力,给到用户完全不一样的弹性体验。
-
开放生态
PolarDB-X全面拥抱和坚定MySQL的开源生态,做到代码完全自主可控的同时满足分布式MySQL的兼容性,架构做到简单开放,只要具备一定MySQL背景的人员即可完成持续运维。除此以外,PolarDB-X和阿里云的数据库生态有完整的闭环对接,支持如DTS/DBS/DMS等,可打通阿里云的整个大生态。
4、PolarDB-X核心特性
-
水平扩展
PolarDB-X 采用 Shared-nothing 架构进行设计,支持多种 Hash 和 Range 数据拆分算法,通过隐式主键拆分和数据分片动态调度,实现系统的透明水平扩展。
-
分布式事务
PolarDB-X 采用 MVCC + TSO 方案及 2PC 协议实现分布式事务。事务满足 ACID 特性,支持 RC/RR 隔离级别,并通过一阶段提交、只读事务、异步提交等优化实现事务的高性能。
-
混合负载
PolarDB-X 通过原生 MPP 能力实现对分析型查询的支持,通过 CPU quota 约束、内存池化、存储资源分离等实现了 OLTP 与 OLAP 流量的强隔离。
-
企业级
PolarDB-X 为企业场景设计了诸多内核能力,例如 SQL 限流、SQL Advisor、TDE、三权分立、Flashback Query 等。
-
云原生
PolarDB-X 在阿里云上有多年的云原生实践,支持通过 K8S Operator 管理集群资源,支持公有云、混合云、专有云等多种形态进行部署,并支持国产化操作系统和芯片。
-
高可用
通过多数派 Paxos 协议实现数据强一致,支持两地三中心、三地五副本等多种容灾方式,同时通过 Table Group、Geo-locality 等提高系统可用性。
-
兼容 MySQL 系统及生态
PolarDB-X 的目标是完全兼容 MySQL ,目前兼容的内容包括 MySQL 协议、MySQL 大部分语法、Collation、事务隔离级别、Binlog 等。
5、PolarDB-X部署
5.1、通过PXD部署集群
1、准备工作
通过 PXD 工具部署 PolarDB-X 数据库需要先安装 Python3 和 Docker。
2、安装 PXD
注意: 推荐使用 virtual environment 安装 PXD 工具
python3 -m venv venv
source venv/bin/activate
安装前建议先执行如下命令升级 pip
pip install --upgrade pip
执行如下命令安装 pxd:
pip install pxd
注: 部分国内用户从 pypi 下载包的速度较慢, 可以使用如下命令从阿里云的镜像安装:
pip install -i https://mirrors.aliyun.com/pypi/simple/ pxd
部署 PolarDB-X
- 直接运行 pxd tryout 命令会创建一个最新版本的 PolarDB-X 数据库,其中 GMS, CN, DN, C