1.PolarDB-X 是一款面向超高并发、海量存储、复杂查询场景设计的云原生分布式数据库系统。
2.PolarDB-X采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,具备企业级、云原生、高可用、高度兼容 MySQL 系统及生态等特点。
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 等提高系统可用性。
PolarDB-X 的目标是完全兼容 MySQL ,目前兼容的内容包括 MySQL 协议、MySQL 大部分语法、Collation、事务隔离级别、Binlog 等。

计算节点是系统的入口,采用无状态设计,包括 SQL 解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务 2PC 协调、全局二级索引维护等,同时提供 SQL 限流、三权分立等企业级特性。
存储节点负责数据的持久化,基于多数派 Paxos 协议提供数据高可靠、强一致保障,同时通过 MVCC 维护分布式事务可见性。
元数据服务负责维护全局强一致的 Table/Schema, Statistics 等系统 Meta 信息,维护账号、权限等安全信息,同时提供全局授时服务(即 TSO)。
日志节点提供完全兼容 MySQL Binlog 格式和协议的增量订阅能力,提供兼容 MySQL Replication 协议的主从复制能力。
| hostname | IP地址 | 角色 | 系统版本 | docker版本 |
|---|---|---|---|---|
| node01 | 192.168.3.80 | gms、cdc节点 | centos7.6 | 20.10.18 |
| node02 | 192.168.3.81 | cn/dn节点 | centos7.6 | 20.10.18 |
| node03 | 192.168.3.82 | cn/dn节点 | centos7.6 | 20.10.18 |
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl start docker && systemctl enable docker
echo '{
"registry-mirrors": ["https://sp4mg57h.mirror.aliyuncs.com"] }' > /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker
[root@node01 yum.repos.d]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2022-10-09 15:43:11 CST; 44s ago
Docs: https://docs.docker.com
Main PID: 13698 (dockerd)
Tasks: 9
Memory: 27.7M
CGroup: /system.slice/docker.service
└─13698 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Oct 09 15:43:10 node01 dockerd[13698]: time="2022-10-09T15:43:10.354711367+08:00" level=info msg="ccResolverWrapper: sending update to cc: {
[{
unix...dule=grpc
Oct 09 15:43:10 node01 dockerd[13698]: time="2022-10-09T15:43:10.354721851+08:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
Oct 09 15:43:10 node01 dockerd[13698]: time="2022-10-09T15:43:10.370117834+08:00" level=info msg="[graphdriver] using prior storage driver: overlay2"
Oct 09 15:43:10 node01 dockerd[13698]: time="2022-10-09T15:43:10.559156869+08:00" level=info msg="Loading containers: start."
Oct 09 15:43:10 node01 dockerd[13698]: time="2022-10-09T15:43:10.984797715+08:00" level=info msg="Default bridge (docker0) is assigned with an IP ... address"
Oct 09 15:43:11 node01 dockerd[13698]: time="2022-10-09T15:43:11.043510603+08:00" level=info msg="Loading containers: done."
Oct 09 15:43:11 node01 dockerd[13698]: time="2022-10-09T15:43:11.307372551+08:00" level=info msg="Docker daemon" commit=e42327a graphdriver(s)=ove...=20.10.18
Oct 09 15:43:11 node01 dockerd[13698]: time="2022-10-09T15:43:11.307446499+08:00" level=info msg="Daemon has completed initialization"
Oct 09 15:43:11 node01 systemd[1]: Started Docker Application Container Engine.
Oct 09 15:43:<