欢迎光临
我们一直在努力

PolarDB-X 企业版分布式集群部署文档

目录

  • PolarDB-X 企业版分布式集群部署文档
    • 快速连接
      • 快速连接命令
    • 集群信息
      • 集群状态
      • Pod 列表
      • 服务列表
      • 镜像版本
    • 安装步骤
      • 1. 安装 Helm
      • 2. 创建命名空间
      • 3. 添加 Helm 仓库并安装 Operator
      • 4. 获取最新镜像版本
      • 5. 创建集群配置文件
      • 6. 部署集群
      • 7. 监控部署进度
      • 8. 获取连接密码
    • 集群架构
      • 架构图
      • 组件说明
    • 连接方式
      • 方式1: kubectl port-forward (推荐)
      • 方式2: 集群内连接
      • 方式3: 使用内部 Service
      • 方式4: 直接连接 DN (只读)
    • 快速命令参考
      • 集群状态查看
      • 日志查看
      • 进入容器
      • Pod 名称速查
    • 分布式特性验证
      • 分区表创建与测试
      • 广播表测试
      • 单表测试
      • CDC 验证
      • 事务测试
    • 故障排查
      • Pod 启动失败
      • 镜像拉取慢
      • 连接问题
      • 常见错误
    • 卸载步骤
    • 参考资料
      • 官方文档
      • 开源资源
      • 社区文章
    • 版本信息

PolarDB-X 企业版分布式集群部署文档

部署日期: 2026-01-22 部署环境: x.148 (K8s v1.24.10) 节点列表: qfusion1, qfusion2, qfusion3, qfusion4



快速连接

项目值
主机 x.148
Cluster IP 246.101.203.189
端口 3306
用户 polardbx_root
密码 nf9xwvc2
版本 8.0.32-X-Cluster-8.4.19-20250825

快速连接命令

# SSH 到 148
ssh x.148

# 端口转发(在新终端执行)
kubectl port-forward svc/polardbx-demo 3306

# MySQL 连接
mysql -h127.0.0.1 -P3306 -upolardbx_root -pnf9xwvc2


集群信息

集群状态

组件数量规格状态
GMS (全局元服务) 1 (3副本Paxos) 2C/4Gi ✅ 1/1
CN (计算节点) 2 2C/4Gi × 2 ✅ 2/2
DN (数据节点) 2 2C/4Gi × 2 ✅ 2/2
CDC (变更数据捕获) 1 2C/4Gi ✅ 1/1
总 Pods 12 ✅ 全部 Running

架构

Pod 列表

# GMS (3副本 Paxos)
polardbx-demo-t8ms-gms-cand-0 (qfusion3)
polardbx-demo-t8ms-gms-cand-1 (qfusion4)
polardbx-demo-t8ms-gms-log-0 (qfusion2)

# DN-0 (3副本)
polardbx-demo-t8ms-dn-0-cand-0 (qfusion4)
polardbx-demo-t8ms-dn-0-cand-1 (qfusion2)
polardbx-demo-t8ms-dn-0-log-0 (qfusion1)

# DN-1 (3副本)
polardbx-demo-t8ms-dn-1-cand-0 (qfusion1)
polardbx-demo-t8ms-dn-1-cand-1 (qfusion3)
polardbx-demo-t8ms-dn-1-log-0 (qfusion4)

# CN (2个计算节点)
polardbx-demo-t8ms-cn-default-84c4845fdc-5fgz8
polardbx-demo-t8ms-cn-default-84c4845fdc-qhm9f

# CDC
polardbx-demo-t8ms-cdc-default-7b8f4bc45-snp74

服务列表

服务类型IP端口
polardbx-demo ClusterIP 246.101.203.189 3306, 8081
polardbx-demo-cdc-metrics NodePort 246.102.74.247 8081:31583
polardbx-demo-t8ms-gms ClusterIP 246.99.125.212 3306, 31306
polardbx-demo-t8ms-dn-0 ClusterIP 246.104.56.99 3306, 31306
polardbx-demo-t8ms-dn-1 ClusterIP 246.98.191.21 3306, 31306

