Mysql之PXC高可用
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高可用的更多相关文章
- mysql数据库的高可用方法总结
高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一 些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无 ...
- MySQL数据库的高可用方案总结
高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...
- Percona XtraDB Cluster(PXC)-高可用架构设计说明
Mycat+PXC高可用集群 一.架构图 架构说明: 1.mysql 集群高可用部分: l 针对业务场景选用Percona XtraDB Cluter(PXC)复制集群.两个片集群 PXC-dataN ...
- MySQL数据库的优化(下)MySQL数据库的高可用架构方案
MySQL数据库的优化(下)MySQL数据库的高可用架构方案 2011-03-09 08:53 抚琴煮酒 51CTO 字号:T | T 在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQ ...
- 浅谈mysql主从复制的高可用解决方案
1.熟悉几个组件(部分摘自网络)1.1.drbd —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID" ...
- MySQL集群(四)之keepalived实现mysql双主高可用
前面大家介绍了主从.主主复制以及他们的中间件mysql-proxy的使用,这一篇给大家介绍的是keepalived的搭建与使用! 一.keepalived简介 1.1.keepalived介绍 Kee ...
- MySQL系列:高可用架构之MHA
前言 从11年毕业到现在,工作也好些年头,入坑mysql也有近四年的时间,也捣鼓过像mongodb.redis.cassandra.neo4j等Nosql数据库.其实一直想写博客分享下工作上的零零碎碎 ...
- MySQL的keepalived高可用监控脚本
MySQL的keepalived高可用监控脚本 MySQL(或者其它服务)的keepalived高可用监控脚本 开发脚本需求 :我们知道,keepalive是基于虚拟ip的存活来判断是否抢占maste ...
- mysql-master-ha 实现mysql master的高可用。
常用的mysql 高可用有下面几种方案: 名称 原理 特点 mysqlmha Perl脚本对mysql master做心跳,master down了以后,选举new master ,是要改代理层的 ...
随机推荐
- .NET 反向代理-YARP
什么是 YARP YARP (另一个反向代理) 设计为一个库,提供核心代理功能,你可以根据应用程序的特定需求进行自定义. YARP 是使用 .NET的基础架构构建在 .NET上的.YARP 的主要不同 ...
- Gitea v1.17.0 正式发布 | 集成软件包管理器、容器镜像仓库
我们自豪地宣布 Gitea v1.17.0 发布了.本次发布带来了诸多新特性和累积的更新,我们强烈建议用户在更新到最新版本之前仔细阅读发行注记. 在 1.17.0 版本的开发中我们一共合并了 645 ...
- 谣言检测——《MFAN: Multi-modal Feature-enhanced Attention Networks for Rumor Detection》
论文信息 论文标题:MFAN: Multi-modal Feature-enhanced Attention Networks for Rumor Detection论文作者:Jiaqi Zheng, ...
- 高德地图与CAD图叠加显示方法汇总及优缺点分析
前言 高德地图应用在许多领域,平常我们用的地图导航,除过正常的地图导航指引功能之外,其实还有很多实用的功能.如高德影像地图应用在包括地理.土地测量.水文学.生态学.气象学以及海洋学等方面.Auto ...
- Windows 11 新材质 Mica Alt 效果展示
本文是 WinUI 3 踩坑记 的一部分,该系列发布于 GitHub@Scighost/WinUI3Keng,若内容出现冲突以 GitHub 上的为准. 微软在 2022-09-02 更新了官方文档, ...
- Minio纠删码快速入门
官方文档地址:http://docs.minio.org.cn/docs/master/minio-erasure-code-quickstart-guide Minio使用纠删码erasure co ...
- 【Ceph】Ceph学习理解Ceph的三种存储接口:块设备、文件系统、对象存储
文章转载自:https://blog.51cto.com/liangchaoxi/4048519
- 第二章:视图层 - 7:HttpResponse对象
类定义:class HttpResponse[source] HttpResponse类定义在django.http模块中. HttpRequest对象由Django自动创建,而HttpRespons ...
- 源码安装最新版keepalived,剥离日志出来并配置日志轮询
安装 yum install -y gcc openssl-devel popt-devel ipvsadm libnl3-devel net-snmp-devel libnl libnl-devel ...
- 使用yum方式安装的openresty参数
nginx version: openresty/1.19.3.1 built by gcc 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC) built with Ope ...