搭建 MySQL MHA

搭建 MySQL MHA

  • 搭建 MySQL MHA
    • 实验拓扑图
    • 实验环境
    • 实验思路
      • MHA架构
      • 故障模拟
    • 实验部署
      • 数据库安装
      • 主从复制部署
        • 时间同步
        • 主服务器配置
        • 从服务器配置
        • 创建链接
      • MHA搭建
        • 安装依赖的环境
        • 安装 node 组件
        • 安装 manager 组件
        • 配置无密码认证
        • 在 manager 节点上配置 MHA
        • 管理 mysql 节点服务器
          • 创建相关目录
        • 编写配置文件
        • 手动开启虚拟IP
        • 测试 ssh 无密码认证及 MySQL主从连接情况
        • 启动 MHA
    • 故障模拟———— Master 节点意外故障
      • 停止 Master 节点MySQL服务
      • 查看 mysql2 是否接管 VIP
      • 修复故障
        • 启动原来的主节点
        • 修复数据
        • 在 manager 节点上修改配置文件
        • 对mysql1和mysql2 进行重启
        • 在 manager 节点上启动 MHA

搭建 MySQL MHA

实验拓扑图

在这里插入图片描述

实验环境

主机IP
Master主库服务器10.190.33.71
Slave从库服务器0110.190.33.72
Slave从库服务器0210.190.33.73
MHA Manager服务器10.190.33.74
Client10.190.33.75

实验思路

MHA架构

  1. 数据库安装
  2. 一主两从
  3. MHA搭建

故障模拟

  1. 主库失效
  2. 备选主库成为主库
  3. 原故障主库恢复重新加入到MHA成为从库

实验部署

数据库安装

MySQL安装教程

主从复制部署

时间同步

所有服务器均需要进行配置(仅以Master服务器举例)

yum install -y chronyvim /etc/chrony.conf #注释原有ntp服务器,添加阿里ntp服务源server ntp.aliyun.com iburstsystemctl restart chronydchronyc sources -vsystemctl enable --now chronyd

在这里插入图片描述
在这里插入图片描述

主服务器配置
vim /etc/my.cnfserver-id=1log_bin = mysql-binbinlog_format = mixedlog-slave-updates = truerelay-log = relay-log-binrelay-log-index = slave-relay-bin.index	systemctl restart mysqld
​mysql -u root -pAdmin@123grant replication slave on *.* to 'myslave'@'10.190.33.%' identified by 'Admin@123';grant all privileges on *.* to 'manager'@'10.190.33.%' identified by 'Admin@123';grant all privileges on *.* to 'manager'@'10.190.33.71' identified by 'Admin@123';grant all privileges on *.* to 'manager'@'10.190.33.72' identified by 'Admin@123';grant all privileges on *.* to 'manager'@'10.190.33.73' identified by 'Admin@123';flush privileges;show master status;

在这里插入图片描述
在这里插入图片描述

从服务器配置
vim /etc/my.cnfserver-id = 2log_bin = mysql-binbinlog_format = mixedlog-slave-updates = truerelay-log = relay-log-binrelay-log-index = slave-relay-bin.indexsystemctl restart mysqldmysql -u root -pAdmin@123grant replication slave on *.* to 'myslave'@'10.190.33.%' identified by 'Admin@123';grant all privileges on *.* to 'manager'@'10.190.33.%' identified by 'Admin@123';grant all privileges on *.* to 'manager'@'10.190.33.71' identified by 'Admin@123';grant all privileges on *.* to 'manager'@'10.190.33.72' identified by 'Admin@123';grant all privileges on *.* to 'manager'@'10.190.33.73' identified by 'Admin@123';flush privileges;change master to master_host='10.190.33.71',master_user='myslave',master_password='Admin@123',master_log_file='mysql-bin.000001',master_log_pos=3400;start slave;show slave status\Gset global read_only=1;

在这里插入图片描述
在这里插入图片描述

  • Slave1
    在这里插入图片描述
  • Slave2
    在这里插入图片描述
创建链接

所有的数据库服务器(仅以Master服务器举例)


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

在这里插入图片描述

MHA搭建

安装依赖的环境

所有的服务器(仅以Master服务器举例)

yum install epel-release --nogpgcheck -yyum install -y perl-DBD-MySQL \
perl-Config-Tiny \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl-CPAN

在这里插入图片描述

安装 node 组件

所有的服务器(仅以Master服务器举例)

cd /opttar xf mha4mysql-node-0.57.tar.gzcd mha4mysql-node-0.57perl Makefile.PLmake && make install

在这里插入图片描述

安装 manager 组件

manager服务器

cd /opttar xf mha4mysql-manager-0.57.tar.gzcd mha4mysql-manager-0.57perl Makefile.PLmake && make install