镜像版本

组件镜像
CN polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19
DN/GMS polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19
CDC polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19

安装步骤

1. 安装 Helm

ssh x.148

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

# 验证
helm version
# 输出: version.BuildInfo{Version:"v3.19.5", …}

2. 创建命名空间

kubectl create namespace polardbx-operator-system

3. 添加 Helm 仓库并安装 Operator

# 添加仓库
helm repo add polardbx https://polardbx-charts.oss-cn-beijing.aliyuncs.com

# 安装 Operator
helm install –namespace polardbx-operator-system polardbx-operator polardbx/polardbx-operator

# 验证 Operator 状态
kubectl get pods -n polardbx-operator-system

Operator 组件:

  • polardbx-clinic
  • polardbx-controller-manager
  • polardbx-hpfs (多个副本)
  • polardbx-tools-updater (多个副本)

4. 获取最新镜像版本

curl -s "https://polardbx-opensource.oss-cn-hangzhou.aliyuncs.com/scripts/get-version.sh" | sh

输出:

CN polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19
DN polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19
CDC polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19

5. 创建集群配置文件

cat > /tmp/polardbx-enterprise.yaml << 'EOF'
apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
name: polardbx-demo
namespace: default
spec:
topology:
nodes:
gms:
template:
image: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 2
memory: 4Gi
cn:
replicas: 2
template:
image: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 2
memory: 4Gi
dn:
replicas: 2
template:
image: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 2
memory: 4Gi
cdc:
replicas: 1
template:
image: polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 2
memory: 4Gi
EOF

6. 部署集群

kubectl apply -f /tmp/polardbx-enterprise.yaml

7. 监控部署进度

# 实时监控集群状态
kubectl get polardbxcluster -w

# 查看 Pods 状态
kubectl get pods | grep polardbx-demo

# 查看详细信息
kubectl get polardbxcluster -o wide

部署时间约 25-30 分钟(镜像拉取需要时间)

8. 获取连接密码

eval pxc=polardbx-demo
eval user=$(kubectl get secret $pxc -o jsonpath='{.data}' | grep -o '"[^"]*"' | head -1 | tr -d '"')
echo "User: $user"
kubectl get secret $pxc -o jsonpath="{.data['$user']}" | base64 -d – | xargs echo "Password:"

输出:

User: polardbx_root
Password: nf9xwvc2


集群架构

PolarDB-X 企业版采用分布式架构,主要组件包括:

架构图

┌─────────────────────────────────────────────────────────────┐
│ PolarDB-X 集群 │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ CN Node 1 │ │ CN Node 2 │ ← 计算节点 (无状态) │
│ │ (SQL解析) │ │ (SQL执行) │ │
│ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │
│ └────────┬─────────┘ │
│ ▼ │
│ ┌──────────────────────────────────┐ │
│ │ GMS Cluster │ ← 全局元服务 │
│ │ (cand-0, cand-1, log-0) │ (3副本 Paxos) │
│ └──────────────────────────────────┘ │
│ │ │
│ ┌────────┴────────┐ │
│ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ DN Group 0 │ │ DN Group 1 │ ← 数据节点 │
│ │ (cand-0/1) │ │ (cand-0/1) │ (各3副本) │
│ │ (log-0) │ │ (log-0) │ │
│ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ │
│ │ CDC │ ← 变更数据捕获 │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘

组件说明

组件全称说明
GMS Global Meta Service 全局元数据服务,采用 Paxos 三副本保证高可用
CN Compute Node 计算节点,负责 SQL 解析和执行,无状态可水平扩展
DN Data Node 数据节点,存储数据,支持多副本同步复制
CDC Change Data Capture 变更数据捕获,提供 Binlog 订阅能力

连接方式

方式1: kubectl port-forward (推荐)

# 在 x.148 上执行端口转发
kubectl port-forward svc/polardbx-demo 3306

# 在本地连接
mysql -h127.0.0.1 -P3306 -upolardbx_root -pnf9xwvc2

