Percona XtraDB Cluster实现MySQL高可用性集群

Galera Cluster:集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb Cluster及MariaDB Cluster
实验环境:四台服务器:192.168.39.11,192.168.39.12,192.168.39.13,192.168.39.14
如果已安装有MySQL数据必须先把数据库卸载了

pxc1:192.168.39.11
pxc2:192.168.39.12
pxc3:192.168.39.13
pxc4:192.168.39.14

1,在pxc1,pxc2,pxc3上安装Percona Xtradb Cluster5.7(采用清华源安装,官方源太慢)

[root@pxc1 ~]# vi /etc/yum.repos.d/pxc.repo

Percona XtraDB Cluster实现MySQL高可用性集群_第1张图片

[root@pxc1 ~]# scp /etc/yum.repos.d/pxc.repo 192.168.39.12:/etc/yum.repos.d
[root@pxc1 ~]# scp /etc/yum.repos.d/pxc.repo 192.168.39.13:/etc/yum.repos.d
[root@pxc1 ~]# yum install Percona-XtraDB-Cluster-57 -y
[root@pxc2 ~]# yum install Percona-XtraDB-Cluster-57 -y
[root@pxc3 ~]# yum install Percona-XtraDB-Cluster-57 -y

2,mysql的配置文件默认就好,但是pxc的配置文件必须要修改,pxc1,pxc2,pxc3都要配置

[root@pxc1 ~]# vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

Percona XtraDB Cluster实现MySQL高可用性集群_第2张图片

[root@pxc2 ~]# vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

Percona XtraDB Cluster实现MySQL高可用性集群_第3张图片

[root@pxc3 ~]# vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

Percona XtraDB Cluster实现MySQL高可用性集群_第4张图片
3,以pxc1为第一个节点启动(第一个节点的启动和其他节点的启动不同),并通过错误日志查找到mysql的密码,然后登录mysql修改mysql密码

[root@pxc1 ~]# systemctl restart [email protected]
[root@pxc1 ~]# grep "temporary password" /var/log/mysqld.log
2019-12-02T12:35:01.209167Z 1 [Note] A temporary password is generated for root@localhost: :vo>834uspyS
[root@pxc1 ~]# mysql -uroot -p":vo>834uspyS"
mysql> alter user root@localhost identified by "123.com";
Query OK, 0 rows affected (0.01 sec)

4,创建配置文件中设定用于SST传输的用户和密码

mysql> create user sstuser@localhost identified by "123.com";
Query OK, 0 rows affected (0.00 sec)
mysql> grant reload,lock tables,process,replication client on *.* to sstuser@localhost;
Query OK, 0 rows affected (0.00 sec)

5,启动其他节点

[root@pxc2 ~]# systemctl start mysql
[root@pxc3 ~]# systemctl start mysql

6,查看当前节点的状态

mysql> show variables like "wsrep_on";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_on      | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show status like "wsrep_cluster_size";
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
1 row in set (0.00 sec)

测试

三个节点同时创建同一个数据库haha,可以看到只有一个节点成功了,其他两个节点失败了。
这说明galera cluster已经解决了主主复制存在的不可同时操作同一个数据点的问题(这是因为galera cluster在用户修改数据时,所有节点会验证该修改操作是否可行,如果数据有冲突会被打回)
Percona XtraDB Cluster实现MySQL高可用性集群_第5张图片
在这里插入图片描述
在这里插入图片描述

加入新节点

加入新节点和之前新建节点的时候没什么太大的区别
1,将pxc1的pxc yum文件复制到pxc4

[root@pxc1 ~]# scp /etc/yum.repos.d/pxc.repo 192.168.39.14:/etc/yum.repos.d/

2,在pxc4上安装percona-xtradb-cluster

[root@pxc4 ~]# yum install Percona-XtraDB-Cluster-57 -y

3,修改wsrep配置文件
Percona XtraDB Cluster实现MySQL高可用性集群_第6张图片
4,启动节点,并查看状态,可以看到处于开启状态,并且集群的节点变成了四个

[root@pxc4 ~]# systemctl start mysql
[root@pxc4 ~]# mysql -uroot -p123.com
mysql> show variables like "wsrep_on";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_on      | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql> show status like "wsrep_cluster_size";
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 4     |
+--------------------+-------+
1 row in set (0.00 sec)

5,创建一个数据库可以看到其他节点同步了

mysql> create database lala;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| haha               |
| lala               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| haha               |
| lala               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

6,在加入后最好将新加入的节点都增添到其他节点的配置文件里

[root@pxc1 etc]# vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

Percona XtraDB Cluster实现MySQL高可用性集群_第7张图片

[root@pxc2 etc]# vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
[root@pxc3 etc]# vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf

期间遇到一个问题。因为做实验时中途有事,所以我将虚拟机做了快照。回来恢复快照继续做时,发现集群不见了。于是把所有节点都停了,重新启动第一个节点,但是重启失败。最后将/var/lib/mysql/grastate.dat文件里的safa_to_bootstrap由1修改成了0,重启成功。
Percona XtraDB Cluster实现MySQL高可用性集群_第8张图片

你可能感兴趣的:(MySQL)