MySQL案例:MHA实现主备切换(主从架构)万字详解

目录

MHA

概念

MHA的组成

特点

案例介绍

(1)案例需求

(2)案例实现思路

(3)案例拓扑图

(4)案例环境

案例步骤

基本环境配置

关闭防火墙和内核安全机制

安装数据库

授权

主从复制的授权

高可用MHA的授权

部署主从架构

部署MHA

安装MHA

在所有节点安装node组件

换仓库源

免密连接

测试

安装manager组件

修改脚本和配置文件

测试免密登录

测试主从连接

配置IP

启动MHA

查看日志

测试

模拟故障

子接口vip的变化

修复


MHA

MHA全称是MySQL Master High Availability,它是一款开源的高可用程序,‌专门为MySQL的主从复制架构设计,‌提供了自动化的主节点故障转移功能。‌

概念

  • 是一套优秀的MySQL高可用环境下故障切换和主从复制的软件
  • MySQL故障过程中,MHA能做到0-30秒内自动完成故障切换

MHA的组成

  • MHA Manager(管理节点)
  • MHA Node(数据节点)

特点

  • 在发生故障自动切换的过程中,MHA会尝试从故障的主服务器上保存二进制日志,最大程度保证数据不丢失
  • 使用半同步复制,可以大大降低数据丢失的风险
  • 目前MHA支持一主多从架构,最少3台服务器,也就是一主两从

案例介绍

(1)案例需求

本案例要求通过 MHA 监控 MySQL 数据库在故障时进行自动切换,不影响业务。

(2)案例实现思路

  1. 安装MySQL 数据库
  2. 配置MySQL一主两从
  3. 安装MHA软件
  4. 配置无密码认证
  5. 配置MySQL MHA 高可用
  6. 模拟master故障切换

(3)案例拓扑图

(4)案例环境

主机

操作系统

IP 地址

角色

服务器

CentOS7.9

192.168.10.101

管理节点,安装 node、manager 组件

服务器

CentOS7.9

192.168.10.102

Master 节点,安装 node 组件

服务器

CentOS7.9

192.168.10.103

Slave 节点,安装 node 组件

服务器

CentOS7.9

192.168.10.104

Slave 节点,安装 node 组件

测试机

CentOS7.9

192.168.10.105

作为客户端测试结果


案例步骤

基本环境配置

关闭防火墙和内核安全机制

打开除了测试机的其他四台作为服务器的主机,都连接上XShell

因为接下来有相同操作,右键终端空白处给4台数据库主机都开启会话同步

使用disable永久关闭防火墙,修改selinux文件来永久关闭内核安全机制,为了实现每个主机都能通过名称的方式互相通信,在hosts文件末尾追加以下内容

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/sysconfig/selinux
SELINUX=disabled    # 修改参数为disabled
[root@localhost ~]# vim /etc/hosts
192.168.10.101 MHA-manager
192.168.10.102 Mysql1
192.168.10.103 Mysql2
192.168.10.104 Mysql3
# 保存并退出

安装数据库

此时需要安装数据库,而101作为管理服务器的角色,用不到数据库所以不用安装,把101的会话同步关掉,然后安装数据库软件包

此时会话同步的主机应该是102、103、104,101是关闭会话同步的

在102输入

使用yum为3个主从服务器安装mariadb服务端

[root@localhost ~]# yum -y install mariadb-server

修改mysql的配置文件,在[mysqld]单元下方添加以下内容

[root@localhost ~]# vim /etc/my.cnf
[mysqld]
server-id=102
log-bin=master-bin
binlog-format=MIXED
relay-log-purge=0
log-slave-updates=true
  • relay-log-purge:如果=1,表示在SQL线程执行完中继日志的语句后,删除掉该中继日志,如果=0,执行完语句后保留该日志
    • 在高可用环境中,每一个节点都有可能成为主节点,所以要长期保存生成的日志信息,所以=0
  • log-slave-updates:允许从节点同步主节点的数据并扩展给其他节点

因为开着会话同步,但是server-id的参数又不能重复,所以先关闭全部会话同步,然后修改另外两个主机的server-id

# 103主机改为:
server-id=103
# 104主机改为:
server-id=104

授权

然后再开启会话同步,和刚才一样,把101的会话同步关闭,只同步三台服务器的会话

在102输入

启动mariadb数据库,设置密码,然后登录进去

[root@Mysql1 ~]# systemctl start mariadb
[root@Mysql1 ~]# mysqladmin -uroot password 'pwd123'
主从复制的授权

使用grant语句授权给从服务器可以访问所有库的所有表

MariaDB [(none)]> grant replication slave on *.* to 'myslave'@'192.168.10.%' identified by '123456';
高可用MHA的授权

指定网段和主机名的连接权限

MHA是整个架构的管理者,所以授权设为all,因为mha的权限很大。所以mha的权限应该授权给装有MHA的主机来使用

如果要基于IP地址来连接:可以指定为IP地址

如果要基于主机名来连接:可以指定为主机名,比如:'mha'@'Mysql1'

如果觉得192.168.10.0的网段范围太大了,可以单独指定多个IP设置

MariaDB [(none)]> grant all privileges on *.* to 'mha'@'192.168.10.%' identified by 'manager';
MariaDB [(none)]> grant all privileges on *.* to 'mha'@'Mysql1' identified by 'manager';
MariaDB [(none)]> grant all privileges on *.* to 'mha'@'Mysql2' identified by 'manager';
MariaDB [(none)]> grant all privileges on *.* to 'mha'@'Mysql3' identified by 'manager';
MariaDB [(none)]> flush privileges;    # 刷新权限

输入完上方的语句就可以关闭会话同步了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值