Centos9环境部署MySQL的PXC

前期理解

pxc就是将多个mysql数据库整合为一个集群,每台服务器上的mysql数据库会实时同步,而且节点与节点之间,他们相互的关系是对等的。PXC 最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常严格,这也能非常完美的保证 MySQL 集群的数据一致性。

前期规划

角色ip操作系统内核软件包

MySQL服务器

192.168.80.161

CentOS

Stream 9

5.14.0-

381.el9.x86_64

MySQL服务器

192.168.80.162

CentOS

Stream 9

5.14.0-

381.el9.x86_64

MySQL服务器

192.168.80.163

CentOS

Stream 9

5.14.0-

381.el9.x86_64

实现目标

三台MySQL服务器全部配置PXC,实现数据库的同步

安装依赖

yum -y install openssl

安装pxc

查看glibc版本,以便下载对应的包

rpm -qi glibc

官网下载地址

Software Downloads - Percona

修改hosts文件和主机名称

192.168.80.161  my-161

192.168.80.162  my-162

192.168.80.163  my-163

修改各自的主机名称

hostnamectl set-hostname --static my-161

hostnamectl set-hostname --static my-162

hostnamectl set-hostname --static my-163

安装pxc之前的话,首先安装两个包

qpress-11-1.el8.x86_64.rpm

percona-xtrabackup-24-2.4.18-1.el8.x86_64.rpm

如有需要,可以留言联系。

安装qpress(三台相同)

yum -y localinstall qpress-11-1.el8.x86_64.rpm

安装percoa-xtrabackup(三台相同)

yum -y localinstall percona-xtrabackup-24-2.4.18-1.el8.x86_64.rpm

安装Percona-XtraDB-Cluster(pxc的安装包)

mkdir Percona-XtraDB-Cluster

tar xf Percona-XtraDB-Cluster-8.0.35-r84d9464-el9-x86_64-bundle  -C Percona-XtraDB-Cluster/

cd  Percona-XtraDB-Cluster/

yum localinstall *.rpm

安装完成之后检查环境信息

 mysql --version

查看状态

systemctl status mysql

PXC配置

/etc/my.cnf为主配置文件

早期的版本还有其他配置文件在/etc/percona-xtradb-cluster.conf.d目录,包括mysqld.cnf,mysqld_safe.cnf,wsrep.cnf等。

安装后默认的配置文件内容

[root@my-161 ~]# grep -Ev "^#|^$" /etc/my.cnf

[client]

socket=/var/lib/mysql/mysql.sock

[mysqld]

server-id=1

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

binlog_expire_logs_seconds=604800

wsrep_provider=/usr/lib64/galera4/libgalera_smm.so

wsrep_cluster_address=gcomm://

binlog_format=ROW

wsrep_slave_threads=8

wsrep_log_conflicts

innodb_autoinc_lock_mode=2

wsrep_cluster_name=pxc-cluster

wsrep_node_name=pxc-cluster-node-1

pxc_strict_mode=ENFORCING

wsrep_sst_method=xtrabackup-v2

配置server-id

三台服务器配置sever-id  后面的数字必须为唯一的ID 不能为复数

161主机配置

162主机配置

163主机配置

集群中所有节点的ip(三台都须配置)

wsrep_cluster_address=gcomm://

修改节点名称

添加以下内容

wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"

lower_case_table_names=1

max_allowed_packet=200M

character-set-server=utf8

[sst]

encrypt=4

ssl-key=server-key.pem

ssl-ca=ca.pem

ssl-cert=server-cert.pem

修改完成的配置文件(161主机为例)

[root@my-161 ~]# grep -Ev "^#|^$" /etc/my.cnf

[client]

socket=/var/lib/mysql/mysql.sock

[mysqld]

#

server-id=161

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

binlog_expire_logs_seconds=604800

wsrep_provider=/usr/lib64/galera4/libgalera_smm.so

#

wsrep_cluster_address=gcomm://192.168.80.161,192.168.80.162,192.168.80.163

binlog_format=ROW

wsrep_slave_threads=8

wsrep_log_conflicts

innodb_autoinc_lock_mode=2

