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)

百度网盘

链接:https://pan.baidu.com/s/1MAKy-D-cbLbXEPtNYNGH7g?pwd=oxcn 
提取码:oxcn

# 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/217049.html

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

相关文章

编程应用实例,早点快餐店点餐软件支持零售价和会员价,软件定制开发

编程应用实例&#xff0c;早点快餐店点餐软件支持零售价和会员价&#xff0c;软件定制开发 一、编程应用实例&#xff1a; 软件适用范围&#xff1a; 1、早点 2、快餐店 3、面馆 4、汉堡店 5、奶茶店 6、饭店等 程序说明&#xff1a; 二、程序说明&#xff1a; 1、软件…

人机交互——言语信息表示模型

如何将大量的言语碎片进行统一表示和存储&#xff0c;以便能够提取不同类型言语信息中的重要特征和语义信息&#xff0c;并计算和推理用户的交互意图&#xff0c;是一个极具挑战性的问题。 1.言语信息表示模型概述 2.言语信息表示模型结构 3.言语信息表示模型应用

腾讯云2023年双十二活动整理汇总

腾讯云双十二推出了年末感恩回馈活动&#xff0c;年底最后一次大促活动&#xff0c;大家把握好上云时间&#xff0c;小编给大家整理了2023年腾讯云双十二优惠活动&#xff0c;不要错过这次上云好时机&#xff01; 一、腾讯云双十二活动入口 活动地址&#xff1a;txy.ink/act/ …

迪文串口5使用查询方式发送数据

迪文屏串口5寄存器如下 发送数据我采用的不是中断&#xff0c;而是查询发送标志位实现的。 串口5不像串口2一样&#xff08;串口2可以位寻址&#xff0c;串口5不行&#xff09;&#xff0c;所以如果采用查询模式&#xff0c;需要判断寄存器的数据&#xff0c;我的写法比较简单…

【初阶解法-数据结构】包含min函数的栈(代码+图示)

【数据结构】刷题-包含min函数的栈(代码图示)-初阶解法 文章目录 【数据结构】刷题-包含min函数的栈(代码图示)-初阶解法题目提炼题目要求分析题目总结思路代码时间/空间复杂度进阶版 题目 定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈中所含最小元素的 min 函…

关于rocketMQ踩坑的那些事

在最近&#xff0c;我所写的这个项目需要使用到rocketMQ&#xff0c;为了图方便我便使用的是Windows版本的&#xff0c;但是在使用的过程中首先是发现无法发送消息出去&#xff0c;报错信息为 org.apache.rocketmq.client.exception.MQClientException: Send [3] times, still …

水果店怎么做微信小程序_利用微信小程序实现业绩逆袭

标题&#xff1a;水果店如何利用微信小程序实现业绩逆袭&#xff1f; 随着移动支付的普及&#xff0c;微信小程序已经成为商业领域的一个重要工具。对于水果店来说&#xff0c;利用微信小程序可以更好地拓展业务、提高客户满意度&#xff0c;进而实现业绩逆袭。本文将为你揭示…

java连接池 理解及解释(DBCP、druid、c3p0、HikariCP)

一、在Java开发中&#xff0c;有许多常见的数据库连接池可供选择。以下是一些常见的Java数据库连接池&#xff1a;不使用数据库连接池的特性&#xff1a; 优点&#xff1a;实现简单 缺点&#xff1a;网络 IO 较多数据库的负载较高响应时间较长及 QPS 较低应用频繁的创建连接和关…

【Linux下如何生成coredump文件】

一&#xff0c;什么是coredump 我们经常听到大家说到程序core掉了&#xff0c;需要定位解决&#xff0c;这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止&#xff0c;并且在满足一定条件下&#xff08;这里为什么说需要满足一定的条件呢&#…

【离散数学】——期末刷题题库(集合)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

成为AI产品经理——模型稳定性评估(PSI)

一、PSI作用 稳定性是指模型性能的稳定程度。 上线前需要进行模型的稳定性评估&#xff0c;是否达到上线标准。 上线后需要进行模型的稳定性的观测&#xff0c;判断模型是否需要迭代。 稳定度指标(population stability index ,PSI)。通过PSI指标&#xff0c;我们可以获得不…

学习率设置(写给自己看)

现往你的.py文件上打上以下代码&#xff1a; import torch import numpy as np from torch.optim import SGD from torch.optim import lr_scheduler from torch.nn.parameter import Parametermodel [Parameter(torch.randn(2, 2, requires_gradTrue))] optimizer SGD(mode…

12.04 二叉树中等题

513. 找树左下角的值 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 思路&#xff1a;找到最低层中最左侧的节点值&#xff0c;比较适合层序遍历&#xff0c;返回最…

【matlab】QR分解

QR分解 给定一个mn的矩阵A&#xff0c;其中m≥n&#xff0c;即矩阵A是高矩阵或者是方阵&#xff0c;QR分解将矩阵A分解为两个矩阵Q和R的乘积&#xff0c;其中矩阵Q是一个mn的各列正交的矩阵&#xff0c;即QTQI&#xff0c;矩阵R是一个nn的上三角矩阵&#xff0c;其对角线元素为…

初识动态规划算法(题目加解析)

文章目录 什么是动态规划正文力扣题第 N 个泰波那契数三步问题使用最小花费爬楼梯 总结 什么是动态规划 线性动态规划&#xff1a;是可以用一个dp表来存储内容&#xff0c;并且找到规律存储,按照规律存储。让第i个位置的值等于题目要求的答案 >dp表&#xff1a;dp表就是用一…

【数据结构】——栈|队列(基本功能)

目录 栈 基本概念 栈的常见基本操作 栈的存储 ✌栈的基本操作实现 栈的构建 栈的初始化 入栈 打印栈 出栈 获取栈顶元素 获取栈的有效元素个数 判断栈是否为空 销毁栈 队列 基本概念 队列的常见基本操作 ✌队列的基本操作实现 队列的构建 初始化 入队列 出…

不再只是android,华为自爆Harmony将对标iOS

今年10月&#xff0c;华为官方宣布&#xff0c;鸿蒙OS 4升级设备数量已突破1亿&#xff0c;成为史上升级最快的鸿蒙OS版本。 日前&#xff0c;据数码博主“定焦数码”消息&#xff0c;大厂技术员工做适配&#xff0c;通过线下沟通时&#xff0c;华为反复提到一个问题&#xff…

实战技巧:为Android应用设置独立的多语言

原文链接 实战技巧&#xff1a;为Android应用设置独立的多语言 通常情况下多语言的设置都在系统设置中&#xff0c;应用需要做的就是提供本应用所使用的字串的多语言翻译&#xff0c;使用时使用R.string.app_name类似的引用&#xff0c;然后系统会根据用户在系统设置中的选项来…

不瞒各位,不安装软件也能操作Xmind文档

大家好&#xff0c;我是小悟 作为搞技术的一个人群&#xff0c;时不时就要接收产品经理发过来的思维脑图&#xff0c;而此类文档往往是以Xmind编写的&#xff0c;如果你的电脑里面没有安装Xmind的话&#xff0c;不好意思&#xff0c;是打不开这类后缀结尾的文档。 打不开的话…

【雷电模拟器桥接问题解决方法】

1.ROOT权限开启 2.开启网络桥接模式&#xff0c;选择静态IP设置&#xff0c;点击安装桥接网卡&#xff0c;填写IP地址&#xff08;注意&#xff1a;IP地址要与host主机在同一IP段内&#xff09; 3.重启后 adb shell就能进入到模拟器控制台中了&#xff0c;如果出现以下内容&…