1.第一个节点启动。
Linux7:
my.cnf 文件需要拷贝到:/etc/my.cnf (非常重要)
[root@mysql51 ~]# mysqlpxc bootstrap-pxc
Bootstrapping PXC (Percona XtraDB Cluster)Initializing MySQ[ OK ]se:
Starting MySQL (Percona XtraDB Cluster).. [ OK ]
当前集群只有一个节点。
mysql> show status like 'wsrep_incoming_addresses%';
+--------------------------+-------------------+
| Variable_name | Value |
+--------------------------+-------------------+
| wsrep_incoming_addresses | 192.168.1.51:3306 |
+--------------------------+-------------------+
1 row in set (0.00 sec)
是主节点。
mysql> show status like 'wsrep_cluster_status%';
+----------------------+---------+
| Variable_name | Value |
+----------------------+---------+
| wsrep_cluster_status | Primary |
+----------------------+---------+
1 row in set (0.00 sec)
mysql> show status like 'wsrep_connected%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| wsrep_connected | ON |
+-----------------+-------+
1 row in set (0.01 sec)
2.第二个节点启动:
data目录下都是空的。
(1)初始化 mysqlpxc start
[ERROR] xtrabackup not in path: /usr/sbin:/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/mysql/app/mysql/bin
vi /etc/my.cnf
vi /mysql/data/3306/my.cnf
--wsrep_sst_method =xtrabackup-v2 改成下面的值:
wsrep_sst_method=rsync
[root@mysql52 3306]# mysqlpxc start
MySQL (Percona XtraDB Cluster) is not running, but lock fil[FAILED]lock/subsys/mysql) exists
Starting MySQL (Percona XtraDB Cluster).....State transfer in progress, setting sleep higher
. [ OK ]
show status like '%wsrep%';
| wsrep_incoming_addresses | 192.168.1.51:3306,192.168.1.52: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 | 9904418f-b825-11ed-8c37-9e3b6a5382f7 |
| wsrep_cluster_conf_id | 10 |
| wsrep_cluster_size | 2 |
| wsrep_cluster_state_uuid | 0a6611e5-b823-11ed-91e5-be9f6caf4bbe |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
发现2号节点加入了。
wsrep_connected=ON;
3.第三个节点初始化
data目录下都是空的。
(1). 初始化
mysqlpxc start
[root@mysql53 data]# pwd
/mysql/data/3306/data
[root@mysql53 data]# ll
total 1185872
-rw-r-----. 1 mysql mysql 56 Mar 1 19:44 auto.cnf
-rw-------. 1 mysql mysql 1676 Mar 1 19:44 ca-key.pem
-rw-r--r--. 1 mysql mysql 1120 Mar 1 19:44 ca.pem
-rw-r--r--. 1 mysql mysql 1120 Mar 1 19:44 client-cert.pem
-rw-------. 1 mysql mysql 1676 Mar 1 19:44 client-key.pem
-rw-r-----. 1 mysql mysql 134219048 Mar 1 19:44 galera.cache
-rw-r-----. 1 mysql mysql 0 Mar 1 19:44 grastate.dat
-rw-r-----. 1 mysql mysql 265 Mar 1 19:44 gvwstate.dat
-rw-r-----. 1 mysql mysql 692 Mar 1 19:44 ib_buffer_pool
-rw-r-----. 1 mysql mysql 209715200 Mar 1 19:44 ibdata1
-rw-r-----. 1 mysql mysql 209715200 Mar 1 19:44 ibdata2
-rw-r-----. 1 mysql mysql 209715200 Mar 1 19:44 ibdata3
-rw-r-----. 1 mysql mysql 209715200 Mar 1 19:44 ib_logfile0
-rw-r-----. 1 mysql mysql 209715200 Mar 1 19:44 ib_logfile1
drwxr-x---. 2 mysql mysql 4096 Mar 1 19:44 mysql
-rw-rw----. 1 root root 5 Mar 1 19:44 mysqld_safe.pid
drwxr-x---. 2 mysql mysql 8192 Mar 1 19:44 performance_schema
-rw-------. 1 mysql mysql 1676 Mar 1 19:44 private_key.pem
-rw-r--r--. 1 mysql mysql 452 Mar 1 19:44 public_key.pem
-rw-r--r--. 1 mysql mysql 1120 Mar 1 19:44 server-cert.pem
-rw-------. 1 mysql mysql 1680 Mar 1 19:44 server-key.pem
drwxr-x---. 2 mysql mysql 8192 Mar 1 19:44 sys
-rw-r-----. 1 mysql mysql 10485760 Mar 1 19:44 undo001
-rw-r-----. 1 mysql mysql 10485760 Mar 1 19:44 undo002
-rw-r-----. 1 mysql mysql 10485760 Mar 1 19:44 undo003
[root@mysql53 data]# pwd
/mysql/data/3306/data
(2).启动报错:
2023-03-01T19:45:42.240128+08:00 0 [ERROR] WSREP: Failed to read 'ready
wsrep_sst_rsync --role 'joiner' --address '192.168.1.53' --datadir '/mysql/data/3306/data/'
--defaults-file '/mysql/data/3306/my.cnf' --defaults-group-suffix '' --parent '10288' ''
Read: ''lsof' not found in PATH'
lsof工具保存在:
yum -y install lsof
(3).重新启动。
mysqlpxc start
[root@mysql53 data]# mysqlpxc start
MySQL (Percona XtraDB Cluster) is not running, but lock fil[FAILED]lock/subsys/mysql) exists
Initializing MySQL database: [ OK ]
Starting MySQL (Percona XtraDB Cluster)..State transfer in progress, setting sleep higher
. [ OK ]
初始化全库拷贝data目录下数据。
(4)参数检查:
| wsrep_ist_receive_seqno_end | 0 |
| wsrep_incoming_addresses | 192.168.1.51:3306,192.168.1.53:3306,192.168.1.52: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 | 1677f634-b827-11ed-9b0d-1b9fbd16aa06 |
| wsrep_cluster_conf_id | 15 |
| wsrep_cluster_size | 3 |
| wsrep_cluster_state_uuid | 0a6611e5-b823-11ed-91e5-be9f6caf4bbe |
| 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
| wsrep_provider_version | 3.26(r) |
| wsrep_ready | ON |
发现 51/52/53都加入集群了
wsrep_connected=ON;
4.如何检查节点是否加入到集群:
1. wsrep_cluster_state_uuid 应该与其它所有节点相同
2. wsrep_cluster_conf_id 应该与其它所有节点不相同
3. wsrep_cluster_size 应该是所有节点的数目:3个节点。
4. wsrep_cluster_status 取值应该是:Primary
5. wsrep_ready 取值应该是ON
6. wsrep_connected 取值应该是ON
5.集群可用性验证
(1)1号节点创建数据库
root@itpux 19:55: [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
root@itpux 19:55: [(none)]> create database test;
Query OK, 1 row affected (0.00 sec)
root@itpux 19:55: [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test | --新创建的数据库。
+--------------------+
(2)2号和3号节点检查。
root@itpux 19:55: [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test | --发现都同步了。
+--------------------+
6.PXC集群的使用总结
在生产环境下应该避免使用大事务,不建议在高并发写入场景下使用PXC cluster架构,会导致集群限流,从而引起整个集群hang住,出现生产故障,针对这种情况可以考虑主从,实现读写分离等手段。对数据一致性要求较高,并且数据写入不频繁,数据库容量也不大(50g所有),网络状况良好的情况下,可以考虑使用PXC方案。自动节点克隆。节点自动配置,在新增节点,或者停机维护时,增量数据或者基础数据不需要人工手动备份提供,PXC会自动拉取在线节点数据,最终集群会变为一致性。
PXC集群的缺点;
添加新节点时,必须从现有节点中一个复制完整数据集,即Data目录下全部复制。
每个节点都保留一份完整的数据。