MySQL实现高可用方案-MHA安装及配置

MySQL高可用性解决方案Master High Availability (MHA) 是一种在 MySQL 故障转移环境中实现快速故障转移和数据保护的开源软件。MHA 能在 MySQL 主节点发生故障时,自动将备节点提升为主节点,并且不会中断正在进行的 SQL 操作。

需求:主从配置中如果主服务故障后,主库配置需自动切换至其中一个从库,MHA框架为此实现方案之一。

① 从宕机崩溃的master 保存二进制日志事件(binlog events );

② 识别含有最新更新的slave;

③ 应用差异的中继日志(relay log) 到其他slave;

④ 应用从master 保存的二进制日志事件(binlog events);

提升一个slave(从库) 为新master(主库);

⑥ 使用其他的slave 连接新的master

一、MHA安装

1. 前置环境

三台已经搭建好的MySQL集群,并已配置好主从复制。

在所有节点上执行如下命令

ln -s /usr/local/mysql/bin/mysqlbinlog /usr/local/bin/mysqlbinlog

ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql

2. 安装aliyun wget安装源配置(可选)

# 三台服务器均需要安装
yum install perl-DBD* -y
yum -y install wget
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

3. 下载MHA软件

# 三台服务器均需要下载
wget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm
​
# 
wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

4. 安装Node软件以及依赖包(db1,db2,db3)

