mysql8.0使用PXC实现高可用

一、PXC简介

1.什么是 PXC

PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。PXC 最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常严格,这也能非常完美的保证 MySQL 集群的数据一致性;

2.PXC 的特点

  • 完全兼容 MySQL。

  • 同步复制,事务要么在所有节点提交或不提交。

  • 多主复制,可以在任意节点进行写操作。

  • 在从服务器上并行应用事件,真正意义上的并行复制。

  • 节点自动配置,数据一致性,不再是异步复制。

  • 故障切换:因为支持多点写入,所以在出现数据库故障时可以很容易的进行故障切换。

  • 自动节点克隆:在新增节点或停机维护时,增量数据或基础数据不需要人工手动备份提供,galera cluster 会自动拉取在线节点数据,集群最终会变为一致。

3.PXC 的优缺点

优点

  • 服务高可用。

  • 数据同步复制(并发复制),几乎无延迟。

  • 多个可同时读写节点,可实现写扩展,不过最好事先进行分库分表,让各个节点分别写不同的表或者库,避免让 galera 解决数据冲突。

  • 新节点可以自动部署,部署操作简单。

  • 数据严格一致性,尤其适合电商类应用。

  • 完全兼容 MySQL。

缺点

  • 复制只支持InnoDB 引擎,其他存储引擎的更改不复制。

  • 写入效率取决于节点中最弱的一台,因为 PXC 集群采用的是强一致性原则,一个更改操作在所有节点都成功才算执行成功。

  • 所有表都要有主键。

  • 不支持 LOCK TABLE 等显式锁操作。

  • 锁冲突、死锁问题相对更多。

4.PXC 与 Replication 的区别

Replication PXC
数据同步是单向的,master 负责写,然后异步复制给 slave;如果 slave 写入数据,不会复制给 master 数据同步时双向的,任何一个 mysql 节点写入数据,都会同步到集群中其它的节点
异步复制,从和主无法保证数据的一致性 同步复制,事务在所有集群节点要么同时提交,要么同时不提交

5.PXC 常用端口

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

  • 4444:请求 SST 的端口。

  • 4567:组成员之间进行沟通的一个端口号。

  • 4568:用于传输 IST。

  • SST(State Snapshot Transfer): 全量传输

  • IST(Incremental state Transfer):增量传输

二、搭建 PXC 集群步骤

Percona XtraDB Cluster (简称 PXC)集群是基于 Galera 2.x library,事务型应用下的通用的多主同步复制插件,主要用于解决强一致性问题,使得各个节点之间的数据保持实时同步以及实现多节点同时读写。提高了数据库的可靠性,也可以实现读写分离,是 MySQL 关系型数据库中大家公认的集群优选方案之一。

准备好下面三台服务器,本文搭建PXC集群基于CentOS7.x:

IP 端口 角色
192.168.233.71 3306 pxc1
192.168.233.72 3306 pxc2
192.168.233.73 3306 pxc3

1.配置hosts解析

在每个节点上编辑 /etc/hosts 文件,添加其他节点的主机名和 IP 地址

echo "192.168.1.133 pxc1" >> /etc/hosts
echo "192.168.1.135 pxc2" >> /etc/hosts
echo "192.168.1.136 pxc3" >> /etc/hosts

 查看:

2.关闭防火墙和 SELinux

为简化部署,暂时关闭防火墙和 SELinux。在生产环境中,建议根据实际需求配置安全策略。

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

3.安装依赖包

安装必要的依赖包

yum install -y libaio perl-DBD-MySQL

三、安装 Percona XtraDB Cluster

percona-xtrabackup和Percona-XtraDB-Cluster登录下面地址找到相关版本来进行下载软件包 下载地址:https://www.percona.com/downloads qpress-1.1-14.11.x86_64.rpm需要使用wget来下载

 

软件作用

percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm

在线热备程序

qpress.1.1-14.11.x86_64.rpm

递归压缩程序

Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar

1.安装软件

—— 三台服务器分别安装

—— 这三个软件包有依赖关系,安装时注意安装顺序

将下载好的软件包上传到Linux操作系统上

 

1.添加 Percona 软件仓库
在每个节点上添加 Percona 的 YUM 仓库

yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
percona-release setup pxc80

 

2 安装 PXC

安装 Percona XtraDB Cluster 和相关工具:

yum install -y

### 部署 MySQL PXC 8.0 的配置教程 部署 MySQL Percona XtraDB Cluster (PXC) 8.0实现高可用性集群的一种有效方法。以下是详细的配置步骤和注意事项。 #### 环境准备 确保所有节点的操作系统版本一致,并安装必要的软件包。例如,CentOS 或 Ubuntu 可以通过以下命令安装基础依赖项: ```bash sudo yum install -y epel-release sudo yum install -y percona-xtradb-cluster80 ``` #### 配置 MySQL 数据目录权限 在每个节点上设置正确的数据目录权限,确保 MySQL 用户可以访问该目录。 ```bash chown -R mysql:mysql /var/lib/mysql/ ``` 此操作是必要的,因为 MySQL 服务需要对 `/var/lib/mysql/` 目录拥有读写权限[^1]。 #### 启动 MySQL 服务 启动 MySQL 服务并确保其正常运行。 ```bash systemctl start mysqld systemctl enable mysqld ``` #### 修改 MySQL 配置文件 编辑 MySQL 配置文件 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`,添加或修改以下参数以支持 PXC 功能: ```ini [mysqld] wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address=gcomm://pxc1,pxc2,pxc3 wsrep_node_address=<node-ip> wsrep_node_name=<node-name> wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth=root:<password> binlog_format=ROW default_storage_engine=InnoDB innodb_autoinc_lock_mode=2 ``` - `wsrep_cluster_address`:指定集群中所有节点的地址。 - `wsrep_node_address` 和 `wsrep_node_name`:分别为当前节点的 IP 地址和名称。 - `wsrep_sst_auth`:SST(State Snapshot Transfer)认证信息,用于节点间的数据同步[^2]。 #### 初始化第一个节点 在第一个节点上初始化集群: ```bash galera_new_cluster ``` 这将启动一个全新的 Galera 集群实例[^3]。 #### 加入其他节点 在其他节点上启动 MySQL 服务,它们会自动加入到已存在的集群中: ```bash systemctl start mysqld ``` #### 验证集群状态 登录 MySQL 并检查集群的状态: ```sql SHOW STATUS LIKE 'wsrep%'; ``` 关注以下关键指标: - `wsrep_cluster_size`:表示集群中的节点数量。 - `wsrep_ready`:如果值为 `ON`,则表示节点已准备好处理查询。 - `wsrep_connected`:如果值为 `ON`,则表示节点已成功连接到集群。 #### Docker 部署 MySQL PXC 如果使用 Docker 部署 MySQL PXC,可以参考以下命令创建容器: ```bash docker run --name=mysql-pxc -e MYSQL_ROOT_PASSWORD=<password> \ -e WSREP_CLUSTER_ADDRESS=gcomm://<node1-ip>,<node2-ip>,<node3-ip> \ -e WSREP_NODE_ADDRESS=<node-ip> \ -e WSREP_NODE_NAME=<node-name> \ -d percona/percona-xtradb-cluster:8.0 ``` 确保为每个节点设置唯一的 `WSREP_NODE_ADDRESS` 和 `WSREP_NODE_NAME`[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值