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

MySQL高可用部署

目录

一、MHA(一主多从模式)

1.环境准备(所有节点)

2. 部署 MySQL 主从复制(Master+Slave)

3.部署 MHA Manager(管理节点)

(1)安装 MHA Manager

(2)配置 SSH 无密码登录

(3)创建 MHA 配置文件

4.部署 MHA Node(所有 MySQL 节点)

5.验证和启动 MHA

二、PXC(多主模式)

1.环境准备

2.安装 PXC 相关软件(所有节点)

3.配置 PXC(所有节点)

(1)创建数据目录并设置权限

(2)修改配置文件

4.启动 PXC 集群

5.初始化配置和测试


一、MHA(一主多从模式)

1.环境准备(所有节点)

# 关闭防火墙和 SELinux
systemctl stop ufw
systemctl disable ufw
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0# 配置主机名和 hosts 文件
# 主库(master)
hostnamectl set-hostname mysql-master
echo "192.168.10.61 mysql-master" >> /etc/hosts
echo "192.168.10.62 mysql-slave1" >> /etc/hosts
echo "192.168.10.63 mha-manager" >> /etc/hosts# 从库1(slave1)和从库2(slave2)执行相同操作,修改hostnamectl为对应主机名# 安装依赖包
sudo apt-get install -y make gcc libc6-dev libssl-dev libdbd-mysql-perl libdbi-perl libnet-daemon-perl libplrpc-perl libio-socket-ssl-perl

2. 部署 MySQL 主从复制(Master+Slave)

参照Mysql主从复制部署_mysql replication部署操作-CSDN博客

3.部署 MHA Manager(管理节点)

(1)安装 MHA Manager

wget https://mirrors.aliyun.com/ubuntu/pool/universe/m/mha4mysql-manager/mha4mysql-manager_0.58-1.1_all.deb
sudo dpkg -i mha4mysql-manager_*.deb
sudo apt-get install -f  # 解决依赖问题

(2)配置 SSH 无密码登录

参考ssh免密登录-CSDN博客

(3)创建 MHA 配置文件

mkdir -p /etc/mha/masterha/app1
vim /etc/mha/masterha/app1.cnf

配置内容:

[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
master_binlog_dir=/var/lib/mysql
user=mha_admin  # MHA管理用户
password=password  # MHA管理用户密码
ping_interval=1  # 检测间隔(秒)
repl_user=repl  # 复制用户
repl_password=password  # 复制用户密码
ssh_user=root  # SSH用户
secondary_check_script="masterha_secondary_check -s mysql-slave1 -s mysql-slave2"  # 双节点检测[server1]
hostname=mysql-master
port=3306[server2]
hostname=mysql-slave1
port=3306
candidate_master=1  # 候选主库
check_repl_delay=0  # 不检查复制延迟[server3]
hostname=mysql-slave2
port=3306
candidate_master=1
check_repl_delay=0

4.部署 MHA Node(所有 MySQL 节点)

# 1.安装 MHA Node
# 在所有MySQL节点(master、slave1、slave2)执行
wget https://mirrors.aliyun.com/ubuntu/pool/universe/m/mha4mysql-node/mha4mysql-node_0.58-1.1_all.deb
sudo dpkg -i mha4mysql-node_*.deb
sudo apt-get install -f  # 解决依赖问题# 2.创建 MHA 管理用户
# 在所有MySQL节点执行
CREATE USER 'mha_admin'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'mha_admin'@'%';
FLUSH PRIVILEGES;

5.验证和启动 MHA

# 检查 SSH 连通性
# 在mha-manager节点执行
masterha_check_ssh --conf=/etc/mha/masterha/app1.cnf# 检查复制状态
masterha_check_repl --conf=/etc/mha/masterha/app1.cnf# 启动 MHA Manager
nohup masterha_manager --conf=/etc/mha/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &# 查看 MHA 状态
masterha_check_status --conf=/etc/mha/masterha/app1.cnf

注意事项:
二进制日志保留:主库需保留足够的 binlog(expire-logs-days设置长一些),避免故障转移时从库需要旧 binlog。
VIP 管理:生产环境建议配合 Keepalived 或 LVS 实现 VIP 自动漂移。
监控告警:监控 MHA Manager 日志(/var/log/masterha/app1/manager.log)和 MySQL 复制状态。
参数优化:根据实际情况调整ping_interval(检测频率)和secondary_check_script(双节点检测)。 

二、PXC(多主模式)

1.环境准备

# 关闭防火墙和 SELinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0# 配置主机名和 hosts 文件
# 节点1
hostnamectl set-hostname pxc-node1
echo "192.168.4.1 pxc-node1" >> /etc/hosts
echo "192.168.4.2 pxc-node2" >> /etc/hosts
echo "192.168.4.3 pxc-node3" >> /etc/hosts# 节点2和节点3执行相同操作,修改hostnamectl为对应主机名

2.安装 PXC 相关软件(所有节点)

# 1.安装依赖包
yum install -y epel-release
yum install -y libev lsof perl-Compress-Raw-Bzip2 perl-Compress-Raw-Zlib perl-DBD-MySQL perl-DBI perl-Digest perl-Digest-MD5 perl-IO-Compress perl-Net-Daemon perl-PlRPC qpress socat openssl openssl-devel# 2.卸载 mariadb(如果已安装)
rpm -e mariadb-libs --nodeps# 3.安装 XtraBackup
yum -y install percona-xtrabackup-24-2.4.18-1.el7.x86_64.rpm# 4.创建 MySQL 用户和组
groupadd -r mysql
useradd -M -s /bin/false -r -g mysql mysql# 5.安装 Percona XtraDB Cluster
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install Percona-XtraDB-Cluster-57

3.配置 PXC(所有节点)

(1)创建数据目录并设置权限

mkdir -p /data/local/percona-xtradb-cluster/data
chown -R mysql:mysql /data/local/percona-xtradb-cluster/data
mkdir -p /data/local/percona-xtradb-cluster/run
chown -R mysql:mysql /data/local/percona-xtradb-cluster/run
mkdir -p /data/logs/mysql
chown -R mysql:mysql /data/logs/mysql
touch /data/logs/mysql/error.log

(2)修改配置文件

         默认的/etc/my.cnf文件可以删除或重新指定路径,写入以下内容(以节点 1 为例,节点 2 和节点 3 需修改server_id、wsrep_node_name、wsrep_node_address)

socket = /data/local/percona-xtradb-cluster/run/mysql.sock
datadir = /data/local/percona-xtradb-cluster/data
socket = /data/local/percona-xtradb-cluster/run/mysql.sock
pid-file = /data/local/percona-xtradb-cluster/run/mysql.pid
wsrep_cluster_address=gcomm://192.168.4.1,192.168.4.2,192.168.4.3
pxc_strict_mode=ENFORCING
wsrep_cluster_name=test-pxc
wsrep_node_name=pxc-node1
wsrep_node_address=192.168.4.1

4.启动 PXC 集群

# 引导第一个节点(以节点 1 为例)
systemctl start mysql@bootstrap.service# 启动其他节点(节点 2 和节点 3)
systemctl start mysql
systemctl disable mysql

5.初始化配置和测试

获取初始密码并修改:
        在任意节点上通过grep password /data/logs/mysql/error.log获取临时密码,然后登录 MySQL 修改密码。
创建 SST 传输账号:
        登录 MySQL 后执行以下命令创建 SST 传输所需的账号

grant all privileges on *.* to'sst'@'localhost' identified by 'password';

 查看集群状态:
        在任意节点上登录 MySQL,执行show status like 'wsrep%';命令,查看集群状态相关信息,确保wsrep_cluster_size显示正确的节点数,wsrep_local_state值为 4(表示正常),wsrep_ready为ON。
测试集群:
        可以在一个节点上创建数据库、表并插入数据,然后在其他节点上查看是否能同步数据,或者停止某个节点的 MySQL 服务,观察其他节点的集群状态和数据是否正常,再重新启动该节点,查看数据是否能恢复同步。

http://www.xdnf.cn/news/1178425.html

相关文章:

  • MySQL的底层原理--InnoDB记录存储结构
  • Mysql大数据架构设计:当表中数据超过800万时,对数据表进行分表操作,以及分页查询优化详解
  • C++扩展 --- 并发支持库(下)
  • 【YOLO系列】YOLOv4详解:模型结构、损失函数、训练方法及代码实现
  • PA333H-2K功率计:光伏行业高压测试“刚需”
  • 智慧驾驶疲劳检测算法的实时性优化
  • ARM 学习笔记(四)
  • 嵌入式软件--stm32 DAY 9 定时器
  • Springmvc的自动解管理
  • 一文说清楚Hive中常用的聚合函数[collect_list]
  • 一文读懂 HTTPS:证书体系与加密流程
  • Percona pt-archiver 出现长事务
  • GISBox实操指南:如何将IFC文件高效转换为3DTiles格式‌‌
  • 【MAC电脑系统变量管理】
  • 基于Zig语言,opencv相关的c++程序静态交叉编译
  • 微服务-springcloud-springboot-Skywalking详解(下载安装)
  • 设置后轻松将 iPhone 转移到 iPhone
  • 基于SpringBoot+Uniapp的健身饮食小程序(协同过滤算法、地图组件)
  • Socket编程入门:从IP到端口全解析
  • C语言(长期更新)第5讲:数组练习(三)
  • Apache 消息队列分布式架构与原理
  • 开发避坑短篇(5):vue el-date-picker 设置默认开始结束时间
  • LLM层归一化:γβ与均值方差的协同奥秘
  • 力扣面试150题--在排序数组中查找元素的第一个和最后一个位置
  • 5.7 input子系统
  • 「Linux命令基础」查看用户和用户组状态
  • Silly Tavern 教程②:首次启动与基础设置
  • 文件管理困境如何破?ZFile+cpolar打造随身云盘新体验
  • Apache Flink 实时流处理性能优化实践指南
  • TRUMPF TruConvert DC 1008 – 1010 TruConvert System Control 逆变器