wsrep_cluster_name=pxc-cluster

#

wsrep_node_name=my-161

pxc_strict_mode=ENFORCING

wsrep_sst_method=xtrabackup-v2

#

wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"

lower_case_table_names=1

max_allowed_packet=200M

character-set-server=utf8

[sst]

encrypt=4

ssl-key=server-key.pem

ssl-ca=ca.pem

ssl-cert=server-cert.pem

三台服务器创建 /mysql/pxc

mkdir -pv  /mysql/pxc

三台服务器的相关的路径正确赋权

mkdir -p /mysql/pxc;chown -R mysql.mysql /mysql/pxc

首节点初次启动集群

首节点可以是任意节点,此处采用my-161作为首节点,执行如下命令启动

[root@my-161 ~]#  systemctl start mysql@bootstrap.service

查看密码

grep 'temporary password' /mysql/pxc/mysqld.log

[root@my-161 ~]# grep 'temporary password' /mysql/pxc/mysqld.log

2024-02-29T04:00:11.385479Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: clt_ri41ki?D

mysql -u root -p ‘clt_ri41ki?D

输入密码的时候,可能初始化的密码有特殊字符,需要将密码使用单引号包起来

可以登录

修改密码

ALTER USER 'root'@'localhost'IDENTIFIED BY'zi2W%ezO10';

刷新

关闭首节点

systemctl stop mysql@bootstrap.service

再次启动首节点

systemctl start mysql@bootstrap.service

查看是否可以登录

mysql -uroot -p'zi2W%ezO10'

复制主节点的加密文件

SSL加密的自动配置需要密钥和证书文件。MySQL会生成一个默认密钥和证书文件,并将它们放置在数据目录中。
重要的是,群集在所有节点上使用相同的SSL证书。
原来各个节点的pem文件必须一致才可以!