在这里插入图片描述

配置无密码认证

所有的服务器

#manager节点上配置到所有数据库节点的无密码认证ssh-keygen -t rsassh-copy-id 10.190.33.71ssh-copy-id 10.190.33.72ssh-copy-id 10.190.33.73#master节点上配置到数据库节点 slave1 和 slave2的无密码认证ssh-keygen -t rsassh-copy-id 10.190.33.72ssh-copy-id 10.190.33.73#slave1节点上配置到数据库节点 master和 slave2的无密码认证ssh-keygen -t rsassh-copy-id 10.190.33.71ssh-copy-id 10.190.33.73#slave2节点上配置到数据库节点 master和 slave1 的无密码认证ssh-keygen -t rsassh-copy-id 10.190.33.71ssh-copy-id 10.190.33.72
  • manager

在这里插入图片描述

  • master

在这里插入图片描述

  • slave1

在这里插入图片描述

  • slave2

在这里插入图片描述

在 manager 节点上配置 MHA
cp -rp /opt/mha4mysql-manager-0.57/samples/scripts /usr/local/binll /usr/local/bin/scripts/cp /usr/local/bin/scripts/master_ip_failover /usr/local/binvim /usr/local/bin/master_ip_failover###删除所有后;拷贝前输入 :set paste 解决vim粘贴乱序问题#!/usr/bin/env perluse strict;use warnings FATAL => 'all';use Getopt::Long;my ($command, $ssh_user, $orig_master_host, $orig_master_ip,$orig_master_port, $new_master_host, $new_master_ip, $new_master_port);my $vip = '10.190.33.100';my $brdc = '10.190.33.255';my $ifdev = 'ens33';			##看下自己网卡是ens33则不用动,不是ens33就换成自己网卡名my $key = '1';my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";my $exit_code = 0;#my $ssh_start_vip = "/usr/sbin/ip addr add $vip/24 brd $brdc dev $ifdev label $ifdev:$key;/usr/sbin/arping -q -A -c 1 -I $ifdev $vip;iptables -F;";#my $ssh_stop_vip = "/usr/sbin/ip addr del $vip/24 dev $ifdev label $ifdev:$key";GetOptions('command=s' => \$command,'ssh_user=s' => \$ssh_user,'orig_master_host=s' => \$orig_master_host,'orig_master_ip=s' => \$orig_master_ip,'orig_master_port=i' => \$orig_master_port,'new_master_host=s' => \$new_master_host,'new_master_ip=s' => \$new_master_ip,'new_master_port=i' => \$new_master_port,);exit &main();sub main {print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";if ( $command eq "stop" || $command eq "stopssh" ) {my $exit_code = 1;eval {print "Disabling the VIP on old master: $orig_master_host \n";&stop_vip();$exit_code = 0;};if ($@) {warn "Got Error: $@\n";exit $exit_code;}exit $exit_code;}elsif ( $command eq "start" ) {my $exit_code = 10;eval {print "Enabling the VIP - $vip on the new master - $new_master_host \n";&start_vip();$exit_code = 0;};if ($@) {warn $@;exit $exit_code;}exit $exit_code;}elsif ( $command eq "status" ) {print "Checking the Status of the script.. OK \n";exit 0;}else {&usage();exit 1;}}sub start_vip() {`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;}## A simple system call that disable the VIP on the old_mastersub stop_vip() {`ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;}sub usage {print"Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --new_master_host=host --new_master_ip=ip --new_master_port=port\n";}

在这里插入图片描述

在这里插入图片描述

管理 mysql 节点服务器
创建相关目录

所有的服务器(仅以Master服务器举例)

mkdir -p /opt/mysql-mha/mha-node

在这里插入图片描述

编写配置文件
mkdir -p /opt/mysql-mha/mha-managervim /opt/mysql-mha/mysql_mha.cnf[server default]manager_log=/opt/mysql-mha/manager.logmanager_workdir=/opt/mysql-mha/mha-managerremote_workdir=/opt/mysql-mha/mha-nodemaster_binlog_dir=/usr/local/mysql/dataping_interval=1master_ip_failover_script=/usr/local/bin/master_ip_failovermaster_ip_online_change_script=/usr/local/bin/master_ip_online_changeuser=managerpassword=Admin@123repl_user=myslaverepl_password=Admin@123port=3306secondary_check_script=/usr/local/bin/masterha_secondary_check -s 10.190.33.72 -s 10.190.33.73shutdown_script=""ssh_user=root[server1]hostname=10.190.33.71port=3306[server2]candidate_master=1check_repl_delay=0hostname=10.190.33.72port=3306[server3]hostname=10.190.33.73port=3306

