MySQL高可用MHA

这篇具有很好参考价值的文章主要介绍了MySQL高可用MHA。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、概述

(一)概念

MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件

MHA 的出现就是解决MySQL 单点的问题。

MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。

MHA能在故障切换的过程中最大程度上保证数据的一致性,以达到真正意义上的高可用。

(二)组成

MHA manager   管理节点

MHA node     数据节点

(三)特点

自动故障切换过程中,MHA试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失

使用半同步复制,可以大大降低数据丢失的风险,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性

目前MHA支持一主多从架构,最少三台服务,即一主两从

(四)工作原理

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

识别含有最新的更新slave日志

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

应用从master保存的二进制日志事件

提升一个slave为新的master

使其他的slave连接新的master进行复制

二、构建MHA

先准备4台机器(192.168.115.3;192.168.115.4;192.168.115.5;192.168.115.6)

案例

192.168.115.3   manager(MHA)  主机名:mgt

MySQL高可用MHA,数据库,mysql

192.168.115.4   master        主机名:master

MySQL高可用MHA,数据库,mysql

192.168.115.5    slave       主机名:slave1

MySQL高可用MHA,数据库,mysql

192.168.115.6    slave       主机名:slave2

MySQL高可用MHA,数据库,mysql

(一)ssh免密登录

所有节点配置hosts

192.168.115.3    mgt

192.168.115.4    master

192.168.115.5    slave1

192.168.115.6    slave2

vim /etc/hosts

MySQL高可用MHA,数据库,mysql

(1)192.168.115.3

ssh-keygen

MySQL高可用MHA,数据库,mysql

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

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql

(2)192.168.115.4   

ssh-keygen
MySQL高可用MHA,数据库,mysql

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

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql

(3)192.168.115.5

ssh-keygen

MySQL高可用MHA,数据库,mysql

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

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysqlMySQL高可用MHA,数据库,mysql

(4)192.168.115.6

ssh-keyge

MySQL高可用MHA,数据库,mysql

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

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql

(5)测试

mgt

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql master

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql slave1

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql

 slave2

MySQL高可用MHA,数据库,mysql

 (二)主从复制

(1)安装mariadb数据库并启动

yum install -y mariadb mariadb-server

systemctl start mariadb

(2)配置主从复制

1、master

vim /etc/my.cnf

MySQL高可用MHA,数据库,mysql

2、slave1

vim /etc/my.cnf

MySQL高可用MHA,数据库,mysql

3、slave2 

vim /etc/my.cnf

MySQL高可用MHA,数据库,mysql

(3)启动

1、master

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.115.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.3' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.5' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.6' identified by '123.com';"

MySQL高可用MHA,数据库,mysql

mysql -e "show master status";

MySQL高可用MHA,数据库,mysql

2、slave1

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.115.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.3' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.4' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.6' identified by '123.com';"

MySQL高可用MHA,数据库,mysql

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=1007;"

MySQL高可用MHA,数据库,mysql

3、slave2

mysql -e "grant replication slave on *.* to 'myslave'@'192.168.115.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.3' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.4' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.5' identified by '123.com';"

MySQL高可用MHA,数据库,mysql

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=1007;"

MySQL高可用MHA,数据库,mysql

(4)验证

1、master

mysql -e "create database ea;"

mysql -e "show databases;"

MySQL高可用MHA,数据库,mysql

2、slave1

mysql -e "show databases;"

MySQL高可用MHA,数据库,mysql

3、slave2

mysql -e "show databases;"

MySQL高可用MHA,数据库,mysql

(三)MHA安装

(1)所有节点安装perl环境

1、mgt

yum install epel-release -y

MySQL高可用MHA,数据库,mysql

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

MySQL高可用MHA,数据库,mysql

2、master

yum install epel-release -y

MySQL高可用MHA,数据库,mysql

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

MySQL高可用MHA,数据库,mysql

3、slave1

yum install epel-release -y

MySQL高可用MHA,数据库,mysql

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

MySQL高可用MHA,数据库,mysql

4、slave2

yum install epel-release -y

MySQL高可用MHA,数据库,mysql

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

MySQL高可用MHA,数据库,mysql

(2)所有节点安装node

1、mgt

tar xf mha4mysql-node-0.57.tar.gz

cd mha4mysql-node-0.57

perl Makefile.PL && make && make install

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql

验证:cd /usr/local/bin  看到脚本就OK

MySQL高可用MHA,数据库,mysql

2、master

tar xf mha4mysql-node-0.57.tar.gz

cd mha4mysql-node-0.57

perl Makefile.PL && make && make install

MySQL高可用MHA,数据库,mysql

验证:cd /usr/local/bin  看到脚本就OK

MySQL高可用MHA,数据库,mysql

3、slave1

tar xf mha4mysql-node-0.57.tar.gz

cd mha4mysql-node-0.5

perl Makefile.PL && make && make install

MySQL高可用MHA,数据库,mysql

验证:cd /usr/local/bin  看到脚本就OK

MySQL高可用MHA,数据库,mysql

4、slave2

tar xf mha4mysql-node-0.57.tar.gz

cd mha4mysql-node-0.57

perl Makefile.PL && make && make install

MySQL高可用MHA,数据库,mysql

验证:cd /usr/local/bin  看到脚本就OK

