安装PXC集群软件包
PXC实验环境说明
系统使用CentOS7.6以上,关闭***,关闭selinux,配好ip,配好网络yum源 环境说明如下
Node Host IP Addr Descprition
Node1 xuegod63.cn 192.168.1.63/24 集群节点1
Node2 xuegod64.cn 192.168.1.64/24 集群节点2
Node3 xuegod62.cn 192.168.1.62/24 集群节点3
说明
Percona XtrDB Cluster 属于 Multi-master Replication(多主复制)。
多主复制意味着支持对任意节点的读写,数据会同步复制到其他节点。
确认每个集群节点的机器名并关闭***
以 xuegod63.cn为例,其他服务器的主机名改为 xuegod64.cn, xuegod62.cn 。
[root@xuegod63 ~]# hostname
xuegod63.cn
关闭***:
[root@xuegod63 ~]# systemctl disable firwalld && iptables -F
[root@xuegod64 ~]# systemctl disable firwalld && iptables -F
[root@xuegod62 ~]# systemctl disable firwalld && iptables -F
每个节点安装PXC集群软件包
方法1:离线包,方式安装PXC集群 上传qpress和Percona-XtraDB-Cluster-8.0.23-rd3b9a1d-el7-x86_64-bundle.tar到xuegod63 (1)、在xuegod63上安装pxc集群软件包:
[root@xuegod63 ~]# rpm -ivh qpress-11-1.el7.x86_64.rpm #先rpm安装qpress
[root@xuegod63 ~]# tar xvf Percona-XtraDB-Cluster-8.0.23-rd3b9a1d-el7-x86_64-bundle.tar #解压包
注:主要安装percona-xtradb-cluster-server 这个mysql服务
[root@xuegod63 ~]# yum -y install percona*.rpm
(2)、在xuegod64上安装pxc集群软件包
[root@xuegod63 ~]# scp qpress-11-1.el7.x86_64.rpm percona-xtradb-cluster-* 192.168.1.64:/root/
[root@xuegod64 ~]# rpm -ivh qpress-11-1.el7.x86_64.rpm #先rpm安装qpress
[root@xuegod64 ~]# yum -y install percona*.rpm
(3)、在xuegod62上安装pxc集群软件包
[root@xuegod63 ~]# scp qpress-11-1.el7.x86_64.rpm percona-xtradb-cluster-* 192.168.1.64:/root/
[root@xuegod62 ~]# rpm -ivh qpress-11-1.el7.x86_64.rpm #先rpm安装qpress
[root@xuegod62 ~]# yum -y install percona*.rpm
扩展:方法2:在线方式安装PXC集群,从Percona 仓库在线安装 配置 yum 源如下,以 xuegod63 为例,其他 xuegod64, xuegod62 相同
[root@xuegod63 ~]# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y
之后设置 pxc80 仓库
[root@xuegod63 ~]# percona-release setup pxc80 #增加PXC-8.0t版本的仓库地址
[root@xuegod63 yum.repos.d]# ls /etc/yum.repos.d/ #查看增加的pxc yum源
centos7.repo CentOS-fasttrack.repo percona-original-release.repo.bak
CentOS-Base.repo CentOS-Media.repo percona-prel-release.repo
CentOS-CR.repo CentOS-Sources.repo percona-pxc-80-release.repo
CentOS-Debuginfo.repo CentOS-Vault.repo percona-tools-release.repo
安装 Percona XtraDB Cluster
[root@xuegod63 ~]# sudo yum install percona-xtradb-cluster -y #一般网络会很慢,在线安装会失败
修改percona-xtradb-cluster-server数据库root密码
三个节点都安装完软件包之后,接下来只对第一个节点 xuegod63进行修改密码操作。
[root@xuegod63 ~]# systemctl start mysqld #先启动 Percona XtraDB Cluster 服务。
查看MySQL 安装时自动生成的 root 的临时密码
[root@xuegod63 ~]# grep 'temporary password' /var/log/mysqld.log
2021-09-22T09:35:03.585604Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 7Epyww)a4n?d
使用临时密码登录 MySQL
[root@xuegod63 ~]# mysql -u root -p'7Epyww)a4n?d'
更改 root 用户的密码,之后退出。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> exit
关闭 MySQL 服务。
[root@xuegod63 ~]# sudo systemctl stop mysqld
注意:以上修改密码操作只在第一个节点进行即可。配置好第二个和第三个节点,启动服务操作后会复制到其他节点中。xuegod62和xuegod64上的mysql服务,现在不需要启动
配置PXC集群第1个节点
配置第一个节点 xuegod63 的 /etc/my.cnf
[root@xuegod63 ~]# vim /etc/my.cnf #修改以下红色标记内容
# Template my.cnf for PXC
# Edit to your requirements.
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
server-id=1
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# Binary log expiration period is 604800 seconds, which equals 7 days
binlog_expire_logs_seconds=604800
######## wsrep ###############
# Path to Galera library
wsrep_provider=/usr/lib64/galera4/libgalera_smm.so
# Cluster connection URL contains IPs of nodes
#If no IP is found, this implies that a new cluster needs to be created,
#in order to do that you need to bootstrap this node
wsrep_cluster_address=gcomm://192.168.1.63,192.168.1.64,192.168.1.62
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# Slave thread to use
wsrep_slave_threads=8
wsrep_log_conflicts
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node IP address
wsrep_node_address=192.168.1.63
# Cluster name
wsrep_cluster_name=pxc-cluster
#If wsrep_node_name is not specified, then system hostname will be used
wsrep_node_name=xuegod63.cn
#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING
# SST method
wsrep_sst_method=xtrabackup-v2
pxc-encrypt-cluster-traffic=OFF
my.cnf增加的参数说明:
# 集群通讯地址
wsrep_cluster_address=gcomm://192.168.1.63,192.168.1.64,192.168.1.62
# 本节点的地址
wsrep_node_address=192.168.1.63
# 本节点的名称
wsrep_node_name= xuegod63
# 关闭加密
pxc-encrypt-cluster-traffic=OFF
注意本例使用 pxc-encrypt-cluster-traffic=OFF 关闭了传输加密,参考 Encrypting PXC Traffic这些内容也同样对 xuegod64, xuegod62 进行配置,只有两个参 wsrep_node_name, wsrep_node_address
配置的值需要修改一下
对于 xuegod64 内容改为
[root@xuegod63 ~]# scp /etc/my.cnf 192.168.1.64:/etc/
[root@xuegod64 ~]# vim /etc/my.cnf #修改以下内容
wsrep_node_address=192.168.1.64
wsrep_node_name= xuegod64.cn
对于 xuegod62 内容为
[root@xuegod63 ~]# scp /etc/my.cnf 192.168.1.62:/etc/
[root@xuegod62 ~]# vim /etc/my.cnf #修改以下内容
wsrep_node_name= xuegod62.cn
wsrep_node_address=192.168.1.62
展:主配置文件my.cnf其他参数说明
wsrep_provider #指定 Galera 库的路径。
wsrep_cluster_name #指定集群的逻辑名称,集群内的所有节点,这个名称必须一致。
wsrep_cluster_address #指定集群内节点的 IP 地址,建议将集群节点都配上。
wsrep_node_name #指定单个节点的逻辑名称,如果没有指定,将使用 hostname 作为逻辑名称。
wsrep_node_address #指定此特定节点的 IP 地址。
wsrep_sst_method #默认的使用 Percona Xtrabackup 进行 State Snapshot Transfer (SST),强烈建议使用 wsrep_sst_method=xtrabackup-v2
binlog_format #Galera 只支持 row-level replication,默认设置为 binlog_format=ROW。
innodb_autoinc_lock_mode #Galera 只支持 lock mode 为 2 的 InnoDB 引擎,默认设置为 innodb_autoinc_lock_mode=2。
引导PXC集群启动并将其他节点加到集群中
在第一个节点上引导PXC集群启动
在第一个节点 xuegod63 使用如下命令引导PXC集群启动
[root@xuegod63 ~]# systemctl start mysql@bootstrap
使用 bootstrap 模式启动mysql数据库,会根据 wsrep_cluster_address=gcomm://192.168.1.63,192.168.1.64,192.168.1.62
初始化集群。
为确保初始化完成,可以使用如下命令查看
登录 MySQL
[root@xuegod63 ~]# mysql -u root -p123456
mysql> show status like 'wsrep%';
+----------------------------------+-----------------------------------------------+
| Variable_name | Value |
+----------------------------------+-----------------------------------------------+
| wsrep_local_state_uuid | 77007d05-777b-11e9-9836-4649f12 |
| ... | ... |
| ... | ... |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| ... | ... |
| ... | ... |
| wsrep_cluster_size | 1 |
| ... | ... |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| wsrep_ready | ON |
+----------------------------------+-----------------------------------------------+
71 rows in set (0.01 sec)
可以看到集群数量是 1,本节点为 Synced 状态,表示连接成功,并且准备好进行 write-set replication。
注意:所有其他节点的数据和配置都会被第一个节点的数据覆盖 不要同时加入多个节点,避免数据或网络开销过大。等一个结点加入成功后,再加入另一个新结点。
启动第二个节点
[root@xuegod64 ~]# systemctl start mysqld
启动完成后,xuegod64 会接到 xuegod63 的数据,可以使用如下命令查看状态
[root@xuegod64 ~]# mysql -u root -p123456
登录到 MySQL 后,输入如下命令
mysql> show status like 'wsrep%';
+----------------------------------+--------------------------------------+
| Variable_name | Value |
+----------------------------------+--------------------------------------+
| wsrep_local_state_uuid | 33e1e8eb-777b-11e9-b16f-9f9d75d90117 |
| ... | ... |
| ... | ... |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| ... | ... |
| ... | ... |
| wsrep_cluster_size | 2 |
| ... | ... |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| ... | ... |
| ... | ... |
| wsrep_ready | ON |
+----------------------------------+--------------------------------------+
可以看到 wsrep_cluster_size
的值是 2 表示集群已经有 2 个节点了。
wsrep_local_state_comment
的值是 Synced 表示已经同步了。
注意 如果 wsrep_local_state_comment
的状态是 Joiner,表示正在同步,请不要启动第三个节点的服务。
启动第三个节点
注意:确认好第二个节点的状态为 Synced 后,再启动第三个节点。 步骤与启动第二个节点相同
[root@xuegod62 ~]# systemctl start mysqld
启动完成后,xuegod62 会接到集群,可以使用如下命令查看状态
[root@xuegod62 ~]# mysql -u root -p
登录到 MySQL 后,输入如下命令
+----------------------------------+--------------------------------------+
| Variable_name | Value |
+----------------------------------+--------------------------------------+
| wsrep_local_state_uuid | 33e1e8eb-777b-11e9-b16f-9f9d75d90117 |
| ... | ... |
| ... | ... |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| ... | ... |
| ... | ... |
| wsrep_cluster_size | 3 |
| ... | ... |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| ... | ... |
| ... | ... |
| wsrep_ready | ON |
+----------------------------------+--------------------------------------+
71 rows in set (0.00 sec)
可以看到集群数量是 3,连接没有问题。
今天分享导出结束,想要了解更多的话看下方的哦