在这里插入图片描述

在这里插入图片描述

手动开启虚拟IP

Master服务器

/sbin/ifconfig ens33:1 10.190.33.100/24ifconfig

在这里插入图片描述

测试 ssh 无密码认证及 MySQL主从连接情况
masterha_check_ssh -conf=/opt/mysql-mha/mysql_mha.cnf#测试 ssh 无密码认证masterha_check_repl -conf=/opt/mysql-mha/mysql_mha.cnf#MySQL主从连接情况

在这里插入图片描述
在这里插入图片描述

启动 MHA

nohup masterha_manager \
--conf=/opt/mysql-mha/mysql_mha.cnf \
--remove_dead_master_conf \
--ignore_last_failover < /dev/null > /var/log/mha_manager.log 2>&1 &masterha_check_status --conf=/opt/mysql-mha/mysql_mha.cnf#查看 MHA 状态cat /opt/mysql-mha/manager.log | grep "current master"#查看 MHA 日志

在这里插入图片描述

故障模拟———— Master 节点意外故障

停止 Master 节点MySQL服务

systemctl stop mysqld

在这里插入图片描述

查看 mysql2 是否接管 VIP


ifconfig

在这里插入图片描述

修复故障

启动原来的主节点
systemctl start mysqld

在这里插入图片描述

修复数据

现主MySQL服务器(原从MySQL服务器1)


mysql -u root -pmysql> show master status;

在这里插入图片描述

在原来的主节点


change master to master_host='10.190.33.72',master_user='myslave',master_password='Admin@123',master_log_file='mysql-bin.000001',master_log_pos=1777;start slave;

在这里插入图片描述

在 manager 节点上修改配置文件

vim /opt/mysql-mha/mysql_mha.cnf······[server1]hostname= 10.190.33.71port=3306······

在这里插入图片描述

对mysql1和mysql2 进行重启

systemctl restart  mysqld
在 manager 节点上启动 MHA

masterha_stop --conf=/opt/mysql-mha/mysql_mha.cnfnohup masterha_manager \
--conf=/opt/mysql-mha/mysql_mha.cnf \
--remove_dead_master_conf \
--ignore_last_failover < /dev/null > /var/log/mha_manager.log 2>&1 &

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

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

相关文章

面试突击:Java 集合知识体系梳理

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。在 Java 开发中&#xff0c;集合类对象绝对是被使用最频繁的对象之一。因此&#xff0c;深入了解集合类对象的底层数…

热敏晶振:成本效益的选择与温补晶振的比较

在精密电子系统的设计中&#xff0c;晶振作为时间基准源&#xff0c;其频率稳定性直接影响到整个系统的性能。其中&#xff0c;温补晶振(Temperature Compensated Crystal Oscillator&#xff0c;简称TCXO)与热敏晶振(Thermistor Compensated Crystal Oscillator)作为在特殊温度…

面试-java异常体系

1.java异常体系 error类是指与jvm相关的问题。如系统崩溃&#xff0c;虚拟机错误&#xff0c;内存空间不足。 非runtime异常不处理&#xff0c;程序就没有办法执行。 一旦遇到异常抛出&#xff0c;后面的异常就不会进行。 (1)常见的error以及exception 2.java异常要点分析…

kubekey 安装高可用 kubernetes 集群

1. 准备环境 1.1 机器准备 4 台机器&#xff0c;操作系统&#xff1a;Ubuntu 24.04/RHEL8/CentOS9 10.111.3.53 master1 10.111.3.54 master2 10.111.3.55 master3 10.111.3.57 node41.2 安装依赖和配置 所有节点都需要执行&#xff1a; Ubuntu: apt-get install -y soca…

【AI大模型】Transformers大模型库(十四):Datasets Viewer

目录 一、引言 二、Datasets Viewer数据查看器 2.1 概述 2.2 示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服务。 &#x1f917; Transformers 提供了数以千计的预训练…

如何使用大模型进行文本分类任务?

暑期实习基本结束了&#xff0c;校招即将开启。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c;帮助一些球友解惑答疑&…

openlayer 鼠标点击船舶,打开船舶简单弹框

背景&#xff1a; 对创建的地图对象&#xff0c;可以添加上监听事件&#xff0c;常用的有&#xff1a;地图点击事件、鼠标移动事件。 通过监听这些事件&#xff0c;又可以区分不同图层的不同要素&#xff0c;获取不同数据&#xff1b; 根据这些数据&#xff0c;又可以发起网络请…

【介绍下SCSS的基本使用】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

React的Props、生命周期