MySQL高可用MHA,数据库,mysql

(3)mgt安装manager

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

MySQL高可用MHA,数据库,mysql

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

MySQL高可用MHA,数据库,mysql

脚本说明

master_ip_failover    自动切换时 VIP 管理的脚本

master_ip_online_change    在线切换时 vip 的管理

power_manager    故障发生后关闭主机的脚本

send_report    因故障切换后发送报警的脚本

配置文件建立

mkdir /etc/masterha

vim /etc/masterha/app1.cnf

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql

创建目录

mkdir -p /var/log/masterha/app1

MySQL高可用MHA,数据库,mysql

测试MHA

更改  master_ip_failover    自动切换时 VIP 管理的脚本

 vim /usr/local/bin/master_ip_failover

#!/usr/bin/env perl
use 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 = '192.168.115.200';								#指定vip的地址
my $brdc = '192.168.115.255';								#指定vip的广播地址
my $ifdev = 'ens33';										#指定vip绑定的网卡
my $key = '1';												#指定vip绑定的虚拟网卡序列号
my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";		#代表此变量值为ifconfig ens33:1 192.168.184.200
my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";		#代表此变量值为ifconfig ens33:1 192.168.184.200 down
my $exit_code = 0;											#指定退出状态码为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_master
sub 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高可用MHA,数据库,mysql

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

MySQL高可用MHA,数据库,mysql

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

MySQL高可用MHA,数据库,mysql

启动命令

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 &
MySQL高可用MHA,数据库,mysql

MySQL高可用MHA,数据库,mysql

(四)测试

停用master的mariadb服务

MySQL高可用MHA,数据库,mysql

切换到slave1上 

MySQL高可用MHA,数据库,mysql文章来源地址https://www.toymoban.com/news/detail-656686.html

到了这里,关于MySQL高可用MHA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微服务部署】九、使用Docker Compose搭建高可用双机热备MySQL数据库

      通常,一般业务我们使用云服务器提供的数据库,无论是MySQL数据库还是其他数据库,云服务厂商都提供了主备功能,我们不需要自己配置处理。而如果需要我们自己搭建数据库,那么考虑到数据的高可用性、故障恢复和扩展性,必须做数据备份配置。 一、MySQL 的多种数

    2024年02月07日
    浏览(33)
  • MySQL----MHA高可用

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

    2024年02月12日
    浏览(28)
  • MySQL高可用MHA

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

    2024年02月12日
    浏览(24)
  • MySQL--MHA高可用方案

            MHA 在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的master 节点,在此期间,MHA 会通过于其它从节点获取额外信息来避免一致性方面的问题。MHA 还提供了 master 节点的在线切换功能,即按需切换 master/slave 节点。  MHA Manager(管理节点)和 M

    2024年03月09日
    浏览(46)
  • MySQL-高可用MHA(二)

    目录 🍁通过keepalived方式 🍂安装keepalived 🍃防火墙策略 🍃keep配置文件 🍂MHA应用keepalived 🍃停止MHA 🍃启动MHA 🍃检查状态 🍃测试 🍁通过脚本实现VIP切换 🍂网卡环境配置 🍂MHA应用脚本 🍃停止MHA 🍃启动MHA 🍃检查状态 🍃测试     🦐博客主页:大虾好吃吗的博客    

    2023年04月17日
    浏览(35)
  • MySQL-MHA高可用(一)

    目录 🍁同步概念 🍁工作原理 🍃环境拓扑 🍁环境准备 🍂manager 🍂master1 🍂master2 🍂slave 🍃配置半同步复制 🍁master1 🍁master2 🍁slave 🍁查看状态 🍁创建用户并指定主从 🍂master1 🍂master2 🍂slave 🍃配置mysql-mha 🍁配置mha 🍁验证 🍂SSH 有效性验证 🍂集群复制的有效性验

    2023年04月19日
    浏览(21)
  • linux——mysql的高可用MHA

    目录 一、概述 一、概念 二、组成 三、特点 四、工作原理 二、案例 三、构建MHA 一、基础环境 二、ssh免密登录 三、主从复制 master slave1 四、MHA安装 一、环境 二、安装node 三、安装manager         MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制

    2024年02月12日
    浏览(24)
  • 【简单认识MySQL的MHA高可用配置】

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

    2024年02月15日
    浏览(28)
  • MySQL之MHA高可用配置及故障切换

    目录 一、MHA概念 1、MHA的组成  2、MHA的特点 3、主从复制有多少种复制方法 二、搭建MySql+MHA部署 1.Master、Slave1、Slave2 节点上安装 mysql 2.修改 Master、Slave1、Slave2 节点的 Mysql主配置文件/etc/my.cnf   3. 配置 mysql 一主两从 4、安装MHA所有组件  4.1 安装 MHA 软件 4.2 在所有服务

    2024年02月09日
    浏览(24)
  • Mysql 搭建MHA高可用架构,实现自动failover,完成主从切换

    目录 自动failover MHA: MHA 服务 项目:搭建Mysql主从复制、MHA高可用架构 实验项目IP地址配置: MHA下载地址 项目步骤:  一、修改主机名 二、编写一键安装mha node脚本和一键安装mha mangaer脚本,并执行安装 三、搭建Mysql主从复制集群(注意所有的Mysql主从复制机器都需要打开二

    2024年02月13日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包