# 1. 介绍

在部署之前可以参考PolarDB-X的文档地址:https://doc.polardbx.com (opens new window)

在正式部署前先来了解一下系统架构,PolarDB-X 采用 Shared-nothing 与存储计算分离架构进行设计,系统由4个核心组件组成。

image

# 2. PXD部署集群

通过 PXD 工具部署 PolarDB-X 数据库需要先安装 Python3 和 Docker。

快速入门:

docker run -d --name some-polardb-x -p 8527:8527 polardbx/polardb-x
mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456
1
2

这种方式默认副本都是 1,就是一个 CN,DN,CDC,GMS。如果需要多副本的话,就使用 pxdk8s

# 2.1 安装 PXD

注意: 推荐使用 virtual environment 安装 PXD 工具

python3 -m venv venv
source venv/bin/activate
1
2

安装前建议先执行如下命令升级 pip

pip install --upgrade pip 
1

执行如下命令安装 pxd:

pip install pxd 
1

注: 部分国内用户从 pypi 下载包的速度较慢, 可以使用如下命令从阿里云的镜像安装:

pip install -i https://mirrors.aliyun.com/pypi/simple/ pxd
1

# 2.2 部署 PolarDB-X

  • 直接运行 pxd tryout 命令会创建一个最新版本的 PolarDB-X 数据库,其中 GMS, CN, DN, CDC 节点各 1 个:
 pxd tryout 
1
  • 您也可以指定 CN,DN, CDC 节点的个数以及版本,命令如下:
 pxd tryout -cn_replica 1 -cn_version latest -dn_replica 1 -dn_version latest -cdc_replica 1 -cdc_version latest 
1

PolarDB-X 数据库创建完成后,会输出对应的连接信息:

image-20220619155545546

image-20220619155638777

