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. Servlet特性研究之异步模式

    Servlet只有同步模型是怎样的? 异步处理是Servlet3.0版本的重要功能之一,分析异步处理模型之前,先看看同步处理的过程是怎样的: 客户端发起HTTP请求一个动态Servlet API,请求 ...

  2. SecureCRT 和 Xshell 连接ENSP 教程

    前言:很多人问我说想尝试使用 CRT和Xshell连接 ENSP的某台设备,以模拟现网中的工作状态,所以出了这篇随笔. ENSP版本: Xshell 连接教程 Xshell 7 评估版(其他版本没测试 ...

  3. 我用开天平台做了一个字符串检查API,hin 简单~~

    摘要:本文使用了工作台的API全生命周期管理和函数管理功能,编写字符串检查的函数,实现了API的快速创建和发布. 本文分享自华为云社区<[我用开天平台做了一个字符串检查API>,作者:人类 ...

  4. ABC 203 F - Weed (DP)

    ABC203F - Weed 题意转述 S t e v e \rm Steve Steve 和 A l e x \rm Alex Alex 正在下界( N e t h e r l e n d \rm ...

  5. 【java】学习路径42-六种字符流使用实例

    第一种 OutputStreamWriter OutputStreamReader 第二种 FileWriter FileReader 第三种 BufferedWriter BufferedReade ...

  6. 【java】非常多!学习路径24-总结目前所有知识(上)

    感谢sikiedu.com的siki老师.几年前就开始看siki的课程,最近突然想写这个笔记系列,顺便回顾一下这些基础的知识,同时也希望能帮助到一些人,有问题一起交流哈. 全文共十章,大约1.5万字, ...

  7. pat乙级每日习题

    欢迎加入我们:qq群:1054587486 1:https://pintia.cn/problem-sets/994805260223102976/problems/99480532591848652 ...

  8. 内存溢出(OOM)分析

    当JVM内存不足时,会抛出java.lang.OutOfMemoryError.   主要的OOM类型右: Java heap space:堆空间不足 GC overhead limit exceed ...

  9. ConfigMap使用说明

    ConfigMap概述 ConfigMap供容器使用的典型用法如下. (1)生成为容器内的环境变量. (2)设置容器启动命令的启动参数(需设置为环境变量). (3)以Volume的形式挂载为容器内部的 ...

  10. MySQL之pt-query-digest分析慢查询日志的详情介绍

    一.简介 pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdu ...