MySQL部署PXC集群-全网最详细

news2024/12/24 21:49:30

MySQL部署PXC集群

一,PXC了解

1.PXC介绍

  • Percona XtraDB Cluster(简称PXC)

  • 是基于Galera的MySQL高可用集群解决方案

  • Galera Cluster是Codership公司开发的一套免费开源的高可用方案

  • PXC集群主要由两部分组成:Percona Server with XtraDB(数据存储插件)和 Write Set Replication patches(同步、多主复制插件)

  • 官网:http://galeracluster.com

2.PXC特点

  • 数据强一致性,无同步延迟(写入主服务器的数据,所有从服务器必须马上也得有)

  • 没有主从切换操作,无需使用虚拟IP(无需一主多从的结构,无需vip地址)

  • 支持InnoDB存储引擎

  • 多线程复制(多线程同步工作)

  • 部署使用简单

  • 支持节点自动加入,无需手动拷贝数据(服务器会自动同步宕机期间的数据,无需手动配置)

3.PXC架构图

请添加图片描述

二,开始部署PXC

1.实施环境

IP地址主机名
192.168.2.1my01
192.168.2.2my02
192.168.2.3my03

2.设置主机名和主机名解析

​ 每一台都需要做

[root@localhost ~]# hostnamectl set-hostname my01
[root@localhost ~]# bash
[root@my01 ~]# vi /etc/hosts
192.168.2.1 my01
192.168.2.2 my02
192.168.2.3 my03

3.安装软件

percona-xtrabackup和Percona-XtraDB-Cluster登录下面地址找到相关版本来进行下载软件包
下载地址:https://www.percona.com/downloads

qpress-1.1-14.11.x86_64.rpm需要使用wget来下载
软件作用
percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm在线热备程序
qpress-1.1-14.11.x86_64.rpm递归压缩程序
Percona-XtraDB-Cluster-5.7.41-31.65-r654-el7-x86_64-bundle.tar集群服务程序

1.将所有软件包上传到服务器端(三台相同)

[root@my01 ~]# cd /usr/local/src/
[root@my01 src]# wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home%3A/AndreasStieger%3A/branches%3A/Archiving/RedHat_RHEL-6/x86_64/qpress-1.1-14.11.x86_64.rpm
[root@my01 src]# ls
percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm  Percona-XtraDB-Cluster-5.7.41-31.65-r654-el7-x86_64-bundle.tar  qpress-1.1-14.11.x86_64.rpm

#上传
[root@my01 src]# scp -r /usr/local/src/ 192.168.2.2:/usr/local/
[root@my01 src]# scp -r /usr/local/src/ 192.168.2.3:/usr/local/

2.安装percoa-xtrabackup(三台相同)

[root@my01 per-cluster]# yum -y install openssl
[root@my01 per-cluster]# yum -y install openssl-devel
[root@my01 per-cluster]# yum -y install socat
[root@my01 src]# yum -y localinstall percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm

3.安装qpress(三台相同)

[root@my01 src]# yum -y localinstall qpress-1.1-14.11.x86_64.rpm

4.安装Percona-xtradb-cluster(三台相同)

[root@my01 src]# mkdir per-cluster
[root@my01 src]# tar -xf Percona-XtraDB-Cluster-5.7.41-31.65-r654-el7-x86_64-bundle.tar -C per-cluster/
[root@my01 src]# cd per-cluster/
[root@my01 per-cluster]# ls
Percona-XtraDB-Cluster-57-5.7.41-31.65.1.el7.x86_64.rpm            Percona-XtraDB-Cluster-garbd-57-5.7.41-31.65.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-57-debuginfo-5.7.41-31.65.1.el7.x86_64.rpm  Percona-XtraDB-Cluster-server-57-5.7.41-31.65.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-client-57-5.7.41-31.65.1.el7.x86_64.rpm     Percona-XtraDB-Cluster-shared-57-5.7.41-31.65.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-devel-57-5.7.41-31.65.1.el7.x86_64.rpm      Percona-XtraDB-Cluster-shared-compat-57-5.7.41-31.65.1.el7.x86_64.rpm
Percona-XtraDB-Cluster-full-57-5.7.41-31.65.1.el7.x86_64.rpm       Percona-XtraDB-Cluster-test-57-5.7.41-31.65.1.el7.x86_64.rpm
[root@my01 per-cluster]# rpm -ivh ./*  --nodeps --force

