二进制包方式安装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                                                            |
| wsrep_flow_control_interval_high | 173                                                            |
| wsrep_flow_control_status        | OFF                                                            |
| wsrep_cert_deps_distance         | 1.000000                                                       |
| wsrep_apply_oooe                 | 0.000000                                                       |
| wsrep_apply_oool                 | 0.000000                                                       |
| wsrep_apply_window               | 1.000000                                                       |
| wsrep_commit_oooe                | 0.000000                                                       |
| wsrep_commit_oool                | 0.000000                                                       |
| wsrep_commit_window              | 1.000000                                                       |
| wsrep_local_state                | 4                                                              |
| wsrep_local_state_comment        | Synced                                                         |
| wsrep_cert_index_size            | 3                                                              |
| wsrep_cert_bucket_count          | 22                                                             |
| wsrep_gcache_pool_size           | 4712                                                           |
| wsrep_causal_reads               | 0                                                              |
| wsrep_cert_interval              | 0.000000                                                       |
| wsrep_ist_receive_status         |                                                                |
| wsrep_ist_receive_seqno_start    | 0                                                              |
| wsrep_ist_receive_seqno_current  | 0                                                              |
| wsrep_ist_receive_seqno_end      | 0                                                              |
| wsrep_incoming_addresses         | 192.168.199.131:3306,192.168.199.230:3306,192.168.199.231:3306 |
| wsrep_desync_count               | 0                                                              |
| wsrep_evs_delayed                |                                                                |
| wsrep_evs_evict_list             |                                                                |
| wsrep_evs_repl_latency           | 0/0/0/0/0                                                      |
| wsrep_evs_state                  | OPERATIONAL                                                    |
| wsrep_gcomm_uuid                 | 6a663a2c-2b95-11e8-90d7-3edc8a73bc56                           |
| wsrep_cluster_conf_id            | 11                                                             |
| wsrep_cluster_size               | 3                                                              |
| wsrep_cluster_state_uuid         | 6a66cd5d-2b95-11e8-9d88-8e82fe5f5429                           |
| wsrep_cluster_status             | Primary                                                        |
| wsrep_connected                  | ON                                                             |
| wsrep_local_bf_aborts            | 0                                                              |
| wsrep_local_index                | 1                                                              |
| wsrep_provider_name              | Galera                                                         |
| wsrep_provider_vendor            | Codership Oy <info@codership.com>                              |
| wsrep_provider_version           | 3.26(r)                                                        |
| wsrep_ready                      | ON                                                             |
+----------------------------------+----------------------------------------------------------------+
68 rows in set (0.00 sec)

(3)常用命令介绍
查看集群成员地址:

root@localhost:mysql3306.sock [(none)]> show variables like 'wsrep_cluster_address';
+-----------------------+---------------------------------------------------------+
| Variable_name         | Value                                                   |
+-----------------------+---------------------------------------------------------+
| wsrep_cluster_address | gcomm://192.168.199.230,192.168.199.231,192.168.199.131 |
+-----------------------+---------------------------------------------------------+
1 row in set (0.01 sec)

如果配置了指向集群地址,上面那个参数值,应该是你指定集群的 IP 地址

查看是否开启集群模式:

root@localhost:mysql3306.sock [(none)]> show status like 'wsrep_ready';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_ready   | ON    |
+---------------+-------+
1 row in set (0.00 sec)

查看集群成员数量:

root@localhost:mysql3306.sock [(none)]> show status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
1 row in set (0.00 sec)

查看集群相关信息

root@localhost:mysql3306.sock [(none)]> show status like 'wsrep%';

这个查看 wsrep 的相关参数,查看的最全面了。

二、集群测试

1.在 db-node2 上创建 unixfbi 数据库

mysql> create database unixfbi;

2.在 db-node3 上为 unixfbi 数据库创建表

mysql> use unixfbi;
Database changed
mysql> create table example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
Query OK, 0 rows affected (0.31 sec)

3.在 db-node1 上插入数据

mysql> INSERT INTO unixfbi.example VALUES (1, 'percona1');       
Query OK, 1 row affected (0.05 sec)

4.在 db-node2 上查看数据

在 db2 上查看在 db-node1 上插入的数据

mysql> SELECT * FROM unixfbi.example;
+---------+-----------+
| node_id | node_name |
+---------+-----------+
|       1 | percona1  |
+---------+-----------+
1 row in set (0.00 sec)

目前,我们在 Centos 7 系统上使用二进制包的形式成功安装了 PXC 集群。

参考文档

https://www.percona.com/doc/percona-xtradb-cluster/5.7/configure.html
https://www.percona.com/doc/percona-xtradb-cluster/5.7/bootstrap.html
https://www.percona.com/doc/percona-xtradb-cluster/5.7/wsrep-status-index.html
https://www.percona.com/doc/percona-xtradb-cluster/5.7/wsrep-system-index.html

posted @ 2018-12-20 17:22  workdsz  阅读(733)  评论(0)    收藏  举报