二进制包方式安装PXC集群
我们今天在 Centos 7 系统上使用二进制包安装 PXC 集群,percona 官网上介绍在 Centos 7 系统上使用 YUM 方式安装 PXC。所以这也是我为什么要写这篇文章的目的。
1.环境信息介绍
版本信息:
| 名称 | 版本 |
|---|---|
| 系统 | CentOS Linux release 7.2.1511 (Core) |
| Percona-XtraDB-Cluster | 5.7.21 |
主机信息:
| 主机名 | IP |
|---|---|
| db-node1 | 192.168.199.230 |
| db-node2 | 192.168.199.231 |
| db-node3 | 192.168.199.131 |
2.安装依赖
# yum install -y perl-DBD-MySQL.x86_64 perl-IO-Socket-SSL.noarch socat.x86_64 nc
# yum install -y percona-xtrabackup-24.x86_64
3.下载 PXC
# wget -P /usr/local/ https://www.percona.com/downloads/Percona-XtraDB-Cluster-57/Percona-XtraDB-Cluster-5.7.21-29.26/binary/tarball/Percona-XtraDB-Cluster-5.7.21-rel20-29.26.1.Linux.x86_64.ssl101.tar.gz
解压并创建软链接:
# tar zxf Percona-XtraDB-Cluster-5.7.21-rel20-29.26.1.Linux.x86_64.ssl101.tar.gz -C /opt/mysql/
# ln -sv /opt/mysql/Percona-XtraDB-Cluster-5.7.21-rel20-29.26.1.Linux.x86_64.ssl101 /usr/local/mysql
4.创建数据库相关目录
# mkdir -pv /data/mysql/mysql3306/{data,logs,tmp}
修改权限:
# chown -R mysql.mysql /usr/local/mysql/
# chown -R mysql.mysql /data
5.初始化数据库
# cd /usr/local/mysql
# ./bin/mysqld --defaults-file=/etc/my.cnf --initialize
初始化后记得根据日志中的初始密码修改 MySQL 数据库的密码;
6.创建 sst 用户
节点的数据库的登陆和 master 节点的用户名密码一致,自动同步。所以其它的节点数据库用户名密码无须重新设置。
也就是说,如上设置,只需要在名义上的 master 节点(如上的 db-node1)上设置权限,其它的节点配置好/etc/my.cnf 后,只需要启动 mysql 就行,权限会自动同步过来。
如上的 db-node2,db-node3 节点,登陆 mysql 的权限是和 db-node1 一样的(即是用 node1 设置的权限登陆)
mysql> grant PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT on *.* to sstuser@'%' identified by 'unixfbi';
mysql> flush privileges;
在 db-node1 节点上创建完 sstuser 后,记得停止 MySQL,后面需要使用 PXC 集群模式启动数据库实例。
7.修改配置文件
第一个节点 db-node1:
# PXC
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://192.168.199.230,192.168.199.231,192.168.199.131
wsrep_node_name=pxc1
wsrep_node_address=192.168.199.230
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:unixfbi
pxc_strict_mode=ENFORCING
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
db-node2 和 db-node3 只需要修改 server-id,wsrep_node_name 以及 wsrep_node_address 这三个参数;
db-node2 配置:
server-id = 2313306
wsrep_node_name=pxc2
wsrep_node_address=192.168.199.231
db-node3 配置:
server-id = 1313306
wsrep_node_name=pxc3
wsrep_node_address=192.168.199.131
8.启动各个节点
首先启动第一个节点:
第一个节点启动需要使用
--wsrep-new-cluster参数
# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --wsrep-new-cluster &
第二、三个节点启动:
# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf &
9.查看集群状态
(1)查看集群成员数量:
root@localhost:mysql3306.sock [(none)]> show global status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.01 sec)
可以看到集群中有 3 个节点
(2)查看集群状态:
关于 PXC 集群,其实我们只需要关注如下参数信息:
root@localhost:mysql3306.sock [(none)]> show status like 'wsrep%';
+----------------------------------+----------------------------------------------------------------+
| Variable_name | Value |
+----------------------------------+----------------------------------------------------------------+
| wsrep_local_state_uuid | 6a66cd5d-2b95-11e8-9d88-8e82fe5f5429 |
| ... | ... |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| ... | ... |
| wsrep_cluster_size | 3 |
| wsrep_cluster_state_uuid | 6a66cd5d-2b95-11e8-9d88-8e82fe5f5429 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| ... | ... |
| wsrep_ready | ON |
下面为全部的状态信息:
如果不感兴趣可以不看这部分内容,重要的状态信息已经在上面展示;
root@localhost:mysql3306.sock [(none)]> show status like 'wsrep%';
+----------------------------------+----------------------------------------------------------------+
| Variable_name | Value |
+----------------------------------+----------------------------------------------------------------+
| wsrep_local_state_uuid | 6a66cd5d-2b95-11e8-9d88-8e82fe5f5429 |
| wsrep_protocol_version | 8 |
| wsrep_last_applied | 9 |
| wsrep_last_committed | 9 |
| wsrep_replicated | 7 |
| wsrep_replicated_bytes | 1744 |
| wsrep_repl_keys | 9 |
| wsrep_repl_keys_bytes | 240 |
| wsrep_repl_data_bytes | 1028 |
| wsrep_repl_other_bytes | 0 |
| wsrep_received | 32 |
| wsrep_received_bytes | 2960 |
| wsrep_local_commits | 1 |
| wsrep_local_cert_failures | 0 |
| wsrep_local_replays | 0 |
| wsrep_local_send_queue | 0 |
| wsrep_local_send_queue_max | 1 |
| wsrep_local_send_queue_min | 0 |
| wsrep_local_send_queue_avg | 0.000000 |
| wsrep_local_recv_queue | 0 |
| wsrep_local_recv_queue_max | 2 |
| wsrep_local_recv_queue_min | 0 |
| wsrep_local_recv_queue_avg | 0.031250 |
| wsrep_local_cached_downto | 1 |
| wsrep_flow_control_paused_ns | 0 |
| wsrep_flow_control_paused | 0.000000 |
| wsrep_flow_control_sent | 0 |
| wsrep_flow_control_recv | 0 |
| wsrep_flow_control_interval | [ 173, 173 ] |
| wsrep_flow_control_interval_low | 173