4.修改配置文件

1.修改mysql的配置(三台都需要修改)

[root@my01 per-cluster]# vi /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
# Template my.cnf for PXC
# Edit to your requirements.
[client]
socket=/var/lib/mysql/mysql.sock

[mysqld]
server-id=1			#只需要修改这里 保证每台都不同
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.soc
pid-file=/var/run/mysqld/mysqld.pid
log-bin
log_slave_updates
expire_logs_days=7

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

2.修改PXC集群配置文件(三台都需要修改)

配置要求

wsrep_cluster_address=gcomm://             #集群成员列表,3台必须相同
wsrep_node_address=192.168.70.63         #本机IP地址
wsrep_cluster_name=pxc-cluster              #集群名称,可自定义,3台必须相同
wsrep_node_name=pxc-cluster-node       #本机主机名
wsrep_sst_auth="sstuser:s3cretPass"         #SST数据同步用户授权,3台必须相同
1.my01的配置
    [root@my03 per-cluster]# vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
[mysqld]
# Path to Galera library
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so

# Cluster connection URL contains IPs of nodes
#If no IP is found, this implies that a new cluster needs to be created,
#in order to do that you need to bootstrap this node
wsrep_cluster_address=gcomm://192.168.2.1,192.168.2.2,192.168.2.3

# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW

# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB

# Slave thread to use
wsrep_slave_threads= 8

wsrep_log_conflicts

# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2

# Node IP address
wsrep_node_address=192.168.2.1
# Cluster name
wsrep_cluster_name=pxc-cluster

#If wsrep_node_name is not specified,  then system hostname will be used
wsrep_node_name=my01

#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING

# SST method
wsrep_sst_method=xtrabackup-v2

#Authentication for SST method
wsrep_sst_auth="sstuser:1234.Com"

​ 将配置文件上传到其他服务器

[root@my01 per-cluster]# scp -p /etc/percona-xtradb-cluster.conf.d/wsrep.cnf 192.168.2.2:/etc/percona-xtradb-cluster.conf.d/
root@192.168.2.2's password:
wsrep.cnf                                                                                                                100% 1081     1.1KB/s   00:00
[root@my01 per-cluster]# scp -p /etc/percona-xtradb-cluster.conf.d/wsrep.cnf 192.168.2.3:/etc/percona-xtradb-cluster.conf.d/
root@192.168.2.3's password:
wsrep.cnf                    
2.my02和my03的配置
[root@my02 per-cluster]# vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_node_address=192.168.2.2
wsrep_node_name=my02


[root@my03 per-cluster]# vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
wsrep_node_address=192.168.2.3
wsrep_node_name=my03

5.服务启动

1.在my01上去执行

[root@my01 per-cluster]# systemctl start mysql@bootstrap.service

2.查询MySQL的初始化密码