方式2: 集群内连接

# SSH 到 148
ssh x.148

# 进入 CN Pod
kubectl exec -it polardbx-demo-t8ms-cn-default-84c4845fdc-5fgz8 — bash

# 连接数据库
mysql -hpolardbx-demo -upolardbx_root -pnf9xwvc2

方式3: 使用内部 Service

# 在集群内的任意 Pod 中连接
mysql -hpolardbx-demo.default.svc.cluster.local -P3306 -upolardbx_root -pnf9xwvc2

方式4: 直接连接 DN (只读)

# 连接 DN-0 只读副本
mysql -hpolardbx-demo-t8ms-dn-0-ro -upolardbx_root -pnf9xwvc2


快速命令参考

集群状态查看

# 查看集群状态
kubectl get polardbxcluster

# 查看所有 Pods
kubectl get pods | grep polardbx-demo

# 查看 Pods 分布
kubectl get pods -o wide | grep polardbx-demo

# 查看服务
kubectl get svc | grep polardbx-demo

# 实时监控
kubectl get polardbxcluster -w

日志查看

# CN 日志
kubectl logs -f polardbx-demo-t8ms-cn-default-84c4845fdc-5fgz8 -c engine

# GMS 日志
kubectl logs -f polardbx-demo-t8ms-gms-cand-0 -c engine

# DN 日志
kubectl logs -f polardbx-demo-t8ms-dn-0-cand-0 -c engine

# CDC 日志
kubectl logs -f polardbx-demo-t8ms-cdc-default-7b8f4bc45-snp74 -c engine

进入容器

# CN 容器
kubectl exec -it polardbx-demo-t8ms-cn-default-84c4845fdc-5fgz8 -c engine — bash

# GMS 容器
kubectl exec -it polardbx-demo-t8ms-gms-cand-0 -c engine — bash

# DN 容器
kubectl exec -it polardbx-demo-t8ms-dn-0-cand-0 -c engine — bash

Pod 名称速查

组件Pod 名称
GMS cand-0 polardbx-demo-t8ms-gms-cand-0
GMS cand-1 polardbx-demo-t8ms-gms-cand-1
GMS log-0 polardbx-demo-t8ms-gms-log-0
DN-0 cand-0 polardbx-demo-t8ms-dn-0-cand-0
DN-0 cand-1 polardbx-demo-t8ms-dn-0-cand-1
DN-0 log-0 polardbx-demo-t8ms-dn-0-log-0
DN-1 cand-0 polardbx-demo-t8ms-dn-1-cand-0
DN-1 cand-1 polardbx-demo-t8ms-dn-1-cand-1
DN-1 log-0 polardbx-demo-t8ms-dn-1-log-0
CN-1 polardbx-demo-t8ms-cn-default-84c4845fdc-5fgz8
CN-2 polardbx-demo-t8ms-cn-default-84c4845fdc-qhm9f
CDC polardbx-demo-t8ms-cdc-default-7b8f4bc45-snp74

分布式特性验证

分区表创建与测试

— 查看版本
SELECT version();
— 输出: 8.0.32-X-Cluster-8.4.19-20250825

— 创建分区库
CREATE DATABASE test_db PARTITION_MODE='partitioning';
USE test_db;

— 创建分区表 (自动分片到2个DN)
CREATE TABLE test_table (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) PARTITION BY HASH(id) PARTITIONS 8;

— 插入测试数据
INSERT INTO test_table (name) VALUES ('test1'), ('test2'), ('test3');
INSERT INTO test_table (name) VALUES ('data1'), ('data2'), ('data3');

— 查看数据
SELECT * FROM test_table;

— 查看表拓扑分布 (数据分布在哪些DN)
SHOW TOPOLOGY FROM test_table;

— 查看存储节点信息
SHOW STORAGE;

— 查看CN节点信息
SHOW MPP;

— 查看所有数据库
SHOW DATABASES;

— 查看表信息
SHOW TABLES;
SHOW FULL TABLES;

