PXC高可用

1、环境准备

pxc1: centos7 10.0.0.7
pxc2: centos7 10.0.0.17
pxc3: centos7 10.0.0.27
pxc4: centos7 10.0.0.37
注意: 关闭防火墙和SELinux,保证时间同步
如果已经安装MySQL,必须卸载 至少三个节点,不能安装mysql server 或 mariadb-server
2、 安装 Percona XtraDB Cluster 5.7
## 设置yum源
[root@pxe1 ~]# vim /etc/yum.repos.d/pxc.repo
[percona]
name=percona
baseurl=https://mirrors.tuna.tsinghua.edu.cn/percona/release/$releasever/RPMS/$basearch
enabled=1
gpgcheck=0 ## 将yum源传到其他服务器
[root@pxe1 ~]# scp /etc/yum.repos.d/pxc.repo 10.0.0.17:/etc/yum.repos.d/
[root@pxe1 ~]# scp /etc/yum.repos.d/pxc.repo 10.0.0.27:/etc/yum.repos.d/
[root@pxe1 ~]# scp /etc/yum.repos.d/pxc.repo 10.0.0.37:/etc/yum.repos.d/ ## 在所有节点安装PXC
[root@pxe1 ~]# yum install -y Percona-XtraDB-Cluster-57
[root@pxe2 ~]# yum install -y Percona-XtraDB-Cluster-57
[root@pxe3 ~]# yum install -y Percona-XtraDB-Cluster-57
[root@pxe4 ~]# yum install -y Percona-XtraDB-Cluster-57
3、所有节点更改server-id
[root@pxe1 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=7 #修改server-id,各个节点不能相同
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7 [root@pxe2 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=17 #修改server-id,各个节点不能相同
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7 [root@pxe3 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=27 #修改server-id,各个节点不能相同
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7 [root@pxe4 ~]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
[mysqld]
server-id=37 #修改server-id,各个节点不能相同
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7

4、修改PXE配置文件
[root@pxe1 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://10.0.0.7,10.0.0.17,10.0.0.27 #所有节点的IP
wsrep_node_address=10.0.0.7 #指定自已的IP
wsrep_cluster_name=pxc-cluster #集群名称,要一致
wsrep_node_name=pxc-cluster-node-1 #自己在集群内的名称
wsrep_sst_auth="pxcuser:123456" #取消本行注释,集群内用户和密码信息必须一致 [root@pxe2 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://10.0.0.7,10.0.0.17,10.0.0.27
wsrep_node_address=10.0.0.17
wsrep_cluster_name=pxc-cluster
wsrep_node_name=pxc-cluster-node-2
wsrep_sst_auth="pxcuser:123456" [root@pxe3 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_cluster_address=gcomm://10.0.0.7,10.0.0.17,10.0.0.27
wsrep_node_address=10.0.0.27
wsrep_cluster_name=pxc-cluster
wsrep_node_name=pxc-cluster-node-3
wsrep_sst_auth="pxcuser:123456"

5、启动PXC集群中第一个节点 (引导节点)
# 这里将pxe2作为第一个节点
[root@pxe2 ~]# systemctl start mysql@bootstrap.service
[root@pxe2 ~]# ss -ntul #查看是否开启了默认的4567端口 [root@pxe2 ~]# grep "root@localhost" /var/log/mysqld.log #查找root登陆密码
2022-09-05T12:18:30.745212Z 1 [Note] A temporary password is generated for root@localhost: sradqeE-q8x+ #登陆mysql修改密码,创建pxcuser并授权
[root@pxe2 ~]# mysql -uroot -p'sradqeE-q8x+'
mysql> alter user root@'localhost' identified by '123456';
mysql> create user pxcuser@'localhost' identified by '123456';
mysql> grant reload,lock tables,process,replication client on *.* to pxcuser@'localhost'; mysql> show variables like 'wsrep%'\G #查看相关状态变量

6、启动PXC集群中其它所有节点
[root@pxe1 ~]# systemctl start mysql
[root@pxe3 ~]# systemctl start mysql
7、查看集群状态,验证集群是否成功
#在任意节点,查看集群状态
[root@pxe1 ~]# mysql -uroot -p123456
mysql> show variables like 'wsrep_node_name';
+-----------------+--------------------+
| Variable_name | Value |
+-----------------+--------------------+
| wsrep_node_name | pxc-cluster-node-1 |
+-----------------+--------------------+
1 row in set (0.01 sec) mysql> show variables like 'wsrep_node_address';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| wsrep_node_address | 10.0.0.7 |
+--------------------+----------+
1 row in set (0.01 sec) mysql> show variables like 'wsrep_on';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_on | ON |
+---------------+-------+
1 row in set (0.01 sec) mysql> show status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.04 sec) mysql> source /root/hellodb_innodb.sql #导入一个数据库或者创建个数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec) [root@pxe3 ~]# mysql -p123456 #其他节点验证数据是否同步
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.04 sec)
8、在PXC集群中加入新节点
#在PXC集群中再加一台新的主机PXC4:10.0.0.37
[root@pxe4 ~]# systemctl start mysql
[root@pxe4 ~]# mysql -p123456
mysql> show status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 4 |
+--------------------+-------+
1 row in set (0.07 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec) #所有节点的配置文件加以修改
wsrep_cluster_address=gcomm://10.0.0.7,10.0.0.17,10.0.0.27,10.0.0.37

9、在PXC集群中修复故障节点
[root@pxe1 ~]# systemctl stop mysql          #任意一节点停止服务

[root@pxe4 ~]# mysql -p123456                #其他节点查看
mysql> show status like 'wsrep_cluster_size';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+
1 row in set (0.01 sec)
mysql> use hellodb;
mysql> insert students(name,age)values('wangwang',19); #插入一条数据
Query OK, 1 row affected (0.02 sec) [root@pxe2 ~]# mysql -p123456 #其他节点查看正常同步
mysql> use hellodb;
mysql> select * from students;
26 | wangwang | 19 | F | NULL | NULL [root@pxe1 ~]# systemctl start mysql #恢复服务,数据同步
[root@pxe1 ~]# mysql -p123456
mysql> use hellodb;
mysql> select * from students;
| 26 | wangwang | 19 | F | NULL | NULL |
10、遇到的问题:
[root@pxe1 ~]# tail -20 /var/log/mysqld.log
at gcomm/src/pc.cpp:connect():161
2022-09-05T12:36:17.957177Z 0 [ERROR] WSREP: gcs/src/gcs_core.cpp:gcs_core_open():209: Failed to open backend connection: -110 (Connection timed out)
2022-09-05T12:36:18.958125Z 0 [Note] WSREP: gcomm: terminating thread
2022-09-05T12:36:18.958192Z 0 [Note] WSREP: gcomm: joining thread
2022-09-05T12:36:18.958824Z 0 [ERROR] WSREP: gcs/src/gcs.cpp:gcs_open():1578: Failed to open channel 'pxc-cluster' at 'gcomm://10.0.0.7,10.0.0.17,10.0.0.27': -110 (Connection timed out)
2022-09-05T12:36:18.959028Z 0 [ERROR] WSREP: gcs connect failed: Connection timed out
2022-09-05T12:36:18.959098Z 0 [ERROR] WSREP: Provider/Node (gcomm://10.0.0.7,10.0.0.17,10.0.0.27) failed to establish connection with cluster (reason: 7)
2022-09-05T12:36:18.959117Z 0 [ERROR] Aborting 2022-09-05T12:36:18.959127Z 0 [Note] Giving 0 client threads a chance to die gracefully
2022-09-05T12:36:18.959143Z 0 [Note] WSREP: Waiting for active wsrep applier to exit
2022-09-05T12:36:18.959150Z 0 [Note] WSREP: Service disconnected.
2022-09-05T12:36:18.959155Z 0 [Note] WSREP: Waiting to close threads......
2022-09-05T12:36:23.960598Z 0 [Note] WSREP: Some threads may fail to exit.
2022-09-05T12:36:23.970990Z 0 [Note] WSREP: Service thread queue flushed.
2022-09-05T12:36:23.971198Z 0 [Note] WSREP: MemPool(SlaveTrxHandle): hit ratio: 0, misses: 0, in use: 0, in pool: 0
2022-09-05T12:36:23.971369Z 0 [Note] WSREP: Shifting CLOSED -> DESTROYED (TO: 0)
2022-09-05T12:36:23.972159Z 0 [Note] Binlog end
2022-09-05T12:36:23.972315Z 0 [Note] /usr/sbin/mysqld: Shutdown complete
解决办法:

防火墙未关闭,systemctl disable --now firewalld

Mysql之PXC高可用的更多相关文章

  1. mysql数据库的高可用方法总结

    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一 些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无 ...

  2. MySQL数据库的高可用方案总结

    高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...

  3. Percona XtraDB Cluster(PXC)-高可用架构设计说明

    Mycat+PXC高可用集群 一.架构图 架构说明: 1.mysql 集群高可用部分: l 针对业务场景选用Percona XtraDB Cluter(PXC)复制集群.两个片集群 PXC-dataN ...

  4. MySQL数据库的优化(下)MySQL数据库的高可用架构方案

    MySQL数据库的优化(下)MySQL数据库的高可用架构方案 2011-03-09 08:53 抚琴煮酒 51CTO 字号:T | T 在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQ ...

  5. 浅谈mysql主从复制的高可用解决方案

    1.熟悉几个组件(部分摘自网络)1.1.drbd     —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID" ...

  6. MySQL集群(四)之keepalived实现mysql双主高可用

    前面大家介绍了主从.主主复制以及他们的中间件mysql-proxy的使用,这一篇给大家介绍的是keepalived的搭建与使用! 一.keepalived简介 1.1.keepalived介绍 Kee ...

  7. MySQL系列:高可用架构之MHA

    前言 从11年毕业到现在,工作也好些年头,入坑mysql也有近四年的时间,也捣鼓过像mongodb.redis.cassandra.neo4j等Nosql数据库.其实一直想写博客分享下工作上的零零碎碎 ...

  8. MySQL的keepalived高可用监控脚本

    MySQL的keepalived高可用监控脚本 MySQL(或者其它服务)的keepalived高可用监控脚本 开发脚本需求 :我们知道,keepalive是基于虚拟ip的存活来判断是否抢占maste ...

  9. mysql-master-ha 实现mysql master的高可用。

    常用的mysql 高可用有下面几种方案: 名称 原理 特点 mysqlmha Perl脚本对mysql master做心跳,master down了以后,选举new master   ,是要改代理层的 ...

随机推荐

  1. nmtui 字符界面图形模式配置

    一.通过nmtui配置网络参数 Linux系统配置网络参数的方式有很多种,其中最简单最直接的方式就是直接修改网卡配置文件,但这种方式也很容易出错,比如说IPADDR.NETMASK.GATEWAY等参 ...

  2. mysql验证隔离级别

    mysql更改隔离级别 参考https://blog.csdn.net/qq_21299835/article/details/121189565 关闭mysql事务自动提交:set autocomm ...

  3. HDU 6467 简单数学题 (组合数学推导)

    题意 题解 Step 1 把原式进行了最基本的变换,把 i 移到右边,并先枚举 j ,这里 i 从 0 开始枚举,并不影响答案,因为 C(j,0) 乘 0 后没有影响,但是这样方便后面的推导 Step ...

  4. 最小生成树(prime+kruskal)

    1.prime算法 prime算法类似于bfs,就是判断每次连接的点中距离最短的,加入到树中,具体如下: prime算法要求一开始随便选择一个点作为起点,因为最小生成树包括所有点,所以起点随机即可(一 ...

  5. Linux做bond4

    一.编辑bond网络配置 vim /etc/sysconfig/network-scripts/ifcfg-bond4 DEVICE=bond4 NAME=bond4 TYPE=Bond ONBOOT ...

  6. 《!--suppress ALL --> 在Android XML 文件中的用途是什么?

    <!--suppress ALL --> 在Android XML 文件中的用途是什么? 警告一次又一次地出现在谷歌地图的 XML 文件中,但是当我使用时,所有警告都被禁用.那么压制所有评 ...

  7. 使用 Traefik 代理 UDP 服务

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247488836&idx=1&sn=740f9aac ...

  8. Elasticsearch:如何对PDF文件进行搜索

    Elasticsearch 通常用于字符串,数字,日期等数据类型的检索,但是在 HCM.ERP 和电子商务等应用程序中经常存在对办公文档进行搜索的需求.今天的这篇文章中我们来讲一下如何实现 PDF.D ...

  9. Elastic:使用ElastAlert发送邮件通知

    转载自:https://blog.csdn.net/UbuntuTouch/article/details/105473542 文档地址:https://elastalert.readthedocs. ...

  10. Css3中自适应布局单位vh、vw

    视口单位(Viewport units) 什么是视口? 在桌面端,视口指的是在桌面端,指的是浏览器的可视区域:而在移动端,它涉及3个视口:Layout Viewport(布局视口),Visual Vi ...