把主机点的加密文件复制到本地
scp my-161:/mysql/pxc/data/*.pem /mysql/pxc/data

包括了如下文件
ca-key.pem
ca.pem
client-cert.pem
client-key.pem
private_key.pem
public_key.pem
server-cert.pem
server-key.pem

在另外两台主机上启动mysql

systemctl start mysql

可能时间较长,请耐心等待

启动成功之后,两台从节点的主机使用主节点的用户和密码登录

mysql -uroot -p'zi2W%ezO10'

162主机登录

163主机登录

启动成功之后在主节点创建库

create database www;

进入库

use www;

创建表

CREATE TABLE users (

    id INT PRIMARY KEY,

    name VARCHAR(255),

    age INT

);

插入两条数据

INSERT INTO users (id, name, age) VALUES (1, '张三', 20);

INSERT INTO users (id, name, age) VALUES (2, '李四', 25);

162主机查看

163主机查看

基本配置完成

关闭Percona Server开机自启动

systemctl disable mysql
之所以要禁用开机自启,是因为在PXC集群中,当一个节点宕机重启后,它会随机与一个PXC节点进行数据同步。如果该节点宕机时间过长,那么需要同步的数据量就会比较大。当发生大量数据同步时,PXC集群会限制其他的写入操作,直到数据全部同步成功。所以长时间宕机之后,正确的做法是不要马上启动节点,而是先从其他节点拷贝数据文件到该节点中,然后再进行启动。这样需要同步的数据就会少很多,不会引起长时间的限速。

参考文档

Percona XtraDB Cluster 8.0.21部署实战 - Liking's Blog【目前网络上还没有比较完善的PXC最新版本8.0的中文部署参考,结合项目需要,本人完全基于官方文档,做了一次全新尝试。本文基于PXC最新版本8.0.21,详细记录了在CentOS7的部署过程,值得参考】 “Percona XtraDB Cluster是MySQL的数据库集群解决方案。它确保高可用性,防止停机和数据丢失,并为不断增长的环境提供线性可伸缩性。”---来自官网 PXC近几年广为应用的应该是5.6、5.7版本,笔者于2018年在某项目部署的版本就是5.7,也留下了深刻印象。 最新的版本是8.0,相比较5.7 […]icon-default.png?t=N7T8http://liking.site/2021/03/08/percona-xtradb-cluster-8-0-21%E9%83%A8%E7%BD%B2%E5%AE%9E%E6%88%98/

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

练习 5 Web [GXYCTF2019]BabyUpload

[GXYCTF2019]BabyUpload 猜测直接上传txt会被过滤,提示“上传类型也太露骨了吧!”按经验传入一个"muma.phtml" 提示过滤了“ph”相关的后缀 传入muma.jpg等图像格式,提示表明复原并检测了文件内容 审查文件后缀Context-type 不能…

SSD LDPC软错误探测方案解读

上一篇文档中,基于SSD LDPC(Low-Density Parity-Check Codes)原理背景和纠错能力作了简单的介绍。 扩展阅读: 关于SSD LDPC纠错能力的基础探究 浅析LDPC软解码对SSD延迟的影响 本篇结合SMI发布的研究成果,通过SSD控制内部LDPC更底层的架构,来解读如何增强软错误探测能力…

外包干了8天,技术退步明显。。。。。

先说一下自己的情况,本科生,19年通过校招进入杭州某软件公司,干了接近3年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

java017 - Java抽象类

1、概述 一般情况,动物是抽象的,所以不能被new,比如你在Animal类中定义一个成员方法eat,你不能定义具体内容,比如吃鱼或者吃白菜,因为动物是抽象的。 一个没有方法体的方法,应该定义为抽象方法,而类中如果…

应用层协议--HTTP

目录 一.HTTP是什么? 二.HTTP的请求和响应 a.请求: b.响应: 三.URL 四.Header 1.Host 2. Content-Length 3. Content-Type a. 请求 b. 响应 4. Referer 5. User-Agent 6. Cookie 一.HTTP是什么? HTTP是一种应用层协议&#xff0c…

2024-3-7 市场分歧视角

昨天安奈儿市场带领市场情绪一致,新型工业化方向独占鳌头,日内高潮节点尾盘老龙 克来机电涨停,昨晚很多老师在YY老龙是不是要二波了,呵呵。 今天市场分歧从竞价就开始了,隔夜单我记忆中 天奇股份88亿,上海…

Leetcode 239:滑动窗口最大值

题意 大小为 k 的滑动窗口从整数数组 nums 的最左侧移到最右侧,只能看到滑动窗口中的 k 个数字,窗口每次向右移动一位。 返回滑动窗口的最大值。 示例 1: 输入:nums [1,3,-1,-3,5,3,6,7], k 3 输出:[3,3,5,5,6,7] …

网工内推 | 上市公司售前,大专以上即可,最高15K*13薪,补贴多

01 北京神州新桥科技有限公司 招聘岗位:售前工程师 职责描述: 1、完成项目的售前技术支持工作; 2、 配合销售进行新产品及解决方案的推广工作; 3、 配合销售完成用户的售前技术交流方案准备、现场技术交流、技术方案宣讲等工作…

如何在小程序中绑定身份证

在小程序中绑定身份证信息是一项常见的需求,特别是在需要进行实名认证或者身份验证的场景下。通过绑定身份证信息,可以提高用户身份的真实性和安全性,同时也为小程序提供了更多的个性化服务和功能。下面就介绍一下怎么在小程序中绑定居民身份…

几何工具的使用

Geometry - Creation 创建几何 CogCreateCircleTool:创建圆CogCreateEllipseTool:创建椭圆CogCreateLineBisectPointsTool:带有两个点的平行线CogCreateLineParallelTool:在某一点创建某条线的平行线CogCreateLinePerpendicularTool:在某一点创建某条线…

JVM内存分配机制

JVM内存分配机制 对象的创建 对象创建的主要流程 1.类加载检查 虚拟机遇到一条new的指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相…

RISC-V架构学习资料整理

1、韦东山——D1S哪吒开发板的裸机代码仓库 https://github.com/bigmagic123/d1-nezha-baremeta 2、melis系统移植到D1S https://blog.51cto.com/u_13800193/6268813 3、韦东山的gitee仓库 https://gitee.com/weidongshan 4、D1S编译工具链下载 https://github.com/Tina-Linux/…