Linux云计算 |【第四阶段】RDBMS2-DAY5

发布于:2025-04-20 ⋅ 阅读:(16) ⋅ 点赞:(0)

主要内容:

PXC概述、部署PXC(自动故障恢复测试)、存储引擎、读锁/写锁、表锁/行锁、常用的存储引擎介绍

一、PXC概述

PXC(Percona XtraDB Cluster,简称PXC集群),是基于Galera的MySQL高可用集群解决方案,提供了多主复制、自动故障转移和数据一致性等特性。Galera Cluster是Codership公司开发的一套免费开源的高可用方案(MySQL发行版),PXC集群主要由两部分组成:Percona Server with XtraDB 和 Write Set Replication patches(使用了Galera library,一个通用的用于事务型应用的同步、多主复制插件);可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据一致性;PXC与mariadb的集群maridb-cluster原理是一样的。

官网地址:Galera Cluster for MySQL | The world's most advanced open-source database cluster.

1、PXC主要特性

1)多主复制:

  • PXC支持多主复制,这意味着每个节点都可以同时读写,没有单点故障。
  • 所有节点都是对等的,任何节点都可以接受写操作。

2)数据一致性:

  • PXC使用Galera Cluster的同步复制技术,确保所有节点上的数据一致性。
  • 事务在所有节点上同时提交,避免了数据不一致的问题。

3)自动故障转移:

  • 当某个节点发生故障时,其他节点会自动接管,确保服务的连续性。
  • 无需手动干预,系统会自动检测并处理故障。

4)高可用性:

  • PXC通过多节点部署和自动故障转移,提供了高可用性。
  • 即使某个节点发生故障,集群仍然可以正常运行。

5)扩展性:

  • PXC支持水平扩展,可以通过增加节点来提高集群的处理能力。
  • 每个节点都可以处理读写请求,提高了系统的整体性能。

6)低延迟复制:

  • PXC的复制是同步的,确保了低延迟的数据复制。
  • 数据在所有节点上几乎同时更新,避免了数据延迟的问题。

2、PXC架构

基于Galera Cluster,主要由以下组件组成:

节点(Node):

每个节点都是一个独立的MySQL实例,运行在不同的服务器上。节点之间通过Galera复制协议进行通信,确保数据一致性。

Galera复制插件:

Galera复制插件是PXC的核心组件,负责管理节点之间的数据复制。它确保所有节点上的数据一致性,并处理故障转移和节点加入/退出等操作。

wsrep API:

wsrep API是Galera Cluster的接口,用于与MySQL集成。它提供了事务处理、数据复制和节点管理等功能。

3、端口介绍

① 3306:数据库对外服务的端口号

说明:这是MySQL的标准端口,用于客户端连接到数据库服务器。PXC节点通过这个端口提供数据库服务,客户端可以通过这个端口进行读写操作。

② 4444:SST端口(State Snapshot Transfer)

说明:SST用于全量同步,当一个新的节点加入集群时,它需要从现有节点获取完整的数据副本。PXC支持多种SST方法,如xtrabackup、rsync和mysqldump。4444端口用于请求和传输这些全量数据。

③ 4567:集群通信端口

说明:SST用于全量同步,当一个新的节点加入集群时,它需要从现有节点获取完整的数据副本。PXC支持多种SST方法,如xtrabackup、rsync和mysqldump。4444端口用于请求和传输这些全量数据。

④ 4568:IST端口(Incremental State Transfer)

说明:IST用于增量同步,相对于SST来说,IST只传输自上次同步以来的增量数据。当一个节点加入集群时,如果已经有部分数据,可以通过IST端口获取增量数据,而不是全量数据。

 

4、名词介绍

SST(State Snapshot Transfer):

  • 全量同步:当一个新的节点加入集群时,它需要从现有节点获取完整的数据副本。SST通过4444端口进行全量数据的传输。

IST(Incremental State Transfer):

  • 增量同步:相对于SST来说,IST只传输自上次同步以来的增量数据。当一个节点加入集群时,如果已经有部分数据,可以通过IST端口获取增量数据,而不是全量数据。

WS(write set):

  • 写数据集:在PXC中,每个写操作(事务)都会生成一个写数据集(write set),这个写数据集包含了所有需要更新的数据和元数据。写数据集通过4567端口在节点之间进行复制,确保数据一致性。


部署PXC示例:

网络实验拓扑:

  • 服务器角色:mysql1、mysql2、mysql3(三台相互独立的mysql服务器)
  • Mysql1:IP为192.168.2.11、安装Percona-XtraDB-Cluster
  • Mysql2:IP为192.168.2.12、安装Percona-XtraDB-Cluster
  • Mysql3:IP为192.168.2.13、安装Percona-XtraDB-Cluster

提示:提前关闭防火墙和SELinux

步骤1:初始化环境准备(主机名解析、安装软件包)

① 配置服务器的名称解析

[root@mysql1 ~]# for i in {1..3}
> do
> echo -e "192.168.2.1$i\tmysql$i" >> /etc/hosts
> done
[root@mysql1 ~]# cat /etc/hosts
192.168.2.11    mysql1
192.168.2.12    mysql2
192.168.2.13    mysql3

[root@mysql2 ~]# for i in {1..3}
> do
> echo -e "192.168.2.1$i\tmysql$i" >> /etc/hosts
> done
[root@mysql1 ~]# cat /etc/hosts
192.168.2.11    mysql1
192.168.2.12    mysql2
192.168.2.13    mysql3

[root@mysql3 ~]# for i in {1..3}
> do
> echo -e "192.168.2.1$i\tmysql$i" >> /etc/hosts
> done
[root@mysql1 ~]# cat /etc/hosts
192.168.2.11    mysql1
192.168.2.12    mysql2
192.168.2.13    mysql3

② 准备yum源(参考:/linux-soft/4/pxc/Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar)

[root@localhost ~]# cd pxc/
[root@ localhost pxc]# tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
[root@ localhost pxc]# ls

[root@ localhost pxc]# cp *.rpm /var/www/html/mysql/   //复制解压的RPM包到/var/www/html/mysql/
[root@ localhost pxc]# cd /var/www/html/mysql/
[root@ localhost mysql]# createrepo -v .

[root@localhost ~]# scp /etc/yum.repos.d/mysql.repo root@192.168.2.11:/etc/yum.repos.d/
[root@localhost ~]# scp /etc/yum.repos.d/mysql.repo root@192.168.2.12:/etc/yum.repos.d/
[root@localhost ~]# scp /etc/yum.repos.d/mysql.repo root@192.168.2.13:/etc/yum.repos.d/


网站公告

今日签到

点亮在社区的每一天
去签到