在centos7上用PXD方式部署PolarDB-X集群步骤

来源:这里教程网 时间:2026-03-01 16:15:54 作者:

一.环境描述: 四台机器: test1   192.168.1.1   test2   192.168.1.2   test3   192.168.1.3 test4   192.168.1.4  其中: 192.168.1.1/2/3为GMS 192.168.1.2/3/4为CN 192.168.1.1/2/3为DN 192.168.1.1/2/4为CDC 二.centos关闭防火墙和SELINUX安全策略: 停止防火墙: # systemctl stop firewalld.service 禁止开机启动 # systemctl disable firewalld 关闭selinux安全策略: 修改/etc/selinux/config文件, 将SELINUX=enforcing修改为SELINUX=disabled # setenforce  0 # vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: #     enforcing - SELinux security policy is enforced. #     permissive - SELinux prints warnings instead of enforcing. #     disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three values: #     targeted - Targeted processes are protected, #     minimum - Modification of targeted policy. Only selected processes are protected. #     mls - Multi Level Security protection. SELINUXTYPE=targeted  #  getenforce Permissive 二.安装docker20.10版本 备注: 集群模式下,docker engine 版本需要大于等于18.04 --删除以前的低版本docker(如果存在): # yum remove -y docker \                   docker-client \                   docker-client-latest \                   docker-common \                   docker-latest \                   docker-latest-logrotate \                   docker-logrotate \                   docker-engine       # yum-config-manager --enable docker-ce-nightly # yum-config-manager --enable docker-ce-test 添加阿里云yum源: # sudo yum-config-manager \     --add-repo \   http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo    # yum makecache fast 安装DOCKER引擎: # yum install -y docker-ce docker-ce-cli containerd.io 启动Docker: # systemctl start docker 设置开机自动启动docker: # systemctl enable docker 设置docker镜像加速器: # mkdir -p /etc/docker # tee /etc/docker/daemon.json <<-'EOF'   {     "registry-mirrors": ["https://7z4jy2c8.mirror.aliyuncs.com"]   } EOF # systemctl daemon-reload # systemctl restart docker 查看docker版本: # docker version Client: Docker Engine - Community  Version:           20.10.12  API version:       1.41  Go version:        go1.16.12  Git commit:        e91ed57  Built:             Mon Dec 13 11:45:41 2021  OS/Arch:           linux/amd64  Context:           default  Experimental:      true Server: Docker Engine - Community  Engine:   Version:          20.10.12   API version:      1.41 (minimum version 1.12)   Go version:       go1.16.12   Git commit:       459d0df   Built:            Mon Dec 13 11:44:05 2021   OS/Arch:          linux/amd64   Experimental:     false  containerd:   Version:          1.4.12   GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d  runc:   Version:          1.0.2   GitCommit:        v1.0.2-0-g52b36a2  docker-init:   Version:          0.19.0   GitCommit:        de40ad0     # docker --version Docker version 20.10.12, build e91ed57 三.集群机器建配置免密登录 # 生成密钥对 (需要在每台机器上执行) ssh-keygen -t rsa # 复制免登公钥到目标机器,修改user和ip((需要在每台机器上执行) ssh-copy-id root@{ip} 例如: ssh-copy-id root@test1 ssh-copy-id root@test2 ssh-copy-id root@test3 ssh-copy-id root@test4 ssh免密登录测试: # ssh test1 # ssh test2 # ssh test3 # ssh test4 确认彼此互联都不需要密码 四.安装MySQL客户端: #  yum install -y mysql mysql-devel 三. 在部署机上安装 PXD .配置阿里的yum源: 1、备份原来的yum源 # mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak  2、安装wget工具 # yum install wget 3、设置aliyun的yum源 # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  4、添加EPEL源 EPEL(http://fedoraproject.org/wiki/EPEL)是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上 EPEL后,可以像在 Fedora 上一样,可以通过 yum install package-name,安装更多软件。 # wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo  5、清理缓存并生成新的缓存 # yum clean all   # yum makecache    # yum update -y 准备工作 1.安装 Python3 # yum install -y python3 创建一个 Python3 的 virtual environment 环境并激活 # python3 -m venv venv # source venv/bin/activate 安装 PXD 安装前建议先执行如下命令升级pip # pip install --upgrade pip # pip --version pip 21.3.1 from /root/venv/lib64/python3.6/site-packages/pip (python 3.6) 执行如下命令安装 pxd: # pip install pxd 执行命令显示如下: # pip install pxd Collecting pxd   Downloading pxd-0.2.2-py3-none-any.whl (55 kB)      |████████████████████████████████| 55 kB 4.2 kB/s             Collecting six==1.16.0   Downloading six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting urllib3==1.26.6   Downloading urllib3-1.26.6-py2.py3-none-any.whl (138 kB)      |████████████████████████████████| 138 kB 17 kB/s             Collecting websocket-client==1.2.1   Downloading websocket_client-1.2.1-py2.py3-none-any.whl (52 kB)      |████████████████████████████████| 52 kB 48 kB/s             Collecting humanfriendly==10.0   Downloading humanfriendly-10.0-py2.py3-none-any.whl (86 kB)      |████████████████████████████████| 86 kB 23 kB/s             Collecting idna==3.2   Downloading idna-3.2-py3-none-any.whl (59 kB)      |████████████████████████████████| 59 kB 11 kB/s              Collecting docker==5.0.0   Downloading docker-5.0.0-py2.py3-none-any.whl (146 kB)      |████████████████████████████████| 146 kB 12 kB/s   ................................................................. ................................................................. ................................................................. ................................................................. ................................................................. Collecting pycparser   Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)      |████████████████████████████████| 118 kB 17 kB/s             Using legacy 'setup.py install' for retrying, since package 'wheel' is not installed. Using legacy 'setup.py install' for spurplus, since package 'wheel' is not installed. Using legacy 'setup.py install' for icontract, since package 'wheel' is not installed. Using legacy 'setup.py install' for temppathlib, since package 'wheel' is not installed. Installing collected packages: pycparser, six, cffi, pynacl, cryptography, bcrypt, zipp, urllib3, typing-extensions, paramiko, idna, charset-normalizer, certifi, asttokens, websocket-client, temppathlib, spur, requests, importlib-metadata, icontract, spurplus, retrying, PyYAML, PyMySQL, pycryptodomex, humanfriendly, docker, colorama, click, pxd     Running setup.py install for temppathlib ... done     Running setup.py install for icontract ... done     Running setup.py install for spurplus ... done     Running setup.py install for retrying ... done Successfully installed PyMySQL-1.0.2 PyYAML-5.4.1 asttokens-2.0.5 bcrypt-3.2.0 certifi-2021.5.30 cffi-1.15.0 charset-normalizer-2.0.4 click-8.0.1 colorama-0.4.4 cryptography-36.0.1 docker-5.0.0 humanfriendly-10.0 icontract-2.6.0 idna-3.2 importlib-metadata-4.8.3 paramiko-2.9.1 pxd-0.2.2 pycparser-2.21 pycryptodomex-3.10.1 pynacl-1.4.0 requests-2.26.0 retrying-1.3.3 six-1.16.0 spur-0.3.20 spurplus-2.3.4 temppathlib-1.1.0 typing-extensions-4.0.1 urllib3-1.26.6 websocket-client-1.2.1 zipp-3.6.0 准备 PolarDB-X 拓扑文件 编写如下的 YAML 文件polardbx.yaml,指定 PolarDB-X 集群的名称以及 GMS, CN,DN 的部署节点。 共有4台机器192.168.1.4、192.168.1.1、10.168.3.166、192.168.1.3 192.168.1.4,部署gms、cdc节点 192.168.1.1、10.168.3.166,部署cn/dn各两个节点。其中dn下的 host_group 表示一个dn节点多副本的部署机器,比如Paxos三副本的话需要填入三个ip。目前仅支持单副本模式,host_group 中填1个ip即可 # vi polardbx.yaml version: v1 type: polardbx cluster:   name: pxd   gms:     image: polardbx/galaxyengine:latest     host_group: [10.168.3.22]     host_group: [10.168.3.165]     host_group: [10.168.3.166]   cn:     image: polardbx/galaxysql:latest     replica: 3     nodes:       - host: 192.168.1.4       - host: 192.168.1.2       - host: 192.168.1.3     resources:       mem_limit: 2G   dn:     image: polardbx/galaxyengine:latest     replica: 3     nodes:       - host_group: [10.168.3.165]       - host_group: [10.168.3.166]       - host_group: [10.168.3.167]     resources:       mem_limit: 2G   cdc:     image: polardbx/galaxycdc:latest     replica: 3     nodes:       - host: 192.168.1.4       - host: 192.168.1.1       - host: 192.168.1.2     resources:       mem_limit: 2G    通过以上拓扑文件创建的 PolarDB-X 集群,拓扑文件包括如下属性: version: 拓扑文件版本,无需修改 type: polardbx, 无需修改 cluster.name:PolarDB-X 集群名称 cluster.gms.image: gms docker 镜像名称,可不填。默认为最新镜像 cluster.gms.host_group: gms 机器 ip 列表,目前仅支持1台机器单副本模式,列表中填写1个ip即可 cluster.cn image: 计算节点镜像名称,可不填,默认为最新镜像 replica: 计算节点数目,需要与nodes中的host数量对应 nodes: 计算节点的ip列表 resources: 计算节点使用的资源 mem_limit: 内存上限,默认 2G cluster.dn image: 数据节点镜像名称,可不填,默认为最新镜像 replica: 数据节点数目,需要与nodes中的 host_group 数量对应 nodes: 存储节点的host_group列表,一个 host_group 表示一个dn节点多副本的部署机器,比如Paxos三副本的话需要填入三个ip。目前仅支持单副本模式,host_group 中填1个ip即可 resources: 存储节点使用的资源 mem_limit: 内存上限,默认 2G cluster.cdc image: CDC 节点镜像名称,可不填,默认为最新镜像 replica: CDC 节点数目,需要与nodes中的host数量对应 nodes: CDC 节点的ip列表 resources: CDC 节点使用的资源 mem_limit: 内存上限,默认 2G 创建 PolarDB-X 集群 执行如下命令,即可在集群内一键部署 PolarDB-X: # pxd create -file polardbx.yaml 部署完成后,pxd 会输出 PolarDB-X 集群的连接方式,通过 MySQL 命令行即可登录 PolarDB-X 数据库进行测试。 备注:执行该create命令之前,需要确认其他机器的docker服务已正常启动,用如下命令确认: # 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 Mon 2021-12-27 23:10:18 PST; 7s ago 状态为active,说明已启动. create pxd输出例子: # pxd create -file polardbx.yaml  /root/venv/lib/python3.6/site-packages/deployer yaml file: polardbx.yaml /root/venv/lib64/python3.6/site-packages/deployer/pxc/polardbx_manager.py:73: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.   data = yaml.load(stream) Processing  [------------------------------------]    0%    pre check Processing  [###---------------------------------]    8%    generate topology Processing  [######------------------------------]   16%    pull images Pull image: polardbx/galaxysql:latest at 192.168.1.3 latest:Pulling from polardbx/galaxysql  Digest: sha256:38d187996c22c3da33512b55e0eecabd5a2f4b509e4e7106a0e5ed8081fb354b Status: Image is up to date for polardbx/galaxysql:latest Pull image: polardbx/galaxyengine:latest at 192.168.1.3 ................................................................................ latest:Pulling from polardbx/galaxyengine  Digest: sha256:492b901453af500ac205705dc7fe042ad0dc3e7856049540eb398572093bd1f1 Status: Image is up to date for polardbx/galaxyengine:latest Pull image: polardbx/galaxycdc:latest at 192.168.1.3 latest:Pulling from polardbx/galaxycdc  Digest: sha256:20458720a9ca7112fdbc37c789446dce512c77cbe2b6e11c0b72e51a43fdc831 Status: Image is up to date for polardbx/galaxycdc:latest Pull image: polardbx/polardbx-init:latest at 192.168.1.3 latest:Pulling from polardbx/polardbx-init  Digest: sha256:41d4f23930d5bce8d176944a784b6b40c79d97b7faf5423d2077a1ba526b7b8c Status: Image is up to date for polardbx/polardbx-init:latest Pull image: polardbx/xstore-tools:latest at 192.168.1.3 ......................................................................................... ......................................................................................... ......................................................................................... ......................................................................................... 12a7f5a1cc39:Download complete  5a07c0e531bd:Pull complete  12a7f5a1cc39:Extracting [==================================================>]     747B/747B 12a7f5a1cc39:Extracting [==================================================>]     747B/747B 12a7f5a1cc39:Pull complete  a051415d8576:Downloading [==================================================>]     212B/212B a051415d8576:Verifying Checksum  a051415d8576:Download complete  a051415d8576:Extracting [==================================================>]     212B/212B a051415d8576:Extracting [==================================================>]     212B/212B a051415d8576:Pull complete  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 -h192.168.1.4 -P4627 -upolardbx_root -pdAhmWJfL     mysql -h192.168.1.2 -P6730 -upolardbx_root -pdAhmWJfL     mysql -h192.168.1.3 -P11377 -upolardbx_root -pdAhmWJfL 连接PXD并创建用户:  mysql -h192.168.1.4 -P4627 -upolardbx_root -pdAhmWJfL MySQL [(none)]> CREATE USER root@'%' identified by '123456'; Query OK, 0 rows affected (0.07 sec) MySQL [(none)]> grant all on *.* to  root@'%'; Query OK, 0 rows affected (0.03 sec) MySQL [(none)]> select version(); +----------------------------+ | VERSION()                  | +----------------------------+ | 5.6.29-PXC-5.4.12-20211018 | +----------------------------+ 1 row in set (0.00 sec) 用root用户登录: #  mysql -h192.168.1.2 -P6730 -uroot -p123456 MySQL [(none)]> select version(); +----------------------------+ | VERSION()                  | +----------------------------+ | 5.6.29-PXC-5.4.12-20211018 | +----------------------------+ 1 row in set (0.00 sec) # 检查GMS  MySQL>select * from information_schema.schemata; # 创建分区表 MySQL>create database polarx_example partition_mode='partitioning'; MySQL>use polarx_example; MySQL>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; MySQL>insert into example values(null,'lily',375),(null,'lisa',400),(null,'ljh',500); MySQL>select * from example; MySQL>show topology from example; # 检查CDC MySQL>show master status ; MySQL>show binlog events in 'binlog.000001' from 4; # 检查DN和CN MySQL>show storage ;   MySQL>show mpp ; 查看 PolarDB-X 集群状态 执行如下命令查看 PolarDB-X 集群状态: # pxd list PXD list 结果 执行如下命令可以查看 pxd 的更多指令及用法: # pxd --help

相关推荐