【Mariadb高可用MHA】

2023-10-26

目录

一、概述

1.概念

2.组成

3.特点

4.工作原理

二、案例介绍

1.192.168.42.3

2.192.168.42.4

3.192.168.42.5

4.192.168.42.6

三、实际构建MHA

1.ssh免密登录

1.1 所有节点配置hosts

1.2 192.168.42.3

1.3 192.168.42.4

1.4 192.168.42.5

1.5 192.168.42.6

1.6 测试

2.主从复制

2.1 master

2.2 slave(两个都要配)

2.3 验证

3.MHA安装

3.1 所有节点安装perl环境

3.2 node

3.2.1 所有节点安装node

3.2.2 验证

3.3 manager

3.3.1 安装

3.3.2 脚本说明

3.3.3 配置文件建立

3.3.4 目录创建

3.3.5 测试MHA

3.3.6 启动命令 

3.3.7 启动时masterIP异常

4.测试

5.故障恢复


一、概述

1.概念

  • MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。
  • MHA 的出现就是解决MySQL 单点的问题。
  • MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。
  • MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

2.组成

  • MHA manager:管理节点
  • MHA node:数据节点(每个节点上都需要安装)

3.特点

  • 自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失
  • 使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性
  • 目前MHA支持一主多从架构,最少三台服务,即一主两从

4.工作原理

  • 从宕机崩溃的master 保存二进制日志事件(binlog events);
  • 识别含有最新的更新slave日志
  • 应用差异的中继日志(relay log)到其他的slave
  • 应用从master保存的二进制日志事件
  • 提升一个slave为新的master
  • 使其他的slave连接新的master进行复制

二、案例介绍

1.192.168.42.3

用作manager(MHA),即mgt

2.192.168.42.4

用作master

3.192.168.42.5

用作slave1

4.192.168.42.6

用作slave2

:192.168.42.4 | 5 | 6,为node

三、实际构建MHA

1.ssh免密登录

1.1 所有节点配置hosts

vim /etc/hosts

        192.168.42.3    mgt
        192.168.42.4    master
        192.168.42.5    slave1
        192.168.42.6    slave2

        

1.2 192.168.42.3

ssh-keygen
for i in 4 5 6;do ssh-copy-id root@192.168.42.$i;done

1.3 192.168.42.4

ssh-keygen
for i in 3 5 6;do ssh-copy-id root@192.168.42.$i;done

1.4 192.168.42.5

ssh-keygen
for i in 4 3 6;do ssh-copy-id root@192.168.42.$i;done

 

1.5 192.168.42.6

ssh-keygen
for i in 4 5 3;do ssh-copy-id root@192.168.42.$i;done

1.6 测试

for i in 3 4 5;do ssh 192.168.42.$i hostname;done

2.主从复制

2.1 master

vim  /etc/my.cnf 

        [mysqld]
        server-id = 20
        log-bin = master-bin
        log-slave-updates = true

systemctl restart mariadb

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.42.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.3' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.5' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.6' identified by '123.com';"

mysql -e "show master status";

2.2 slave(两个都要配)

vim  /etc/my.cnf

        server-id=30
        log-bin=master-bin
        relay-log=relay-log-bin
        relay-log-index=relay-log-bin.index

systemctl restart mariadb

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.42.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.3' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.5' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.42.6' identified by '123.com';"

mysql -e "change master to master_host='192.168.42.4',master_user='myslave',master_password='123.com',master_log_file='master-bin.000003',master_log_pos=1002;"

mysql -e "slave start;"

2.3 验证

master
    mysql -e "create database ea;"


slave1
    mysql -e "show databases;"

 

slave2
    mysql -e "show databases;"

3.MHA安装

3.1 所有节点安装perl环境

yum install epel-release -y
yum -y install perl-DBD-MySQL perl-ExtUtils-MakeMaker perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-CPAN

3.2 node

3.2.1 所有节点安装node

tar xf mha4mysql-node-0.57.tar.gz
cd mha4mysql-node-0.57
perl Makefile.PL && make && make install

 

3.2.2 验证

cd /usr/local/bin
看到脚本就OK

 

3.3 manager

3.3.1 安装

tar xf mha4mysql-manager-0.57.tar.gz
cd /root/mha4mysql-manager-0.57
perl Makefile.PL && make && make install


cp samples/scripts/master_ip_failover /usr/local/bin/
cp samples/scripts/master_ip_online_change     /usr/local/bin/

3.3.2 脚本说明

master_ip_failover    自动切换时 VIP 管理的脚本
master_ip_online_change    在线切换时 vip 的管理
power_manager    故障发生后关闭主机的脚本
send_report    因故障切换后发送报警的脚本

3.3.3 配置文件建立

mkdir /etc/masterha
vim /etc/masterha/app1.cnf

3.3.4 目录创建

 mkdir /var/log/masterha/app1

 

3.3.5 测试MHA

 vim /usr/local/bin/master_ip_failover

masterha_check_ssh --conf=/etc/masterha/app1.cnf
masterha_check_repl --conf=/etc/masterha/app1.cnf

3.3.6 启动命令 

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

3.3.7 启动时masterIP异常

需要工程手动配置VIP

4.测试

停用master的mariadb服务

systemctl stop mariadb

切换到slave1上 

ip a

 成功。

5.故障恢复

修改app1.cnf启动配置:添加master主机配置信息
分别在slave上重新指定master主机及binlog日志同步信息


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Mariadb高可用MHA】 的相关文章

