九五从零开始的运维之路(其三十五)

文章目录

  • 前言
  • 一、概述
    • 1.概念
    • 2.组成
    • 3.特点
    • 4.工作原理
    • 5.优点:
  • 二、各节点及其ip地址
  • 三、构建MHA
    • 1.ssh免密登录
    • 2.构建mysql主从复制
      • (一)安装mariadb数据库并启动
      • (二)master服务器
      • (三)slave服务器
      • (四)验证是否实现主从复制
    • 3.MHA安装
      • (一)所有节点安装perl环境
      • (二)所有节点安装node包
    • 4.测试
  • 总结


前言

本篇将简述的内容:Linux系统下的Mariadb高可用–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进行复制

5.优点:

MHA作为一个开源的高可用性解决方案,具有以下优点:

  • 简单易用:安装和配置MHA非常简单,只需几个简单的步骤即可完成。
  • 功能强大:MHA可以自动监控主从复制的状态,并在主节点故障时自动切换到备用节点。
  • 稳定可靠:MHA经过多年的实践和优化,已经在许多生产环境中得到了验证,具有较高的稳定性和可靠性。

二、各节点及其ip地址

manager node node node
mgt master slave1 slave2
192.168.115.3 192.168.115.4 192.168.115.5 192.168.115.6

三、构建MHA

要求:
构建mysql一主两从复制,一台mgt服务
前期准备:
为了方便操作,可先更改主机名
hostnamectl set-hostname 主机名
随后在本地hosts文件内分别
添加ip地址对应其主机名
九五从零开始的运维之路(其三十五)_第1张图片

1.ssh免密登录

四台主机各自免密登陆
获取密钥并将密钥传送至其他主机

192.168.115.3 ssh-keygen
- for i in 4 5 6;do ssh-copy-id [email protected].$i;done
192.168.115.4 ssh-keygen
- for i in 3 5 6;do ssh-copy-id [email protected].$i;done
192.168.115.5 ssh-keygen
- for i in 4 3 6;do ssh-copy-id [email protected].$i;done
192.168.115.6 ssh-keygen
- for i in 4 5 3;do ssh-copy-id [email protected].$i;done

2.构建mysql主从复制

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

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

(二)master服务器

修改配置文件,开启二进制日志文件

vim  /etc/my.cnf
[mysqld]
server-id = 20
log-bin = master-bin
log-slave-updates = true

启动服务

systemctl start mariadb

做用户赋权

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 "show master status";

九五从零开始的运维之路(其三十五)_第2张图片

(三)slave服务器

vim /etc/m.cfn
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.115.%' identified by '123.com';"
mysql -e "grant all privileges on *.* to 'mha'@'192.168.115.%' identified by '123.com';"

在Slave服务器授权,启动从库,进行主从库数据同步

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

(四)验证是否实现主从复制

master

mysql -e "create database jx;"

slave

mysql -e "show databases;"

从服务器出现新建库----jx,即说明主从复制搭建成功
九五从零开始的运维之路(其三十五)_第3张图片

3.MHA安装

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

更新epel源至最新(版本一致即可)

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包

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

验证
cd /usr/local/bin
看到脚本就OK
九五从零开始的运维之路(其三十五)_第4张图片

只有mgt安装manager包

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/

脚本说明
九五从零开始的运维之路(其三十五)_第5张图片

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 &

查看是否运行

在这里插入图片描述

4.测试

停用master的mariadb服务

systemctl stop mariadb

查看 /var/log/masterha/app1/manager.log
可发现
已启动自动(非交互式)故障转移。
九五从零开始的运维之路(其三十五)_第6张图片

能看到区域ip漂移到slave1服务器上

slave1
在这里插入图片描述

slave2

九五从零开始的运维之路(其三十五)_第7张图片
可以看到
master服务down掉后
slave1充当主服务器
slave2依旧为从服务器
依旧可实现主从复制


总结

通过使用MHA,我们可以在Linux系统下实现Mariadb的高可用性,提高数据库的稳定性和可靠性。MHA具有简单易用、功能强大、稳定可靠等特点,是一个值得推荐的高可用性解决方案。

你可能感兴趣的:(九五从零开始的运维之路,#,运维,mysql)