[root@my01 per-cluster]#  grep pass /var/log/mysqld.log
2023-05-30T13:54:20.274979Z 1 [Note] A temporary password is generated for root@localhost: L(sz/!ua,6h0
[root@my01 per-cluster]# mysql -uroot -p'L(sz/!ua,6h0'
mysql> alter user root@"localhost" identified by "123456";
Query OK, 0 rows affected (0.01 sec)                                                                             
mysql> grant reload,lock tables,replication client,process on *.* to sstuser@"localhost" identified by "12345.Com";
Query OK, 0 rows affected, 1 warning (0.00 sec)

​ 添加授权用户,数据会自动同步到主机my02和03上。reload装载数据的权限;lock tables锁表的权限;replication client查看服务状态的权限;process管理服务的权限(查看进程信息);授权用户和密码必须是配置文件中指定的。

3.其他两台服务上开启MySQL

[root@my02 per-cluster]# systemctl start mysql

三,测试配置

1.查看集群信息

mysql> show status like "%wsrep%";
 wsrep_incoming_addresses         | 192.168.2.3:3306,192.168.2.1:3306,192.168.2.2:3306 |	#集群
| wsrep_cluster_weight             | 3                                                  |	
| 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                 | 242efe13-ff69-11ed-9a0c-de8812f5f691               |
| wsrep_cluster_conf_id            | 7                                                  |
| wsrep_cluster_size               | 3                                                  |	#集群服务器台数
| wsrep_cluster_status             | Primary                                            |		#集群状态
| wsrep_connected                  | ON        											|   	#连接状态
| wsrep_ready                      | ON                                                 |   #服务状态

2.测试集群功能

  • 在任意一台服务器上添加访问数据的授权用户
  • 在客户端使用授权用户连接任意数据库服务器都可以存储数据,且可以查看到同样的数据
  • 建表时,必须有主键字段

3.测试集群高可用

  • 测试故障自动恢复
  • 任何一台数据库服务器宕机都不影响用户存取数据
  • 服务器运行后自动同步宕机期间的数据

四,常见错误

1.报错1

gcs/src/gcs_group.cpp:gcs_group_handle_join_msg():766: Will never receive state.

​ 解决:

  1. 检查SST用户的用户名和密码是否正确,并且有权限(wsrep_sst_auth)
  2. 检查防火墙(selinux, firewalld)
  3. 检查节点xtrabackup是否安装并且能正常备份
  4. 参数文件中wsrep_node_address是否配置的是本机IP地址和其他配置

2.报错2

which: no socat in (/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
        2023-05-31T02:58:56.691238Z WSREP_SST: [ERROR] ******************* FATAL ERROR **********************
        2023-05-31T02:58:56.691850Z WSREP_SST: [ERROR] socat not found in path: /usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
        2023-05-31T02:58:56.692347Z WSREP_SST: [ERROR] ******************************************************
2023-05-31T02:58:56.692551Z 0 [ERROR] WSREP: Failed to read 'ready <addr>' from: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '192.168.2.2' --datadir '/var/lib/mysql/' --defaults-file '/etc/my.cnf' --defaults-group-suffix '' --parent '18678' --mysqld-version '5.7.25-28-57'   ''
        Read: '(null)'
2023-05-31T02:58:56.692574Z 0 [ERROR] WSREP: Process completed with error: wsrep_sst_xtrabackup-v2 --role 'joiner' --address '192.168.2.2' --datadir '/var/lib/mysql/' --defaults-file '/etc/my.cnf' --defaults-group-suffix '' --parent '18678' --mysqld-version '5.7.25-28-57'   '' : 2 (No such file or directory)
2023-05-31T02:58:56.692617Z 2 [ERROR] WSREP: Failed to prepare for 'xtrabackup-v2' SST. Unrecoverable.
2023-05-31T02:58:56.692622Z 2 [ERROR] Aborting

解决:

 yum -y install socat

3.报错3

failed to open gcomm backend connection: 110

解决:

​ 查看各主机的主机名与ip地址的映射关系

rectory)
2023-05-31T02:58:56.692617Z 2 [ERROR] WSREP: Failed to prepare for ‘xtrabackup-v2’ SST. Unrecoverable.
2023-05-31T02:58:56.692622Z 2 [ERROR] Aborting


解决:

```bash
 yum -y install socat

3.报错3

failed to open gcomm backend connection: 110

解决:

​ 查看各主机的主机名与ip地址的映射关系

​ 查看各主机之间 wsrep.cnf 配置文件中集群名称是否一致

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/592571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络开荒1-概述

文章目录 一、网络基本概述1.2 InternetInternet组成Internet服务角度 1.3 网络协议 二、计算机网络结构2.1 计算机网络结构2.1.1 网络边缘2.1.2 接入网络 物理介质2.1.2.1 DSL2.1.2.2 电缆网络2.1.2.3 家庭网络接入2.1.2.4 企业网络接入2.1.2.5 无线网络接入 2.1.3 网络核心 三…

肉豆蔻酰六肽-4 /myristoyl hexapeptide-4, sympeptide230

简介----肉豆蔻酰六肽-4 肉豆蔻酰六肽-4为胜肽系列应用最早和最广泛的多胜肽&#xff0c;国内外知名品牌普遍采用作为抗皱配方重要成分&#xff0c;在很多抗皱护肤产品中经常出现它的身影。它可以穿透真皮增加胶原蛋白&#xff0c;通过从内至外的重建来逆转皮肤老化的过程&…

感应雷电浪涌的防线,SPD浪涌保护器

SPD - Surge Protective Device SPD 是防止雷击导致故障的避雷器&#xff0c;代表浪涌保护设备。一般指浪涌保护器&#xff0c;浪涌保护器&#xff0c;也叫防雷器&#xff0c;是一种为各种电子设备、仪器仪表、通讯线路提供安全防护的电子装置。 IEC/ EN61643-11 &#xff08…

Vulkan Tutorial 8 深度缓冲

目录 26 三维几何图形 深度图像和视图 27 显式转换深度图像 渲染通道 帧缓冲区 清除值 深度和模版状态 处理窗口调整大小 26 三维几何图形 到目前为止&#xff0c;我们所处理的几何体是投射到三维的&#xff0c;但它仍然是完全平面的。在这一章中&#xff0c;我们要给位…

(学习日记)2023.4.22

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

【C++】关键字:static

关键字static 在这一章节&#xff0c;将对C中的关键字static做进一步介绍。 成员函数中的this指针 这里先附上之前写的一个complex类代码&#xff1a; //防卫式定义 #ifndef __MYCOMPLEX__ #define __MYCOMPLEX__//前置声明 class complex;//类声明 complex& __doapl (…

分享一个隐藏链接的样式

先上效果图&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>隐藏的链接按钮</title><style>.trapdoor {-webkit-transform: translateZ(0px);-webkit…

Unity Addressables热更流程

一、分组&#xff08;网上教程一大堆&#xff09; 二、构建 构建前设置&#xff1a; 1、分组设置。所有组做远端构建加载选择&#xff0c;RemoteBuildPath 。RemoteLoadPath 2、AddressableAssetSettings设置 3、构建 三、导出信息分析&#xff1a; 1、Assets同级目录下&#…

第十二届蓝桥杯国赛JavaB组题解

A. 整数范围 思路&#xff1a; 签到题。答案&#xff1a; 255 255 255 B. 纯质数 思路&#xff1a; 先用筛法筛出所有的质数&#xff0c;再根据题意判断&#xff0c;模板参考AcWing 数学知识。 代码&#xff1a; import java.io.BufferedReader; import java.io.IOExcepti…

Python相关环境变量配置和模拟手机app登录

【java环境变量配置】 接着&#xff0c;打开系统->高级系统设置->环境变量。新建一个JAVA_HOME C:\Program Files\Java\jdk1.8.0_201&#xff08;这里是你的安装路径&#xff0c;最好复制粘贴&#xff09; 然后在Path下添加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 然后…

【LeetCode每日一题】——1493.删掉一个元素以后全为 1 的最长子数组

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 滑动窗口 二【题目难度】 中等 三【题目编号】 1493.删掉一个元素以后全为 1 的最长子数组 …

wx.request net::ERR_TOO_MANY_REDIRECTS

文章目录 问题解决方法一&#xff1a;请求头里添加Cookies方法二&#xff1a;使用weapp-cookie 问题 使用微信小程序开发者工具开发小程序项目时&#xff0c;wx.request 返回总是报 net::ERR_TOO_MANY_REDIRECTS wx.request发起一个get请求&#xff0c;一直重定向直到请求失败…

Java Web——Session实现购物车

实验名称&#xff1a; Session实现购物车 实验目的&#xff1a; &#xff08;1&#xff09;掌握什么是Cookie对象&#xff0c;掌握Cookie对象的使用 &#xff08;2&#xff09;掌握什么是Session对象&#xff0c;掌握Session对象的使用 &#xff08;3&#xff09;掌握使用…

弗雷歇distanceDTW(动态时间规整)算法(附部分代码)

1、理论知识 1.1 什么是弗雷歇距离&#xff0c;它是用来干什么的&#xff1f; 费雷歇distance是求两个序列匹配之后的最大距离&#xff0c;这里需要明确a&#xff09;两个序列&#xff1b;b&#xff09;匹配过程&#xff1b;c&#xff09;最大距离的含义。 a&#xff09;两个…

【java】 【Springboot】 开发通用审核流程服务模块

完全自研一个极其轻量级 通用审核流程服务 可以进行流程&#xff0c;节点配置&#xff0c;流程&#xff0c;节点审核人权限配置 批量审核&#xff0c;批量驳回&#xff0c;审核&#xff0c;驳回&#xff0c;批量退回第一步&#xff0c;退回第一步等操作 涉及数据库表单字段

OSPF最优路径选择

路由比较 1、内部区域>区域间路由>NSSA1>Nssa2 2、如果只有Ex1、Ex2或者Nssa1、nNssa2开销类型。则Ex1>Ex2或者Nssa1>Nssa2 3、如果Ex1、Nssa1,Ex2和Nssa2,Ex1和Nssa1优于Ex2和Nssa2 4、如果外部开销加上内部开销,Ex1和Nssa1一样,则Ex1和Nssa1相同负载分担 5、如果外…

CVE-2016-1000027安全漏洞分析和解决方案

文章目录 前言复现问题漏洞分析解决办法相关阅读 前言 CVE-2016-1000027 安全漏洞&#xff0c;该漏洞在5.x的最新版本(5.3.27)依然存在,官方未给出任何解决办法。在spring-web6.0之后&#xff0c;则不存在该漏洞。 受影响范围:spring-web<6.0 解决办法&#xff1a;升级到sp…

【机器学习】分类问题和Logistic回归算法详解

在阅读本文前&#xff0c;请确保你已经掌握代价函数、假设函数等常用机器学习术语&#xff0c;最好已经学习线性回归算法&#xff0c;前情提要可参考https://blog.csdn.net/weixin_45434953/article/details/130593910 分类问题是十分广泛的一个问题&#xff0c;其代表问题是&…

图表控件LightningChart JS v.4.1已经发布!引入虚线模式

LightningChart JS是性能最高的JavaScript图表库&#xff0c;专注于实时数据可视化。是Web上性能最高的图表库具有出色的执行性能 - 使用高数据速率同时监控数十个数据源。 GPU加速和WebGL渲染确保您的设备的图形处理器得到有效利用&#xff0c;从而实现高刷新率和流畅的动画。…

固态硬盘基础知识:M.2 NVMe PCIe SATA的含义及区别

SATA接口 固态硬盘开始流行于笔记本电脑上&#xff0c;使用SATA接口&#xff0c;尺寸与笔记本硬盘相同&#xff0c;为2.5英寸。 那个时候&#xff0c;如果台式机需要加装固态硬盘&#xff0c;需要使用硬盘架&#xff0c;将固态硬盘安装在硬盘架上&#xff0c;然后再安装与机箱…