随机推荐

  • 1.3. 分治法—最近点对问题

    1 问题描述 给定平面S上n个点 找其中的一对点 使得在n个点组成的所有点对中 该点对间的距离最小 2 求解过程 划分 将集合S分成两个大小基本相等的子集 S 1 S 1 S1 和 S
  • linux 基础知识考试试题,Linux常识型试题

    Linux常识型试题 发布时间 2011 06 06 18 11 10来源 红联作者 lijiang i s 本帖最后由 lijiang 于 2011 10 22 17 51 编辑 i 一 填空题 1 链接分为 和 2 安装Linux系统对
  • 解决Linux界面显示问号字符?与Failed to set locale, defaulting to C报错

    解决方法 暂时性处理 export LC ALL zh CN UTF 8 一劳永逸 vim etc bashrc 然后在最后一行写入 export LC ALL zh CN UTF 8 问题复现 解析 当输入 locale 会得到如下结果
  • 数据结构----利用栈实现表达式的计算

    利用栈实现表达式的计算 例如 12 5 6 9 7 8 5 6 8 5 6 12 要解决的问题主要有两个 和 的运算顺序的处理问题 括号内的表达式优先运算问题 这里利用栈来解决这两个问题 首先我们设置两个栈 一个符号栈 一个数字栈 下面我们
  • Novell数据备份

    从昨天下午到现在 才搞定 关总不提示的情况下 我一直认为xvRf是更新备份数据 cvRf是全部备份 其实则不然 关总告诉我 xvRf是导入数据 而cvRf才是备份数据 如果网络成功链接的话 那NDS服务器的数据就会被老数据覆盖了 幸好幸好
  • Android Studio day_01 初识线性布局和相对布局还有按钮

    序章 今天学习了线性布局 LinearLayout 和相对布局 RelativeLayout 还有Button按钮 布局是要用和进行结束的 至于Botton按钮嘛 使用 gt 结束就好啦 相对布局 RelativeLayout 相对布局我理
  • 卸载npm和安装npm_使用`npm uninstall`卸载npm软件包

    卸载npm和安装npm To uninstall a package you have previously installed locally using npm install
  • 激光雷达对植被冠层结构和SIF同时探测展望

    前言 陆表植被在全球碳循环中起着不可替代的作用 但现阶段 人们对气候变化与植被生态理化功能的关系的研究还不够完善 为了提高气候预测以及缓解气候恶化的速率 对植被参数比如 叶面积指数 leaf 植被冠层结构 canopy 和生态系统以及区域尺
  • Linux服务器程序规范

    Linux服务器程序规范 Linux服务器程序一般都是以后台进程形式运行 后台进程又称为守护进程 daemon 其没有控制终端 不会意外接收到用户输入 守护进程的父进程通常是init进程 PID为1的进程 Linux服务器程序通常有一套日志
  • Tomcat启动不了报 java.net.BindException “Address already in use: NET_Bind“这个异常

    Tomcat在IDEA运行报以下错误 启动不了Tomcat Error running Tomcat 8 5 57开关 Unable to open debugger port 127 0 0 1 63840 java net BindEx
  • Hive文件格式

    文章目录 1 概述 1 1 行存储 列存储 2 TEXTFILE 3 SEQUENCEFILE 3 RCFILE 4 ORCFILE 5 Parquet 8 区别 8 1 空间对比 磁盘空间占用大小比较 8 2 查询语句运行时间大小比较 9
  • socket链接检测超时时间过短导致的问题

    新增了另外一个区域的代理 跨州 原来的代理可达性检测只有50ms 就不够了 导致大量报错 更换为1000毫秒后 就正常了 需要注意网络中几个连接超时时间的设置问题 1 链接超时时间 一般是1 5秒 全内网服务器 可以设置得更短一些 2 等待
  • 《消息队列高手课》 消息积压了该如何处理?

    据我了解 在使用消息队列遇到的问题中 消息积压这个问题 应该是最常遇到的问题了 并且 这个问题还不太好解决 我们都知道 消息积压的直接原因 一定是系统中的某个部分出现了性能问题 来不及处理上游发送的消息 才会导致消息积压 所以 我们先来分析
  • CSS背景属性Background详解

    本文详解了CSS的背景属性Background 包括CSS3中新增的背景属性 如果你是个CSS初学者 还可以查看之前介绍的CSS浮动属性和CSS透明属性详解 css2 中的背景 background CSS2 中有5个主要的背景 backg
  • Maven详解之仓库------本地仓库、远程仓库

    Dragon s Life 坚持 完成每一个目标 目录视图 摘要视图 订阅 征文 从高考 到程序员 深度学习与TensorFlow入门一课搞定 每周荐书 Web扫描 HTML 5 Python 评论送书 Maven详解之仓库 本地仓库 远程
  • Python+Selenium-5-driver.page_source获取页面源码

    driver page source selenium的page source方法可以获取到页面源码 跟爬虫有点相似 获取到页面资源 提取出我们需要的信息 案例 以煎蛋网为例 获取首页的全部title 获取页面源码 使用re正则提取需要的t
  • SpringBoot自定义工厂类读取yml配置文件&&SpringBoot轻松读取properties文件

    PropertySource指定文件地址 ConfigurationProperties指定前缀 第一次 SpringBoot 读取配置文件 demo如下 designers yml文件 designer owner openids 8hV
  • IDEA导入lib目录下的jar包

    https blog csdn net u010286027 article details 85248719 ops request misc request id biz id 102 utm term idea E6 96 B0 E5
  • LeetCode【114】二叉树展开为链表

    题目 给定一个二叉树 原地将它展开为链表 例如 给定二叉树 将其展开为 最终转化完 pre节点只有right 没有left TreeNode pre null public void flatten TreeNode root if roo
  • 【Mariadb高可用MHA】

    目录 一 概述 1 概念 2 组成 3 特点 4 工作原理 二 案例介绍 1 192 168 42 3 2 192 168 42 4 3 192 168 42 5 4 192 168 42 6 三 实际构建MHA 1 ssh免密登录 1 1