# 1. 介绍
在部署之前可以参考PolarDB-X的文档地址:https://doc.polardbx.com (opens new window)
在正式部署前先来了解一下系统架构,PolarDB-X 采用 Shared-nothing 与存储计算分离架构进行设计,系统由4个核心组件组成。
# 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
2
这种方式默认副本都是 1
,就是一个 CN
,DN
,CDC
,GMS
。如果需要多副本的话,就使用 pxd
,k8s
# 2.1 安装 PXD
注意: 推荐使用 virtual environment 安装 PXD 工具
python3 -m venv venv
source venv/bin/activate
2
安装前建议先执行如下命令升级 pip
pip install --upgrade pip
执行如下命令安装 pxd:
pip install pxd
注: 部分国内用户从 pypi 下载包的速度较慢, 可以使用如下命令从阿里云的镜像安装:
pip install -i https://mirrors.aliyun.com/pypi/simple/ pxd
# 2.2 部署 PolarDB-X
- 直接运行 pxd tryout 命令会创建一个最新版本的 PolarDB-X 数据库,其中 GMS, CN, DN, CDC 节点各 1 个:
pxd tryout
- 您也可以指定 CN,DN, CDC 节点的个数以及版本,命令如下:
pxd tryout -cn_replica 1 -cn_version latest -dn_replica 1 -dn_version latest -cdc_replica 1 -cdc_version latest
PolarDB-X 数据库创建完成后,会输出对应的连接信息:
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
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 ;
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
# 2.4 清理 PolarDB-X
执行如下命令,即可清理本地环境所有的 PolarDB-X:
pxd cleanup
以上就是用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
2
如果你使用其他账号,请和上面一样将它加入 docker 组中,以确保它能够直接访问 docker。
使用 su 切换到账号 galaxykube,
$ su galaxykube
执行下面的命令启动一个 minikube,
minikube start --cpus 4 --memory 7960 --image-mirror-country cn --registry-mirror=https://docker.mirrors.ustc.edu.cn
注:这里我们使用了阿里云的 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'.
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 集群
安装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
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
2
3
4
5
首先创建一个叫 polardbx-operator-system 的命名空间,
$ kubectl create namespace polardbx-operator-system
执行以下命令安装 PolarDB-X Operator。
$ helm install --namespace polardbx-operator-system polardbx-operator https://github.com/ApsaraDB/galaxy
查看 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
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 -
2
3
4
5
6
你将看到以下输出:
polardbxcluster.polardbx.aliyun.com/quick-start created
使用如下命令查看创建状态:
$ 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
2
3
4
5
6
当 PHASE 显示为 Running 时,PolarDB-X 集群已经部署完成!恭喜你,现在可以开始连接并体验 PolarDB-X 分布式数据库了!