Mariadb高可用MHA

本节主要学习了Mariadb高可用MHA的概述,案例如何构建MHA



提示:以下是本篇文章正文内容,下面案例可供参考

一、概述

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.ssh免密登录(提前搭建好基础环境:地址,闭防火墙等)

1.1修改主机名并查看地址

192.168.6.3    mgt


192.168.6.4    master


192.168.6.5    slave1

 


192.168.6.6    slave2

 1.2:所有节点配置hosts

192.168.115.3    mgt
192.168.115.4    master
192.168.115.5    slave1
192.168.115.6    slave2

在mgt内配置/etc/hosts

 并传输给其他服务器

master

 slave1

 slave2

1.3:192.168.115.3

ssh-keygen

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

for i in 6 4 5;do ssh 192.168.6.$i hostname;done或手动

 

4、5、6、地址依次重复该操作

6:         for i in 3 4 5;do ssh 192.168.6.$i hostname;done

5:           for i in 6 4 3;do ssh 192.168.6.$i hostname;done

4:         for i in 6 3 5;do ssh 192.168.6.$i hostname;done

把 yes 都确定掉

2.主从复制

1、安装mariadb数据库并启动

for i in 4 5 6;do ssh 192.168.6.$i yum install -y mariadb mariadb-server  mariadb;done

2、配置主从复制

2.1master

vim  /etc/my.cnf

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

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.6.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.3' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.5' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.6' identified by '123.com';"

mysql -e "show master status"

2.2slave

slave1

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

 

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.6.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.3' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.5' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.6' identified by '123.com';"

 

slave2

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

 

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.6.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.3' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.5' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.6.4' identified by '123.com';"

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

2.3验证

3.MHA安装

所有节点安装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

node

所有节点安装node

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

 

验证

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

manager

tar xf mha4mysql-manager-0.57.tar.gz

cd /root/mha4mysql-manager-0.57

perl Makefile.PL && make && make install

cp sample/scripts/master_ip_failover /usr/local/bin/

cp sample/scripts/master_ip_online_change     /usr/local/bin/

脚本说明

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

配置文件建立

mkdir /etc/masterha

vim /etc/masterha/app1.cnf

 mkdir /var/log/masterha/app1

 测试MHA

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

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

启动命令

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 &

 

启动时masterIP异常—需要工程手动配置VIP

4.测试

                        停用master的mariadb服务

 地址出现

5.故障恢复

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


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

合宙Air724UG LuatOS-Air LVGL API--简介

为何是 LVGL LVGL 是一个开源的图形库&#xff0c;它提供了创建嵌入式 GUI 所需的一切&#xff0c;具有易于使用的图形元素、漂亮的视觉效果和低内存占用的特点。 LVGL特点&#xff1a; 强大的 控件 &#xff1a;按钮、图表、列表、滑动条、图像等 高级图形引擎&#xff1a;动…

BIO、NIO和AIO

一.引言 何为IO 涉及计算机核心(CPU和内存)与其他设备间数据迁移的过程&#xff0c;就是I/O。数据输入到计算机内存的过程即输入&#xff0c;反之输出到外部存储&#xff08;比如数据库&#xff0c;文件&#xff0c;远程主机&#xff09;的过程即输出。 I/O 描述了计算机系统…

插入排序优化——超越归并排序的超级算法

插入排序及优化 插入排序算法算法讲解数据模拟代码 优化思路一、二分查找二、copy函数 优化后代码算法的用途题目&#xff1a;数星星&#xff08;POJ2352 star&#xff09;输入输出格式输入格式&#xff1a;输出格式 输入输出样例输入样例输出样例 题目讲解步骤如下AC 代码 插入…

HIVE SQL实现分组字符串拼接concat

在Mysql中可以通过group_concat()函数实现分组字符串拼接&#xff0c;在HIVE SQL中可以使用concat_ws()collect_set()/collect_list()函数实现相同的效果。 实例&#xff1a; abc2014B92015A82014A102015B72014B6 1.concat_wscollect_list 非去重拼接 select a ,concat_ws(-…

Linux系统中基于NGINX的代理缓存配置指南

作为一名专业的爬虫程序员&#xff0c;你一定知道代理缓存在加速网站响应速度方面的重要性。而使用NGINX作为代理缓存服务器&#xff0c;能够极大地提高性能和效率。本文将为你分享Linux系统中基于NGINX的代理缓存配置指南&#xff0c;提供实用的解决方案&#xff0c;助你解决在…

C语言刷题训练DAY.8

1.计算单位阶跃函数 解题思路&#xff1a; 这个非常简单&#xff0c;只需要if else语句即可完成 解题代码&#xff1a; #include <stdio.h>int main() {int t 0;while(scanf("%d",&t)!EOF){if (t > 0)printf("1\n");else if (t < 0)pr…

大模型基础02:GPT家族与提示学习

大模型基础&#xff1a;GPT 家族与提示学习 从 GPT-1 到 GPT-3.5 GPT(Generative Pre-trained Transformer)是 Google 于2018年提出的一种基于 Transformer 的预训练语言模型。它标志着自然语言处理领域从 RNN 时代进入 Transformer 时代。GPT 的发展历史和技术特点如下: GP…

