Mysql MHA

拓扑:
Server3 : master
Server2 : slave
Server1 : slave
server4 : monitor

1. 进行主从复制的搭建

主从复制(MHA最好使用半同步方式)
进行主库的建立

配置文件的编辑:

Master数据库上的配置

创建复制用户

[root@server3 ~]# mysql -p
mysql> grant replication slave on *.* to 'server'@'172.25.25.%' identified by 'Redhat+123';
mysql> flush privileges;
mysql> show master status;

这里写图片描述

进行主从库数据信息一致性的建立

备份主库信息到从库
在master上的配置

 [root@server3 ~]# mysqldump -pRedhat+123 --master-data=2 --single-transaction -R --triggers -A > all.sql
 把备份复制到两个slave主机
 [root@server3 ~]# scp all.sql server1:/data   
 [root@server3 ~]# scp all.sql server2:/data  
 #在slave上的配置
 server1和server2的配置相同,以server1为例,server2做同样配置
 建立目录并把数据库导到文件
 [root@server1 ~]# mkdir /data
 [root@server1 ~]# mysql -pRedhat+123 < /data/all.sql

这里写图片描述

 server2做同样配置

这里写图片描述

进行从库的建立
为从库设定主库(两个从库设定相同)

server1

 [root@server1 ~]# mysql -p
 mysql> CHANGE MASTER TO MASTER_HOST='172.25.25.3',MASTER_USER='server',
 MASTER_PASSWORD='Redhat+123',
 MASTER_LOG_FILE='mysql- bin.000001',
 MASTER_LOG_POS=601;   
 mysql> show slave status\G
 查看从库状态

这里写图片描述

2. 配置monitor主机

安装软件包
 [root@server4 ~]# yum install perl-DBD-MySQL -y
 [root@server4 ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 
 [root@server4 ~]# yum install -y perl-*
 [root@server4 ~]# yum install -y mha4mysql-manager-0.56-0.el6.noarch.rpm 
进行配置

这里写图片描述

slave的配置,两个slave都做

设置定期清理relay脚本

[root@server1 ~]# vim purge_relay_log.sh

这里写图片描述

定期执行脚本
 [root@server1 ~]# crontab -e
 no crontab for root - using an empty one
 crontab: installing new crontab
 [root@server1 ~]# crontab -l
 0 4 * * * /bin/bash /root/purge_relay_log.sh

这里写图片描述

两个Slave数据库配置

 mysql> set global relay_log_purge=0;
在Master上创建监控用户
 [root@server3 ~]# mysql -p
 mysql> grant all privileges on *.* to 'root'@'172.25.25.%' identified  by 'Redhat+123';
设置ssh免密登录

Monitor上

 [root@server4 ~]# ssh-keygen -t rsa
 [root@server4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.1
 [root@server4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.2
 [root@server4 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.3

这里写图片描述
这里写图片描述

在三个数据库主机上把密钥也相互传给对方

server1上
 [root@server1 ~]# ssh-keygen -t rsa
 [root@server1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.2
 [root@server1 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.3
 Server2
 [root@server2 ~]# ssh-keygen -t rsa
 [root@server2 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.1
 [root@server2 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.3
 Server3
 [root@server3 ~]# ssh-keygen -t rsa
 [root@server3 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.1
 [root@server3 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.25.2
在Monitor上(server4)
 检查ssh配置
 [root@server4 ~]# masterha_check_ssh --conf=/etc/masterha/appl.cnf
 检查复制环境
 [root@server4 ~]# masterha_check_repl --conf=/etc/masterha/appl.cnf

这里写图片描述

检查mha manager状态
 appl (pid[root@server4 ~]# masterha_check_status --conf=/etc/masterha/appl.cnf
 appl is stopped(2:NOT_RUNNING).
 [root@server4 ~]# mkdir -p  /var/log/masterha/appl/
 [root@server4 ~]# nohup masterha_manager --conf=/etc/masterha/appl.cnf  --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log /masterha/appl/manager.log 2>&1 &
 [1] 1075
 [root@server4 ~]# masterha_check_status --conf=/etc/masterha/appl.cnf
 Aqql 
 appl (pid:1075) is_running(0:PING_OK), master:172.25.25.3

这里写图片描述

查看启动日志
 [root@server4 ~]# tail -n20 /var/log/masterha/appl/manager.log

这里写图片描述
搭建完成

3. 进行测试

在线进行切换
 [root@server4 ~]# chmod +x /usr/local/bin/master_ip_online_change
masterha_stop --conf=/etc/masterha/appl.cnf
 [root@server4 ~]# masterha_master_switch --conf=/etc/masterha/appl.cnf --master_state=alive --new_master_host=172.25.25.2 --new_master_port=3306  --orig_master_is_new_slave --running_updates_limit=10000

这里写图片描述

查看:切换成功
这里写图片描述

### 设置和管理 MySQL MHA #### 配置 MHA 架构概述 MHA (Master High Availability Manager) for MySQL 是一种用于实现高可用性的解决方案,特别适用于 MySQL 数据库环境。该架构主要由两大部分构成:MHA Node 和 MHA Manager[^1]。 - **MHA Node** 运行于每一个 MySQL 服务实例之上,负责监控本地数据库的状态并处理必要的数据同步操作。 - **MHA Manager** 则作为一个独立的服务组件存在,通常部署在一个单独的服务器上,用来管理和协调整个集群内的各个节点之间的关系以及执行自动化的故障转移过程[^2]。 #### 安装与配置步骤 ##### 准备工作 为了构建一个稳定的 MHA 环境,在开始之前需完成如下准备工作: - 所有参与 MHA 的主机之间应保持良好的网络连通性和时间一致性;建议通过 NTP 或其他方式来确保各台机器的时间同步[^3]。 ##### 软件安装位置示例 | IP 地址 | 类型 | 安装软件 | 安装目录 | |-------------|--------------|----------------------------|----------------| | 192.168.83.20 | MySQL 主服务器 | mysql5.7、MHA node 组件 | /usr/local/mysql | | 192.168.83.40 | MySQL 从服务器1 | mysql5.7、MHA node 组件 | /usr/local/mysql | | 192.168.83.60 | MySQL 从服务器2 | mysql5.7、MHA node 组件 | /usr/local/mysql | | 192.168.83.100| MHA 节点服务器 | MHA node 和 manager 组件 | /usr/bin | ##### 启动 MHA 并验证其状态 启动命令可以采用 `nohup` 方式使其以后台模式运行,并重定向输出到 `/dev/null` 来忽略日志信息。对于非后台运行,则可以直接调用相应的脚本文件。可以通过特定指令查询当前 MHA 的健康状况以确认一切正常运作[^4]。 ```bash # 开启MHA,默认是前台运行, 生产环境一般为后台执行 nohup masterha_manager --conf=/etc/mastermha/app1.cnf &> /dev/null & # 查看状态 masterha_check_status --conf=/etc/mastermha/app1.cnf ``` ##### 控制端安装 在作为 MHA Manager 的服务器上(例如拥有IP地址 192.168.79.137),需要下载对应的 RPM 包并通过 yum 工具来进行安装[^5]。 ```bash wget https://qiniu.wsfnk.com/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm ``` #### 实验测试 最后一步是对上述配置进行全面的功能性检验,确保能够在模拟环境中顺利触发主从切换机制,从而证明系统的稳定可靠性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值