Centos7 Mysql5.6.40 高可用架构--MHA

10 篇文章 0 订阅

往期历史

  1. Centos7 Mysql5.6.40 主从结构 GTID 复制

mysql高可用–MHA架构可以实现什么效果?

  1. 监控
  2. 选主库
  3. 数据补偿
  4. FAILOVER(故障转移)
  5. 应用透明(vip)
  6. 故障提醒

架构前提:

  1. 三个物理节点
  2. 1主2从结构
    master: db01 slave:db02 db03
    淘宝做过二次开发, TMHA架构,只需要两个节点

MHA 高可用方案软件构成

  1. Manager (管理)软件:选择一个从节点安装(如果物理机充足可以单独安装在一台物理机上)
  1. 监控问题 ? 负责监控各个主机 mysql实例
  2. 处理问题,需要人为操作
  3. 数据补偿-使用GTID
  1. Node 软件:所有节点安装
  2. Manger 工具包主要包括以下几个工具:

masterha_check_ssh 检查MHA的SSH配置状况
masterha_check_repl 检查MYSQL复制状况
masterha_check_status 检查当前MHA运行状态
masterha_manger 启动关闭MHA
masterha_master_monitor 检测master是否宕机
masterha_master_switch 控制故障转移(自动或者手动)
masterha_conf_host 添加或删除配置的server信息

  1. Node 工具包(这些工具通常由MHA Manager的脚本触发,无需人无操作)主要包括以下几个工具
  1. save_binary_logs 保存和复制master 的二进制日志
  2. apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的节点
  3. slave filter_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已经不在使用这个工具)
  4. gurge_relay_logs 清除中继日志(不会阻塞sql线程)

MHA环境搭建

  1. 准备环境(1主2从GTID)
  2. 设置从库relay的自动删除功能 ,从库设置只读
  1. 关闭自动删除 set global relay_log_purge = 0; 临时生效 (建议3个节点都做)
  2. set global read_only=1; 临时生效 设置只读(slave db02 slave db03)
  1. 永久设置有效需要加入配置文件

vim /etc/my.cnf
relay_log_purge=0 #建议3个都设置
set global read_only=1; # 只在两个从库设置

  1. 配置关键程序软连接(MHA作者使用yum安装MySQL导致源码中写死了路径,所有必须配置软连接)所有节点必须要设置
    ln -s /application/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
    ln -s /application/mysql/bin/mysql /usr/bin/mysql

  2. 配置各节点互信(ssh)

db01:
rm -rf /root/.ssh
ssh-keygen #生成密钥
mv /root/.ssh/id_rsa.pub authorized_keys
#公钥文件名必须要是authorized_keys

scp -r /root/.ssh 10.0.0.129 (密钥对拷贝)
scp -r /root/.ssh 10.0.0.130 (密钥对拷贝)

  1. 各节点检验无密码连接(数据补偿需要)

db01:
ssh 10.0.0.128 date
ssh 10.0.0.129 date
ssh 10.0.0.130 date

db02:
ssh 10.0.0.128 date
ssh 10.0.0.129 date
ssh 10.0.0.130 date

db03:
ssh 10.0.0.128 date
ssh 10.0.0.129 date
ssh 10.0.0.130 date

  1. 软件包上传服务器
  1. 链接:https://pan.baidu.com/s/1QpmbKBGdZiB7VgNyX5qNzw (百度网盘)
    提取码:4djx
  2. 创建软件存放目录
    mkdir -p /server/tools
  1. 安装node 软件依赖包 (perl 环境安装)

yum install perl-DBD-MySQL -y

  1. 所有节点安装node软件

rpm -ivh mha4mysql-node-0.56-0.el7.noarch.rpm

  1. 在db01主库中创建mha需要的用户(主从环境必须可用,自动复制用户到从节点),mha用户监测所有节点状态
mysql> grant all privileges on *.* to mha@'10.0.0.%' identified by 'mha';
  1. 查看从节点是否同步mha用户(db02,db03节点)
    在这里插入图片描述
  2. 如果Manager 软件不安装在一个单独的服务器节点,建议安装在最后一个从节点(db03节点)

不安装到主节点(db01)原因:预防主节点宕机导致整个mha失效,无法切换(没有单独服务器节点安装Manager软件的情况)

  1. 安装Manager软件依赖包
    yum install -y perl-Config-Tiny
    yum install -y epel-release perl-Log-Dispatch
    yum install -y perl-Parallel-ForkManager
    yum install -y perl-Time-HiRes
  2. 安装Manager:
    rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
  1. 配置文件准备(db03)
  1. 创建配置文件目录
    mkdir -p /etc/mha
  2. 创建日志目录
    mkdir -p /var/log/mha/aap1
  3. 编写生成mha配置文件:
    vim /etc/mha/app1.cnf
[server default]
# 日志文件
manager_log=/var/log/mha/app1/manager
# 工作目录
manager_workdir=/var/log/mha/app1
# 主库二进制日志
master_binlog_dir=/data/mysql/
# mysql用户
user=mha
password=mha
#
ping_interval=2
#CHANGE MASTER 用户
repl_password=123
repl_user=repl
# 互信用户
ssh_user=root

[server1]
hostname=10.0.0.128
port=3306

[server2]
hostname=10.0.0.129
port=3306

[server3]
hostname=10.0.0.130
port=3306
  1. 状态检测(MHA要启动需要保证互信是通的,主从是通的,检测不通过,直接去解决问题)
  1. 互信检测:
    masterha_check_ssh --conf=/etc/mha/app1.cnf
    在这里插入图片描述
  1. 主从状态检测
    masterha_check_repl --conf=/etc/mha/app1.cnf
    在这里插入图片描述
  1. 开启MHA
    nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
    在这里插入图片描述

  2. 查看MHA状态:
    masterha_check_status --conf=/etc/mha/app1.cnf
    在这里插入图片描述

  3. 模拟故障:

  1. 宕掉主库,查看db03从库主从是否切换
    /etc/init.d/mysqld stop
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值