古道长亭

Contact me with ixiaoqiang0011@gmail.com


  • 首页

  • 归档

  • 分类

  • 关于

  • Book

  • 搜索

mysql MHA高可用实战

时间: 2022-12-19   |   分类: mysql高级   | 字数: 1961 字 | 阅读约: 4分钟 | 阅读次数:

mysql MHA高可用实战

一. 环境准备

  • 准备4台Linux,装好mysql

    最好是全新安装,可以避免之前的配置造成的异常

  • 尽量创建一个服务器标识

    如 mysql1, mysql2, mysql3, MHA-manager, 便于操作进辨识

    此步骤可以忽略

  • mysql1, mysql2, mysql3 配置好主从同步

参考主从同步教程,并关掉防火墙 systemctl stop firewalld.service

  • 删除 /var/lib/mysql/auto.cnf

    如果未在my.cnf 中自定义指定路径, 默认为var/lib/mysql/auto.cnf路径

    此步骤可以忽略,但如果通过虚拟机克隆机器,会造成uuid一样,Mysql同步会报错

  • 设置4台机器免密互联互通

    可参考本站 linux部署教程设置, 以下仅作简要步骤示例

    #1. 各服务器执行以下命令
    ssh-keygen -t rsa
    
    #2. 在mysql1, mysql2, mysql3上分别执行以下命令, 密码输入系统密码,将公钥拷贝到MHA-manager服务器上
    ssh-copy-id 10.211.55.10  #ip地址为manager服务器ip
    
    #3. 切换到MHA-manager服务器,查看公钥
    cat /root/.ssh/authorized_keys
    
    #4. 执行以下命令,将自身公钥也添加到authorized_keys文件中,此时应该有4条
    cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
    
    #5. 将authorized_keys文件复制到其他3台mysql服务器上
    scp /root/.ssh/authorized_keys root@10.211.55.7:/root/.ssh/authorized_keys
    scp /root/.ssh/authorized_keys root@10.211.55.8:/root/.ssh/authorized_keys
    scp /root/.ssh/authorized_keys root@10.211.55.9:/root/.ssh/authorized_keys
    

二. MHA下载安装

2.1 MHA下载

MySQL5.7对应的MHA版本是0.5.8,所以在GitHub上找到对应的rpm包进行下载,MHA manager和node的安装包需要分别下载:

https://github.com/yoshinorim/mha4mysql-manager/releases/tag/v0.58 
https://github.com/yoshinorim/mha4mysql-node/releases/tag/v0.58

下载后

  • 3台mysql服务器安装node
  • MHA-manager安装manager和node

2.2 node安装

在四台服务器上安装mha4mysql-node。

MHA的Node依赖于perl-DBD-MySQL,所以要先安装perl-DBD-MySQL。

yum install perl-DBD-MySQL -y 
# 可参会报以下错误 
错误:软件包:perl-DBD-MySQL-4.023-6.el7.x86_64 (base)
          需要:libmysqlclient.so.18(libmysqlclient_18)(64bit)
错误:软件包:perl-DBD-MySQL-4.023-6.el7.x86_64 (base)

#安装 mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm 
#去该网站找: https://pkgs.org/download/mysql-community-libs-compat
wget https://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm

# 安装perl-DBD-MySQL 
 yum install perl-DBD-MySQL 
 
# 安装node
wget https://github.com/yoshinorim/mha4mysql- node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm 
rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm

2.3 manager安装

在MHA Manager服务器安装mha4mysql-node和mha4mysql-manager。

MHA的manager又依赖了perl-Confifig-Tiny、perl-Log-Dispatch、perl-Parallel-ForkManager,也分别进行安装。

# 1.安装 epel-release-latest-7.noarch.rpm 
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 

rpm -ivh epel-release-latest-7.noarch.rpm 
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel- perl-Parallel-ForkManager -y 

# 2.安装manager
wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm 

rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

# 如果上一步报错,可能报如下错误,再次尝试执行以下缺少的安装包
错误:依赖检测失败:
	perl(Parallel::ForkManager) 被 mha4mysql-manager-0.58-0.el7.centos.noarch 需要

yum install perl-DBD-MySQL
yum install perl-Config-Tiny
yum install perl-Log-Dispatch
yum install perl-Parallel-ForkManager

提示:由于perl-Log-Dispatch和perl-Parallel-ForkManager这两个被依赖包在yum仓库找不到,因此安装epel-release-latest-7.noarch.rpm。在使用时,可能会出现下面异常:Cannotretrieve metalink for repository: epel/x86_64。可以尝试使用/etc/yum.repos.d/epel.repo,然后注释掉metalink,取消注释baseurl。

