zoukankan      html  css  js  c++  java
  • 四十三、搭建MHA高可用

    实验环境

    三台服务器
    10.154.0.111 主 node
    10.154.0.112 从1 node
    10.154.0.113 从2 manager

    搭建MySQL MHA

    1、下载MHA软件
    这里使用郭老师提供的MHA-2019-6.28.zip软件包,点我下载
    0.58版本下载
    0.56版本下载
    xshell6绿色版下载

    2、上传解压安装

    #三台服务器都做
    $ yum install perl-DBD-MySQL -y
    $ unzip MHA-2019-6.28.zip
    $ rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
    

    这里我上传使用的xftp6上传的
    MHA是由perl语言编写的,需要安装perl连接mysql的驱动依赖包

    3、在主库创建MHA账号

    mysql> grant all privileges on *.* to mha@'10.154.0.%' identified by 'mha';
    mysql> select user,host from mysql.user;
    

    需要在主库从库都验证一下是否同步了mha用户

    4、Manager软件安装

    #在manager节点上执行,我这里的manager节点是10.154.0.113
    $ yum install -y 
    perl-Config-Tiny 
    epel-release 
    perl-Log-Dispatch 
    perl-Parallel-ForkManager 
    perl-Time-HiRes
    
    $ rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
    

    5、编辑manager节点配置文件

    #创建配置文件目录
    $ mkdir -p /etc/mha
    
    #创建日志目录
    $ mkdir -p /var/log/mha/app1
    
    #编辑mha配置文件
    cat > /etc/mha/app1.cnf <<EOF
    [server default]
    manager_log=/var/log/mha/app1/manager        
    manager_workdir=/var/log/mha/app1            
    master_binlog_dir=/data/binlog     #主库binlog日志路径 
    user=mha                                   
    password=mha                               
    ping_interval=2  #每隔2s检测master是否存活,默认检测4次
    repl_password=123
    repl_user=repl
    ssh_user=root                            
    [server1]                                   
    hostname=10.154.0.111
    port=3306                                  
    [server2]            
    hostname=10.154.0.112
    port=3306
    [server3]
    hostname=10.154.0.113
    port=3306
    EOF
    

    MHA可以同时管理多套主从复制,每套主从可以通过配置文件区分,我这里写的app1,如果是生产环境,可以根据项目来命名,如/etc/mha/taobao.cnf,注意改了配置文件名相应目录名也要更改。

    6、状态检查

    #在mannager上做检测ssh跟主从是否正常
    $ masterha_check_ssh  --conf=/etc/mha/app1.cnf 
    $ masterha_check_repl  --conf=/etc/mha/app1.cnf 
    

    这里检查主从状态出错,错误如下

    这个故障耗了不少时间,结果发现是开启防火墙导致的,关闭三台主机的防火墙跟selinux即可。

    其他错误可参考:错误汇总

    7、开启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 &
    

    8、查看MHA状态

    $ masterha_check_status --conf=/etc/mha/app1.cnf
    app1 (pid:22974) is running(0:PING_OK), master:10.154.0.111
    

    其他配置

    这个实验我没有配置软链接跟ssh免密登录,因为这三台主机是我克隆的,所以SSH密钥对是一致的。
    不过在这里还是写下ssh免密登录配置,跟软链接配置吧,以后可能会用上。

    1、设置软链接
    这里给出两种方案,建议使用第二种,安全系数较高

    # 第一种方案
    ln -s /usr/local/mysql/bin/mysql /usr/bin/ 
    ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/ 
    
    # 第二种方案
    ln -s /usr/local/mysql/bin/mysql /usr/sbin/ 
    ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/ 
    

    下面说说这两个目录的用处
    /bin:普通用户可以使用的命令文件,以及后期安装的一些软件的运行脚本。
    /sbin:超级用户使用的命令文件。

    设置软链接是因为mysql程序跟mysqlbinlog程序需要被MHA脚本调用,而MHA脚本默认安装在/usr/bin中,所以我倾向于使用第一种方案。
    为什么我不用设置软链接也能成功?因为我把mysql写入了全局变量中了。

    参考资料:
    MHA高可用搭建
    B站课程MHA高可用搭建 P144

    2、配置SSH免密登录

    #在10.154.0.111上执行
    $ ssh-keygen
    $ cd /root/.ssh
    $ ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.154.0.112 
    $ ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.154.0.113
    
    #验证,成功执行date命令显示系统时间表示配置成功
    $ ssh 10.154.0.111 date
    Sat Apr 17 14:14:16 CST 2021
    $ ssh 10.154.0.112 date
    Sat Apr 17 14:14:16 CST 2021
    $ ssh 10.154.0.113 date
    Sat Apr 17 14:14:16 CST 2021
    

    学习来自:B站课程:搭建MHA高可用 P144,《MySQL入门与提高实践》第18章

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    C#获取当前日期时间(转)
    c#截取字符串split各种用法
    c#国际化
    C#密码加密
    c#程序中对密码进行加密的方法
    百度信誉认证体系初级实名认证即将取消,这意味着什么?
    新增利息宝-京东淘宝唯品会自动抢单系统源码搭建过程
    webapp/H5封装,混开APP,没有原生APP好?事实是这样的吗?
    laravel基础laravle中orm简单的增删改查-一颗优雅草男神你姚哥
    Thinkphp二次开发威客RW平台源码详细搭建教程(技术分享帖)-一颗优雅草科技yungui
  • 原文地址:https://www.cnblogs.com/tz90/p/14663995.html
Copyright © 2011-2022 走看看