Digest: sha256:5c0b19954c18fd2347eee46dffd82c4babf7e57b2e405d8b4ccb4d5a647c19a7
Status: Downloaded newer image for polardbx/xstore-tools:latest
Processing  [#########---------------------------]   25%    create gms node
Processing  [############------------------------]   33%    create gms db and tables
Processing  [###############---------------------]   41%    create PolarDB-X root account
Processing  [##################------------------]   50%    create dn
Processing  [#####################---------------]   58%    register dn to gms
Processing  [########################------------]   66%    create cn
Processing  [###########################---------]   75%    wait cn ready
Processing  [##############################------]   83%    create cdc containers
Processing  [#################################---]   91%    wait PolarDB-X ready
Processing  [####################################]  100%


PolarDB-X cluster create successfully, you can try it out now.
Connect PolarDB-X using the following command:

    mysql -h127.0.0.1 -P5555 -upolardbx_root -pKEauoiBo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

注意:PolarDB-X 管理员账号的密码随机生成,仅出现这一次,请注意保存。

通过 MySQL Client 即可连接,执行如下 SQL 初步体验 PolarDB-X 的分布式特性。

# 检查GMS 
select * from information_schema.schemata;

# 创建分区表
create database polarx_example partition_mode='partitioning';
use polarx_example;
create table example (
  `id` bigint(11) auto_increment NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `score` bigint(11) DEFAULT NULL,
  primary key (`id`)
) engine=InnoDB default charset=utf8 
partition by hash(id) 
partitions 8;
insert into example values(null,'lily',375),(null,'lisa',400),(null,'ljh',500);
select * from example;
show topology from example;

# 检查CDC
show master status ;
show binlog events in 'binlog.000001' from 4;

# 检查DN和CN
show storage ;  
show mpp ;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 2.3 查看 PolarDB-X 状态

执行如下命令,查看当前环境的 PolarDB-X 列表:

pxd list 
1

# 2.4 清理 PolarDB-X

执行如下命令,即可清理本地环境所有的 PolarDB-X:

pxd cleanup 
1

以上就是用PXD在本地部署PolarDB-X 集群的过程。

# 3. 通过 K8S 部署

# 3.1 minikube

minikube (opens new window) 是由社区维护的用于快速创建 Kubernetes 测试集群的工具,适合测试和学习 Kubernetes。使用 minikube 创建的 Kubernetes 集群可以运行在容器或是虚拟机中,本节中以 CentOS 8.2 上创建 Kubernetes 为例。

注:如在其他操作系统例如 macOS 或 Windows 上部署 minikube,部分步骤可能略有不同。

部署前,请确保已经安装 minikube 和 Docker,并符合以下要求:

  • 机器规格不小于 4c8g
  • minikube >= 1.18.0
  • docker >= 1.19.3

minikube 要求使用非 root 账号进行部署,如果你是用 root 账号访问机器,需要新建一个账号。

$ useradd -ms /bin/bash galaxykube 
$ usermod -aG docker galaxykube
1
2

如果你使用其他账号,请和上面一样将它加入 docker 组中,以确保它能够直接访问 docker。

使用 su 切换到账号 galaxykube,

$ su galaxykube 
1

执行下面的命令启动一个 minikube,

minikube start --cpus 4 --memory 7960 --image-mirror-country cn --registry-mirror=https://docker.mirrors.ustc.edu.cn 
1

注:这里我们使用了阿里云的 minikube 镜像源以及 USTC 提供的 docker 镜像源来加速镜像的拉取。

此时 minikube 已经正常运行。minikube 将自动设置 kubectl 的配置文件,如果之前已经安装过 kubectl,现在可以使用 kubectl 来访问集群:

$ kubectl cluster-info
kubectl cluster-info
Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
1
2
3
4
5

注意:minikube kubectl 子命令需要在 kubectl 的参数前加 "--",如使用 bash shell 可以用 alias kubectl="minikube kubectl -- " 来设置快捷指令。下文都将使用 kubectl 命令进行操作。

现在我们可以开始部署 PolarDB-X Operator 了!

# 3.2 部署 PolarDB-X Operator

开始之前,请确保满足以下前置要求:

  • 已经准备了一个运行中的 Kubernetes 集群,并确保

    • 集群版本 >= 1.18.0
    • 至少有 2 个可分配的 CPU
    • 至少有 4GB 的可分配内存
    • 至少有 30GB 以上的磁盘空间
  • 已经安装了 kubectl 可以访问 Kubernetes 集群

  • 已经安装了 Helm 3 (opens new window)

安装kubectl

curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

# 赋予可执行权限
chmod +x ./kubectl
# 移动到系统目录
mv ./kubectl /usr/local/bin/kubectl

# 或者直接  
yum install kubectl -y
1
2
3
4
5
6
7
8
9

安装Helm3

执行如下命令,下载Helm3。

wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/helm-v3.9.0-linux-amd64.tar.gz
# 解压Helm3
tar -zxvf helm-v3.9.0-linux-amd64.tar.gz
# 移动到系统目录
mv linux-amd64/helm /usr/local/bin/helm
1
2
3
4
5

首先创建一个叫 polardbx-operator-system 的命名空间,

$ kubectl create namespace polardbx-operator-system 
1

执行以下命令安装 PolarDB-X Operator。

$ helm install --namespace polardbx-operator-system polardbx-operator https://github.com/ApsaraDB/galaxy
1

查看 PolarDB-X Operator 组件的运行情况,等待它们都进入 Running 状态:

$ kubectl get pods --namespace polardbx-operator-system
NAME                                           READY   STATUS    RESTARTS   AGE
polardbx-controller-manager-6c858fc5b9-zrhx9   1/1     Running   0          66s
polardbx-hpfs-d44zd                            1/1     Running   0          66s
polardbx-tools-updater-459lc                   1/1     Running   0          66s
1
2
3
4
5

恭喜!PolarDB-X Operator 已经安装完成,现在可以开始部署 PolarDB-X 集群了!

# 3.3 部署 PolarDB-X 集群

现在我们来快速部署一个 PolarDB-X 集群,它包含 1 个 GMS 节点、1 个 CN 节点、1 个 DN 节点和 1 个 CDC 节点。执行以下命令创建一个这样的集群:

echo "apiVersion: polardbx.aliyun.com/v1
kind: PolarDBXCluster
metadata:
  name: quick-start
  annotations:
    polardbx/topology-mode-guide: quick-start" | kubectl apply -f -
1
2
3
4
5
6

你将看到以下输出:

polardbxcluster.polardbx.aliyun.com/quick-start created 
1

使用如下命令查看创建状态:

$ kubectl get polardbxcluster -w
NAME          GMS   CN    DN    CDC   PHASE      DISK   AGE
quick-start   0/1   0/1   0/1   0/1   Creating          35s
quick-start   1/1   0/1   1/1   0/1   Creating          93s
quick-start   1/1   0/1   1/1   1/1   Creating          4m43s
quick-start   1/1   1/1   1/1   1/1   Running    2.4 GiB   4m44s
1
2
3
4
5
6

当 PHASE 显示为 Running 时,PolarDB-X 集群已经部署完成!恭喜你,现在可以开始连接并体验 PolarDB-X 分布式数据库了!

# 参考