当前位置: 首页 > news >正文

七十三、【Linux数据库】MySQL数据库PXC 集群概述与演示

MySQL PXC 集群概述

Percona XtraDB Cluster (PXC) 核心特性

  1. 同步复制:实时数据同步,无延迟
  2. 多主架构:所有节点可读写
  3. 自动故障转移:节点故障自动恢复
  4. 数据一致性:基于Galera的全局事务ID
  5. 在线扩展:动态添加节点

架构优势

同步复制
同步复制
同步复制
客户端
节点1
节点2
节点3

一、环境准备

1. 节点规划

节点IP地址主机名角色
节点1192.168.1.101pxc1初始节点
节点2192.168.1.102pxc2加入节点
节点3192.168.1.103pxc3加入节点

2. 系统配置

# 所有节点执行
[root@pxc1 ~]# hostnamectl set-hostname pxc1
[root@pxc1 ~]# systemctl stop firewalld
[root@pxc1 ~]# setenforce 0
[root@pxc1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3. 时间同步

# 安装NTP
[root@pxc1 ~]# yum install ntp -y
[root@pxc1 ~]# systemctl start ntpd
[root@pxc1 ~]# systemctl enable ntpd

二、PXC 集群部署

1. 安装Percona仓库

# 所有节点执行
[root@pxc1 ~]# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y
[root@pxc1 ~]# percona-release enable pxc-80 release

2. 安装PXC软件

# 所有节点执行
[root@pxc1 ~]# yum install percona-xtradb-cluster-server -y

3. 配置节点1

# 编辑配置文件
[root@pxc1 ~]# vi /etc/my.cnf
[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# PXC配置
wsrep_provider=/usr/lib64/galera4/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://192.168.1.101,192.168.1.102,192.168.1.103
wsrep_node_name=pxc1
wsrep_node_address=192.168.1.101
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth="sstuser:SstPass123!"
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB

4. 启动第一个节点

# 特殊启动命令
[root@pxc1 ~]# systemctl start mysql@bootstrap.service# 创建SST用户
[root@pxc1 ~]# mysql -uroot -p
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'SstPass123!';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;

5. 配置并启动节点2

# 编辑配置文件
[root@pxc2 ~]# vi /etc/my.cnf
[mysqld]
server-id=2
wsrep_node_name=pxc2
wsrep_node_address=192.168.1.102# 启动节点
[root@pxc2 ~]# systemctl start mysql

6. 配置并启动节点3

# 编辑配置文件
[root@pxc3 ~]# vi /etc/my.cnf
[mysqld]
server-id=3
wsrep_node_name=pxc3
wsrep_node_address=192.168.1.103# 启动节点
[root@pxc3 ~]# systemctl start mysql

三、集群验证

1. 查看集群状态

# 在任意节点执行
[root@pxc1 ~]# mysql -uroot -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+# 查看节点状态
[root@pxc1 ~]# mysql -uroot -p -e "SHOW STATUS LIKE 'wsrep_ready'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wsrep_ready  | ON    |
+---------------+-------+

2. 数据同步测试

# 在节点1创建数据库
[root@pxc1 ~]# mysql -uroot -p -e "CREATE DATABASE pxc_test"# 在节点2验证
[root@pxc2 ~]# mysql -uroot -p -e "SHOW DATABASES LIKE 'pxc_test'"
+-------------------+
| Database (pxc_test) |
+-------------------+
| pxc_test          |
+-------------------+

3. 多主写入测试

# 节点1插入数据
[root@pxc1 ~]# mysql -uroot -p pxc_test -e "CREATE TABLE test_tbl (id INT PRIMARY KEY, data VARCHAR(100))"
[root@pxc1 ~]# mysql -uroot -p pxc_test -e "INSERT INTO test_tbl VALUES (1, 'Node1')"# 节点2插入数据
[root@pxc2 ~]# mysql -uroot -p pxc_test -e "INSERT INTO test_tbl VALUES (2, 'Node2')"# 节点3查询数据
[root@pxc3 ~]# mysql -uroot -p pxc_test -e "SELECT * FROM test_tbl"
+----+-------+
| id | data  |
+----+-------+
|  1 | Node1 |
|  2 | Node2 |
+----+-------+

四、集群管理

1. 节点维护

# 安全关闭节点
[root@pxc1 ~]# systemctl stop mysql# 重新加入集群
[root@pxc1 ~]# systemctl start mysql

2. 添加新节点

# 新节点配置
[root@pxc4 ~]# vi /etc/my.cnf
[mysqld]
server-id=4
wsrep_node_name=pxc4
wsrep_node_address=192.168.1.104
wsrep_cluster_address=gcomm://192.168.1.101,192.168.1.102,192.168.1.103,192.168.1.104# 启动新节点
[root@pxc4 ~]# systemctl start mysql

3. 备份与恢复

# 全量备份
[root@pxc1 ~]# innobackupex --user=root --password=your_password /backup/# 恢复备份
[root@pxc1 ~]# systemctl stop mysql
[root@pxc1 ~]# innobackupex --apply-log /backup/2023-07-21_full/
[root@pxc1 ~]# innobackupex --copy-back /backup/2023-07-21_full/
[root@pxc1 ~]# chown -R mysql:mysql /var/lib/mysql
[root@pxc1 ~]# systemctl start mysql

命令总结表格

演示命令功能描述关键参数
percona-release enable pxc-80启用PXC仓库PXC版本
yum install percona-xtradb-cluster-server安装PXC
systemctl start mysql@bootstrap.service启动首节点引导集群
SHOW STATUS LIKE 'wsrep_cluster_size'查看集群大小节点数量
CREATE USER 'sstuser'@'localhost'创建同步用户SST认证
GRANT RELOAD, LOCK TABLES ...授权SST用户必要权限
innobackupex --backupPXC备份热备份工具
innobackupex --copy-back恢复备份数据恢复
systemctl stop mysql停止节点安全关闭
SHOW STATUS LIKE 'wsrep_ready'检查节点状态集群就绪

功能作用详解

1. PXC 架构原理

同步复制流程

Client节点1节点2节点3写请求本地写入发送写集发送写集确认应用确认应用提交成功Client节点1节点2节点3

组件功能

组件功能描述
wsrep API复制接口
Galera Library复制核心
Certification Layer冲突检测
SST/IST全量/增量同步

2. 高可用方案

故障转移流程

节点故障
集群重组
自动排除故障节点
客户端重连存活节点

脑裂防护

# 最少存活节点数
gcache.size=1G            # 增大缓存
pc.weight=1               # 节点权重
evs.keepalive_period=100  # 心跳检测
http://www.dtcms.com/a/341054.html

相关文章:

  • mvdr波束形成
  • week3-[分支结构]2023
  • STM32F407VGT6从零建立一个标准库工程模板+VSCode或Keil5
  • 【电气工程学习】
  • 可传参配置的同步异步fifo
  • PyTorch 社区贡献 和 设计原则
  • Web 安全之延迟攻击(Delay Attack)详解
  • PyCharm2025无法启动Powershell.exe的解决办法
  • 发那科机器人程序调整功能
  • 好家园房产中介网后台管理完整(python+flask+mysql)
  • 【图论】拓扑排序
  • 48 C++ STL模板库17-容器9-关联容器-映射(map)多重映射(multimap)
  • Spring Boot如何配置Liveness和Readiness探针
  • 【Android】Activity 如何进行数据传输
  • java17学习笔记-switch总结
  • 使用 GraalVM Native Image 将 Spring Boot 应用编译为跨平台原生镜像:完整指南
  • linux 内核 - 内存管理单元(MMU)与地址翻译(一)
  • yolo_RK3588系列(三)
  • mac电脑软件左上角的关闭/最小化/最大化按钮菜单的宽度和高度是多少像素
  • ijkplayer Android 编译
  • strncpy 函数使用及其模拟实现
  • AI重塑软件测试:质量保障的下一站
  • 成本管控:餐饮利润的隐形守护者
  • Zemax光学设计输出3D
  • 4位量化:常规的线性层被替换成了4位线性层(48)
  • 酶 EC number 预测工具CLEAN的安装和使用
  • QT官方库头文件找不到(添加模块方法)
  • C++模板元编程:从SFINAE到Concepts的进化史
  • mac 搭建docker-compose,部署docker应用
  • AI on Mac, Your Way!全本地化智能代理,隐私与性能兼得