ITPub博客

首页 > 数据库 > MySQL > 在centos7上用PXD方式部署PolarDB-X集群步骤

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

原创 MySQL 作者:chenfeng 时间:2021-12-28 16:16:12 0 删除 编辑

一.环境描述:

四台机器:

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


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15498/viewspace-2849755/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: dble运维命令汇总
请登录后发表评论 登录
全部评论
交流MySQL,PolarDB/PolarDB-X,PostgreSQL,MongoDB和Redis技术。

注册时间:2015-12-07

  • 博文量
    784
  • 访问量
    2689158