【校招VIP】java语言类和对象之map、set集合

考点介绍&#xff1a; map、set集合相关内容是校招面试的高频考点之一。 map和set是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索效率与其具体的实例化子类有关系。 『java语言类和对象之map、set集合』相关题目及解析内容可点击文章末尾链接查看&#xff01; …

深入了解Maven(一)

目录 一.Maven介绍与功能 二.依赖管理 1.依赖的配置 2.依赖的传递性 3.排除依赖 4.依赖的作用范围 5.依赖的生命周期 一.Maven介绍与功能 maven是一个项目管理和构建工具&#xff0c;是基于对象模型POM实现。 Maven的作用&#xff1a; 便捷的依赖管理&#xff1a;使用…

springboot 使用zookeeper实现分布式队列

一.添加ZooKeeper依赖&#xff1a;在pom.xml文件中添加ZooKeeper客户端的依赖项。例如&#xff0c;可以使用Apache Curator作为ZooKeeper客户端库&#xff1a; <dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</…

【java安全】Log4j反序列化漏洞

文章目录 【java安全】Log4j反序列化漏洞关于Apache Log4j漏洞成因CVE-2017-5645漏洞版本复现环境漏洞复现漏洞分析 CVE-2019-17571漏洞版本漏洞复现漏洞分析 参考 【java安全】Log4j反序列化漏洞 关于Apache Log4j Log4j是Apache的开源项目&#xff0c;可以实现对System.out…

英语——构词法

按照语言一定的规律创造新词的方法就叫作构词法。英语中常见的构词法包括六种:合成法、派生法、转化法、混合法、截短法和首尾字母结合法。其中后三种将在第四节“缩写和简写”中进行讲解。 第一节 合成法 英语构词法中把两个单词连在一起合成一个新词,前一个词修饰或限定后…

前端性能优化——包体积压缩插件,打包速度提升插件,提升浏览器响应的速率模式

前端代码优化 –其他的优化可以具体在网上搜索 压缩项目打包后的体积大小、提升打包速度&#xff0c;是前端性能优化中非常重要的环节&#xff0c;结合工作中的实践总结&#xff0c;梳理出一些 常规且有效 的性能优化建议 ue 项目可以通过添加–report命令&#xff1a; "…

innodb索引与算法

B树主键插入 B树在innodb的插入有三种模式page_last_insert, page_dirction, page_N_direction 而在bustub里面的B树就是page_N_direction,如果是自增主键的话&#xff0c;就是上面这样的插入法 FIC优化 (DDL) 选择性统计 覆盖索引 MMR ICP优化 自适应hash 全文索引 MySQL…

Rust之编写自动化测试

1、测试函数的构成&#xff1a; 在最简单的情形下,Rust中的测试就是一个标注有test属性的函数。属性 (attribute)是一种用于修饰Rust代码的元数据。只需要将#[test]添加到关键字fn的上一行便可以将函数转变为测试函数。当测试编写完成后,我们可以使用cargo test命令来运行测试…

Flink-----Standalone会话模式作业提交流程

1.Flink的Slot特点: 均分隔离内存,不隔离CPU可以共享:同一个job中,不同算子的子任务才可以共享同一个slot,同时在运行的前提是,属于同一个slot共享组,默认都是“default”2.Slot的数量 与 并行度 的关系 slot 是一种静态的概念,表示最大的并发上线并行度是个动态的概念…

List和ObservableCollection和ListBinding在MVVM模式下的对比

List和ObservableCollection和ListBinding在MVVM模式下的对比 List 当对List进行增删操作后&#xff0c;并不会对View进行通知。 //Employee public class Employee : INotifyPropertyChanged {public event PropertyChangedEventHandler? PropertyChanged;public string N…

Vue-13.创建完整的Vue项目(vue+vue-cli+js)

前言 之前写了命令创建Vue项目&#xff0c;但是事实上我们可以直接用编译器直接创建项目&#xff0c;这里我使用webstorm&#xff08;因为我是前后端兼修的所以我习惯使用Idea家族的编译器&#xff09; 只写前端的推荐用VsCode前后端都写的推荐用webstorm 新建项目 项目初始…

确保Django项目的稳定运行和持续改进

确保Django项目的稳定运行和持续改进 引言 Django是一个强大的Python Web框架&#xff0c;用于构建高效、可靠的Web应用程序。然而&#xff0c;部署一个Django项目并不意味着工作已经完成。在项目上线之后&#xff0c;确保项目的稳定运行并不断进行改进是非常重要的。本博客将…

vscode 安装勾选项解释

1、通过code 打开“操作添加到windows资源管理器文件上下文菜单 &#xff1a;把这个两个勾选上&#xff0c;可以对文件使用鼠标右键&#xff0c;选择VSCode 打开。 2、将code注册为受支持的文件类型的编辑器&#xff1a;不建议勾选&#xff0c;这样会默认使用VSCode打开支持的相…