当前位置: 首页 > 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.dtcms.com/a/295729.html

相关文章:

  • 深度分析Android多线程编程
  • aml1-eto 移植后多长时间转阴
  • Android跨进程通信完全教程:从基础到实战
  • 从0开始学习R语言-Day56--空间变系数模型
  • 进阶向:基于Python的轻量级Markdown笔记管理器
  • git鉴权失败问题每次clone 都要输入用户名密码问题
  • Two Knights(数学归纳)
  • 本地部署Jupyter服务,没有公网IP如何用内网穿透工具实现外网远程访问?
  • 人形机器人_双足行走动力学:Maxwell模型及在拟合肌腱特性中的应用
  • Linux 下安装Python指定版本(可离线安装)
  • Java学习----工厂方法模式
  • 线程通信模型
  • 中国西北典型绿洲区土壤水分特征(2018-2019年)
  • [火了]-----FastGPT 插件系统架构演进:从 Monorepo 到独立生态
  • Spring MVC 统一响应格式:ResponseBodyAdvice 从浅入深
  • 快速将前端得依赖打为tar包(yarn.lock版本)并且推送至nexus私有依赖仓库(笔记)
  • 【工具变量】省市县空气流通系数数据集(1940-2025.3年)
  • Dataease2.10 前端二次开发
  • Windows 系统中 CURL 命令使用指南及常见错误解析
  • Silly Tavern 教程②:首次启动与基础设置
  • 极客大挑战2019-HTTP
  • Vulnhub Matrix-Breakout-2-Morpheus靶机攻略
  • 网络资源模板--基于Android Studio 实现的线上点餐系统
  • 【Linux基础知识系列】第六十三篇 - 文件编辑器基础:vim
  • 自己动手造轮子:如何创建JAR并通过Maven在Spring Boot中引用
  • Opencv C# 重叠 粘连 Overlap 轮廓分割 (不知道不知道)
  • Unity 进行 3D 游戏开发如何入门
  • AUTOSAR进阶图解==>AUTOSAR_SWS_BSWModeManager
  • 智慧驾驶疲劳检测算法的实时性优化
  • 深入思考【九九八十一难】的意义,试用歌曲能否解释