Props 的只读性 “Props” 是 React 中用于传递数据给组件的一种机制&#xff0c;通常作为组件的参数进行传递。在 React 中&#xff0c;props 是只读的&#xff0c;意味着一旦将数据传递给组件的 props&#xff0c;组件就不能直接修改这些 props 的值。所以组件无论是使用函数…

Linux编程---给函数取别名

0 Preface/Foreword 1 代码 1.1 源代码 #include <stdio.h> #include <string.h> int sum(int a, int b);int sum_alias(int a, int b) __attribute__ ((alias("sum"))); int main() { int ret 0; ret sum(5, 5) sum_alias(5, 5); …

线性相关,无关?秩?唯一解(只有零解),无穷解(有非零解)?D=0,D≠0?

目录 线性有关无关 和 唯一解&#xff08;只有零解&#xff09;&#xff0c;无穷解&#xff08;有非零解&#xff09;之间的关系 D0&#xff0c;D≠0&#xff1f; 和 秩 的关系 串起来&#xff1a; 线性相关&#xff0c;无关&#xff1f;秩&#xff1f;唯一解&#xff08;只…

华为认证hcna题库背诵技巧有哪些?hcna和hcia有什么区别?

大家都知道华为认证hcna是有题库供考生刷题备考的&#xff0c;但题库中海量的题目想要在短时间背诵下来可并不是一件容易的事情&#xff0c;这就需要我们掌握一定的技巧才行。华为认证hcna题库背诵技巧有哪些? hcna和hcna这二者又有什么区别呢?今天的文章将为大家进行详细解…

datax入门(datax的安装与简单使用)——01

datax入门&#xff08;datax的安装与简单使用&#xff09;——01 1. 官网2. 工具部署&#xff08;通过下载DataX工具包&#xff09;2.1 下载、解压2.2 配置2.2.1 查看配置模版2.2.2 根据模版配置json2.2.3 启动DataX 3. datax的简单使用3.1 mysql2stream3.2 mysql2mysql3.2.1 拼…

PyCharm 2024.1最新变化

PyCharm 2024.1 版本带来了一系列激动人心的新功能和改进&#xff0c;以下是一些主要的更新亮点: Hugging Face 模型和数据集文档预览&#xff1a;在 PyCharm 内部快速获取 Hugging Face 模型或数据集的详细信息&#xff0c;通过鼠标悬停或使用 F1 键打开文档工具窗口来预览。 …

Discourse OpenAI 生成图片

正如一些讨论的&#xff0c;生成图片是比较贵的。 差不多到了 1 元 一张图了。 就 OpenAI 生成了上面 4 张图&#xff0c;费用 0.4 美元。 Discourse OpenAI 生成图片 - Discourse - iSharkFly

PHP 网络通信底层原理分析

大家好&#xff0c;我是码农先森。 引言 我们日常的程序开发大多数都是以业务为主&#xff0c;很少会接触到底层逻辑。对于我们程序员来说&#xff0c;了解程序的底层运行逻辑&#xff0c;更有助于提升我们对程序的理解。我相信大多数的人&#xff0c;每天基本上都是完成业务…

桃园三结义 | 第1集 | 三人一条心,黄土变成金,有你带着俺,大事定能成功啊!| 正所谓择木之禽,得其良木,择主之臣,得遇明主 | 三国演义 | 群雄逐鹿

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f4cc;这篇博客是毛毛张结合三国演义原著分享三国演义文学剧本中的经典台词和语句&#xff0c;本篇分享的是《三国演义》第Ⅰ部分《群雄逐鹿》的第1️⃣集《桃…

基于Istio服务网格的熔断限流实现

在微服务架构的宏大图景中&#xff0c;Istio服务网格如同一位精巧的交通指挥官&#xff0c;它不仅确保了服务间通信的顺畅无阻&#xff0c;还通过先进的熔断与限流机制&#xff0c;为系统的稳定性筑起了一道坚固的防线。接下来&#xff0c;让我们一窥Istio如何在不改动服务代码…

2024 6.17~6.23 周报

一、上周工作 吴恩达的机器学习、实验-回顾之前密集连接部分 二、本周计划 继续机器学习&#xff0c;同时思考实验如何修改&#xff0c;开始整理代码 三、完成情况 3.1 多类特征、多元线性回归的梯度下降、特征缩放、逻辑回归 多类特征&#xff1a; 多元线性回归的梯度下…

AI 开发平台(Coze)搭建《美食推荐官》

前言 本文讲解如何从零开始&#xff0c;使用扣子平台去搭建《美食推荐官》 bot直达&#xff1a;美食推荐官 - 扣子 AI Bot (coze.cn) 欢迎大家体验一下&#xff01;&#xff01; 效果 正文 prompt 美食推荐官的首要任务就是推荐美食&#xff0c;基于这个我们要给他一个基…