# node依赖
tar zxf mha-node-dep.tar.gz
rpm -ivh node/*
rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm
# 如果上述命令失败,则使用
rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm --nodeps --force
# node依赖也可以在线yum安装:yum install perl-DBD-MySQL

5. 安装Manager软件(db3)

#管理节点安装Manager软件
#需要安装依赖
tar zxf mha-manager-dep.tar.gz  #manager依赖
rpm -ivh manager/*
rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm --nodeps --force
#manager依赖也可以在线yum安装:
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManag 

6. 验证manager版本(db3)

masterha_manager  -v

7. 配置ssh免密(db1,db2,db3)

ssh-keygen -t rsa (一路回车)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@db1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@db2
ssh-copy-id -i ~/.ssh/id_rsa.pub root@db3
#三台服务器之间无需密码校验,可参考文章服务器SSH(免密登录),免密登录必须测试成功!

8. 建立配置文件目录(db3)

mkdir -p /etc/mha/{conf,log,scripts}

9. 创建配置文件(db3)

vi /etc/mha/conf/mha.cnf
#注意修改里面的ip,路径,用户,密码等(password与repl_password均为mysql密码)
[server default]
manager_log=/etc/mha/log/manager.log
manager_workdir=/etc/mha/log
master_binlog_dir=/usr/local/mysql/data
#failover和switchover脚本
master_ip_failover_script=/etc/mha/scripts/master_ip_failover
master_ip_online_change_script=/etc/mha/scripts/master_ip_online_change
password=123456
#配置检查主节点的次数
ping_interval=3
repl_password=123456
repl_user=root
ssh_user=root
user=root
​
# masters
[server1]
hostname=192.168.31.135
port=3306
#cadidate_master为1表示优先考虑此节点转为主节点
#candidate_master=1
master_binlog_dir=/usr/local/mysql/data
remote_workdir=/etc/mha/log
​
[server2]
candidate_master=1
check_repl_delay=0
hostname=192.168.31.140
port=3306
​
[server3]
hostname=192.168.31.141
port=3306

注意:

配置中引用的脚本在附件里面,需要修改脚本master_ip_failover/master_ip_online_change中的my $vip和my $ifdev,代表vip和网卡名称,并上传到db3目录/etc/mha/scripts/

# 安装ifconfig命令
yum install net-tools
# 第一次配置需要在 Master 节点上手动开启虚拟IP,虚拟ip与之前在脚本中配置的保持一直,选用未占用的地址
ifconfig ens33:1 192.168.170.200/24

修改脚本master_ip_failover、master_ip_online_change中的vip信息和网卡信息

my $vip = '192.168.170.200';
my $ifdev = 'ens33';
my $key = '1';
my $ssh_start_vip = "/usr/sbin/ip addr add $vip/24 dev $ifdev label $ifdev:$key";
my $ssh_stop_vip = "/usr/sbin/ip addr del $vip/24 dev $ifdev label $ifdev:$key";

11. 脚本添加执行权限(db3)

#将脚本文件移到/etc/mha/scripts/中
chmod +x /etc/mha/scripts/*
yum install -y dos2unix
dos2unix /etc/mha/scripts/master_ip_failover

脚本中记着修改vip地址以及用户密码,均为后续需要登录的数据库密码,方便切换主从。

12. ssh免密检查(db3)

# 注意配置[server3]时一定要对自己进行免密登录
masterha_check_ssh --conf=/etc/mha/conf/mha.cnf
. . .
[info] All SSH connection tests passed successfully.

13. 各节点复制情况检查(db3)

masterha_check_repl --conf=/etc/mha/conf/mha.cnf
#Result:Checking the Status of the script.. OK 
#       MySQL Replication Health is OK.

如出现”MySQL Replication Health is NOT OK!“,说明配置有问题

14. 检查manager的状态(db3)

masterha_check_status --conf=/etc/mha/conf/mha.cnf
# mha is stopped(2:NOT_RUNNING).
此处还未启动,停止状态为正常结果。

15. 启动manager(db3)

nohup masterha_manager --conf=/etc/mha/conf/mha.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /etc/mha/log/manager.log 2>&1 &
 
# 检查日志
tail -f /etc/mha/log/manager.log
...
Ping(SELECT) succeeded, waiting until MySQL doesn't respond.. 
...

16. 再次检查manager状态(db3)

masterha_check_status --conf=/etc/mha/conf/mha.cnf
#mha (pid:5535) is running(0:PING_OK), master:192.168.31.135

17. 主从高可用切换测试(可选)

确认当前主从状态(检查、检查、检查、一定要检查)

当前主从状态db1(主)、db2(从)、db3(从)

18. 将db1主节点的mysql进程停掉

systemctl stop mysqld

#如非systemctl启动,可用kill -9 pid 杀死进程

19. 检查manager.log

tail -f /etc/mha/log/manager.log
..
Master failover to 192.168.31.140(192.168.31.140:3306) completed successfully.
 
#显示主库已切换到db2

如图所示,可以看到主节点192.168.31.135的mysql进程已经下线,而从节点192.168.31.140的mysql节点也已经代替主节点在运行。

恭喜你的MySQL高可用已经配置成功!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/197142.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

业务建模工具BPMN

目录 一、什么是BPMN 二、业务流程梳理的重要作用 三、BPMN的全图 四、BPMN的组成 1.BPMN的基本元素&#xff08;2.0&#xff09; 1.1 流对象&#xff08;Flow Objects&#xff09; 1.2 数据&#xff08;Data&#xff09; 1.3 连接对象&#xff08;Connecting Objects&a…

M3VSNET:无监督多度量多视图立体视觉网络(2021年)

M3VSNET&#xff1a;无监督多度量多视图立体视觉网络&#xff08;2021年&#xff09; 摘要1 引言2 相关工作3 实现方法3.1 网络架构 B. Huang, H. Yi, C. Huang, Y. He, J. Liu and X. Liu, “M3VSNET: Unsupervised Multi-Metric Multi-View Stereo Network,” 2021 IEEE Inte…

智能优化算法应用:基于混合蛙跳算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于混合蛙跳算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于混合蛙跳算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.混合蛙跳算法4.实验参数设定5.算法结果6.参考…

2021年12月 Scratch图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共15题,每题2分,共30分) 第1题 下图两个积木的值分别是? A:false true B:false false C:true true D:true false 答案:A 第2题 小猫和小狗是非常好的朋友,他们发明了一种加密方法:用两位数字代表字母。…

qInstallMessageHandler的学习

背景&#xff1a;需要做一个日志系统。 把信息重定向到txt文件中。 参考&#xff1a; QT 调试信息如何输出到文件&#xff08;qDebug/qWarning/qCritical/qFatal&#xff09;-CSDN博客 Qt 之 qInstallMessageHandler&#xff08;重定向至文件&#xff09;-CSDN博客 demo…

使用 ZFPlayer 播放视频的注意点

一 静音功能 通过调用系统的AVPlayer.muted来实现的 - (void)setMuted:(BOOL)muted {_muted muted;self.player.muted muted;if (self.audioMuteChange) {self.audioMuteChange(self, muted);}... }播放进度条 /// 滑杆 property (nonatomic, strong, readonly) ZFSliderV…

Kubernetes入门学习(上)

文章目录 Kubernetes入门学习&#xff08;上&#xff09;介绍云原生 Kubernetes架构基础概念Kubernetes架构控制平面组件Node组件 组件关系 安装Kubernetes基本对象和操作Pod&#xff08;容器集&#xff09;Deployment(部署)与ReplicaSet(副本集)Service&#xff08;服务&#…

Linux shell编程学习笔记31:alias 和 unalias 操作 命令别名

目录 0 前言1 定义别名2 查看别名 2.1 查看所有别名2.2 查看某个别名 2.2.1 alias 别名2.2.2 alias | grep 别名字符串2.2.3 使用 CtrlAltE 组合键3 unalias&#xff1a;删除别名4 如何执行命令本身而非别名 4.1 方法1&#xff1a;使用 CtrlAltE 组合键 && unalias4…

促进高层次人才创新创业,长沙又在“放大招”

“人才”&#xff0c;寥寥数笔&#xff0c;却勾勒出一座城市的发展核心、创新引擎。大力引进高层次人才&#xff0c;更是城市提升综合实力的有效举措。 11月26日&#xff0c;在长沙市委组织部&#xff08;市委人才工作局&#xff09;举办“汇聚磅礴力量 全力建设全球研发中心城…

TCP 三次握手和四次挥手(图解)

TCP 三次握手和四次挥手 建立连接-三次握手 什么是三次握手&#xff1f; 简单来说&#xff1a; 客户端向服务器发送 SYN 报文&#xff0c;请求建立连接。服务器收到 SYN 报文后&#xff0c;回复一个 SYNACK 的报文&#xff0c;表示同意建立连接。客户端收到 SYNACK 报文后&am…

unity3d 旋转cube时变形

将cube移到父路径同级&#xff0c;重置再&#xff0c;更改角度&#xff0c;或者将父路径先重置&#xff0c;再将cube移动到父节点下面

股票技术从初级到高级,从实盘进阶到摩尔缠论

一、教程描述 摩尔缠论是什么&#xff1f;一个伟大的缠论分支体系&#xff0c;由顶尖高手创立的缠论分支&#xff0c;这个顶尖高手&#xff0c;江湖上的代号为摩尔&#xff0c;可能是一个人&#xff0c;或者是一群人。摩尔缠论&#xff0c;基于缠论的核心思想与基础理论&#…

Windows下Linkis1.5DSS1.1.2本地调试

1 Linkis: 参考&#xff1a; 单机部署 | Apache Linkis技术分享 | 在本地开发调试Linkis的源码 (qq.com)DataSphere Studio1.0本地调试开发指南 - 掘金 (juejin.cn) 1.1 后端编译 参考【后端编译 | Apache Linkis】】 修改linkis模块下pom.xml,将mysql.connetor.scope修改…

数据结构 | 查找

基本概念 关键字&#xff1a;数据元素中唯一标识该元素的某个数据项的值&#xff0c;使用基于关键字的查找&#xff0c;查找结果应该是唯一的。例如&#xff0c;在由一个学生元素构成的数据集合中&#xff0c;学生元素中“学号”这一数据项的值唯一地标识一名学生。 查找表&a…

从零开始的c语言日记day37——数组指针练习

一、 取地址数组储存在了*p里&#xff0c;里面储存的是整个数组的地址但本质也是第一个元素的地址解引用后1为4个字节所以就可以打印数组了。但一般不用这种方法 这样更方便一些 打印多维数组 如果不用这样传参&#xff0c;用指针传参怎么做呢&#xff1f; Main里函数的arr表示…

22款奔驰GLE450升级原厂360全景影像 超广角的视野

360全景影像影像系统提升行车时的便利&#xff0c;不管是新手或是老司机都将是一个不错的配置&#xff0c;无论是在倒车&#xff0c;挪车以及拐弯转角的时候都能及时关注车辆所处的环境状况&#xff0c;避免盲区事故发生&#xff0c;提升行车出入安全性。 360全景影像包含&…

网工内推 | 外企网工,五险一金,弹性工作,最高30k*14薪

01 金蝶软件&#xff08;中国&#xff09;有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、合理规划公司网络&#xff0c;保障网络架构的合理性、可靠性及前瞻性&#xff1b; 2、负责公司网络运维&#xff0c;处理日常运维事件&#xff0c;保障网络的稳定可…

基于mvc的大学生家教信息网站系统php+vue

运行环境:phpstudy/wamp/xammp等 开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp5 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat/phpmyadmin 开发软件&#xff1a;hbuilderx/vscode/Dreamweaver/PhpSt…

不同路径 II(力扣LeetCode)动态规划

不同路径 II 题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。…