— 查看建表语句
SHOW CREATE TABLE test_table;

广播表测试

— 广播表会在每个DN都存储全量数据
CREATE TABLE broadcast_table (
id INT PRIMARY KEY,
name VARCHAR(100)
) BROADCAST;

INSERT INTO broadcast_table VALUES (1, 'config1'), (2, 'config2');

— 查看拓扑,可以看到在所有DN上都有数据
SHOW TOPOLOGY FROM broadcast_table;

单表测试

— 单表只存储在单个DN上
CREATE TABLE single_table (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
data VARCHAR(255)
) SINGLE;

INSERT INTO single_table (data) VALUES ('single data');

SHOW TOPOLOGY FROM single_table;

CDC 验证

— 查看 Binlog 状态
SHOW MASTER STATUS;

— 查看 Binlog 事件
SHOW BINLOG EVENTS IN 'binlog.000001' FROM 4;

— 查看 Binlog 文件列表
SHOW BINARY LOGS;

事务测试

— 测试分布式事务
BEGIN;
INSERT INTO test_table (name) VALUES ('trans1');
INSERT INTO test_table (name) VALUES ('trans2');
COMMIT;

— 查询验证
SELECT * FROM test_table WHERE name IN ('trans1', 'trans2');


故障排查

Pod 启动失败

# 查看 Pod 状态
kubectl get pods | grep polardbx-demo

# 查看 Pod 详情
kubectl describe pod <pod-name>

# 查看容器日志
kubectl logs <pod-name> -c engine
kubectl logs <pod-name> -c exporter
kubectl logs <pod-name> -c prober

镜像拉取慢

# 在各个节点上预拉取镜像
docker pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-engine:v2.4.2_8.4.19
docker pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-sql:v2.4.2_5.4.19
docker pull polardbx-opensource-registry.cn-beijing.cr.aliyuncs.com/polardbx/polardbx-cdc:v2.4.2_5.4.19

连接问题

# 检查服务状态
kubectl get svc polardbx-demo

# 检查 endpoints
kubectl get endpoints polardbx-demo

# 测试端口转发
kubectl port-forward svc/polardbx-demo 3306

# 进入 Pod 测试内部连接
kubectl exec -it polardbx-demo-t8ms-cn-default-84c4845fdc-5fgz8 — bash
mysql -hpolardbx-demo -upolardbx_root -pnf9xwvc2

常见错误

错误原因解决方法
ImagePullBackOff 镜像拉取失败 检查网络,手动拉取镜像
CrashLoopBackOff 容器启动失败 查看日志,检查资源配置
0/3 Ready 容器未就绪 等待启动或查看启动日志

卸载步骤

# SSH 到 148
ssh x.148

# 1. 删除集群
kubectl delete polardbxcluster polardbx-demo

# 2. 等待 pods 删除完成
kubectl get pods | grep polardbx-demo

# 3. 删除 Operator (可选)
helm uninstall –namespace polardbx-operator-system polardbx-operator

# 4. 删除 CRD (可选,谨慎操作)
kubectl delete crds polardbxclusters.polardbx.aliyun.com xstores.polardbx.aliyun.com

# 5. 删除命名空间 (可选)
kubectl delete namespace polardbx-operator-system


参考资料

官方文档

  • PolarDB-X 官方网站
  • PolarDB-X 产品文档
  • K8S 快速开始
  • PXD 部署文档

开源资源

  • PolarDB-X GitHub
  • PolarDB-X Operator GitHub
  • PolarDB-X Charts

社区文章

  • K8S 部署阿里云PolarDB-X 集群教程
  • PolarDB 2026 开发者大会总结

版本信息

组件版本
PolarDB-X 8.0.32-X-Cluster-8.4.19-20250825
CN Image v2.4.2_5.4.19
DN/GMS Image v2.4.2_8.4.19
CDC Image v2.4.2_5.4.19
K8s v1.24.10
Helm v3.19.5

赞(0)
未经允许不得转载:171主机测评 » PolarDB-X 企业版分布式集群部署文档
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址