三. MHA配置文件

MHA Manager服务器需要为每个监控的 Master/Slave 集群提供一个专用的配置文件,而所有的Master/Slave 集群也可共享全局配置

3.1 初始化配置目录

#目录说明 
#/var/log (CentOS目录) 
# 			/mha (MHA监控根目录) 
# 				/app1 (MHA监控实例根目录) 
# 						/manager.log (MHA监控实例日志文件) 
mkdir -p /var/log/mha/app1 
touch /var/log/mha/app1/manager.log

3.2 配置监控全局配置文件

vim /etc/masterha_default.cnf

[server default] 
#主库用户名,在master mysql的主库执行下列命令建一个新用户 
#create user 'mha'@'%' identified by '123123'; 
#grant all on *.* to mha@'%' identified by '123123'; 
#flush privileges;
#此处我们就用root
user=root 
password=123456 
port=3306 
#ssh登录账号 
ssh_user=root 
#从库复制账号和密码 
repl_user=root
repl_password=123456 
port=3306 
#ping次数 
ping_interval=1 
#二次检查的主机 
secondary_check_script=masterha_secondary_check -s 10.211.55.7 -s 10.211.55.8 -s 10.211.55.9

3.3 配置监控实例配置文件

先使用 mkdir -p /etc/mha 命令创建目录,然后使用vim /etc/mha/app1.cnf命令编辑文件

[server default] 
#MHA监控实例根目录 
manager_workdir=/var/log/mha/app1 
#MHA监控实例日志文件 
manager_log=/var/log/mha/app1/manager.log 
#[serverx] 服务器编号 
#hostname 主机名 
#candidate_master 可以做主库 
#master_binlog_dir binlog日志文件目录 
[server1] 
hostname=10.211.55.7 
candidate_master=1 
master_binlog_dir="/var/lib/mysql" 

[server2] 
hostname=10.211.55.8
candidate_master=1 
master_binlog_dir="/var/lib/mysql"

[server3] 
hostname=10.211.55.9 
candidate_master=1 
master_binlog_dir="/var/lib/mysql"

四. MHA配置检测

  • 执行ssh通信检测

    在MHA Manager服务器上执行

    masterha_check_ssh --conf=/etc/mha/app1.cnf
    
  • 检测mysql主从复制

    在MHA Manager服务器上执行

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

    tips: 我在测试的时候,一直报错, 是由于之前的主从关系设置, 并且我是直接克隆之前的linux,导致主从关系错乱

五. MHA manager启动

  • 在MHA Manager服务器上执行

    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 &
    
  • 查看监控状态命令如下

    masterha_check_status --conf=/etc/mha/app1.cnf
    
    app1 (pid:19131) is running(0:PING_OK), master:10.211.55.7
    
  • 查看监控日志命令如下

    tail -f /var/log/mha/app1/manager.log
    

六. 测试MHA故障转移

  • 模拟主节点崩溃

    • 主节点打开日志tail -200f /var/log/mha/app1/manager.log

    • 关闭Master MySQL服务器服务,模拟主节点崩溃

      systemctl stop mysqld
      
    • 查看MHA日志,可以看到哪台slave切换成了master

#mysql# #MHA高可用#
QQ扫一扫交流

标题:mysql MHA高可用实战

作者:古道长亭

声明: 欢迎加群交流!

如有帮助,欢迎多多交流 ^_^

微信打赏

支付宝打赏

系统配置优化
mysql 双主模式实战
  • 文章目录
  • 站点概览
古道长亭

古道长亭

Always remember that your present situation is not your final destination. The best is yet to come.

226 日志
57 分类
104 标签
GitHub Gitee
友情链接
  • 古道长亭的BOOK
  • JAVA学习
标签云
  • Mysql
  • 搜索引擎
  • Mybatis
  • 容器
  • 架构
  • 消息队列
  • Flink
  • Sharding sphere
  • 流处理
  • 缓存
  • 一. 环境准备
  • 二. MHA下载安装
    • 2.1 MHA下载
    • 2.2 node安装
    • 2.3 manager安装
  • 三. MHA配置文件
    • 3.1 初始化配置目录
    • 3.2 配置监控全局配置文件
    • 3.3 配置监控实例配置文件
  • 四. MHA配置检测
  • 五. MHA manager启动
  • 六. 测试MHA故障转移
© 2019 - 2024 京ICP备19012088号-1
0%