MySql之MHA高可用搭建(三)

MHA高可用搭建(四台服务器上确保ssh可以相互连通)

MySql集群搭建在mysql专栏在上一节
以下操作只能验证故障转移,Master恢复后需要手动改变主从

#ssh检查机器是否连通
ssh 192.168.0.199 
exit 
ssh 192.168.0.165 
exit 
ssh 192.168.0.142 
exit
  1. 在四台服务器上分别执行下面命令,生成公钥和秘钥,连续回车生成的是默认的

    ssh-keygen -t rsa
    
  2. 在三台服务器上分别执行下面命令,将公钥拷贝到MHA服务器上

    ssh-copy-id 192.168.0.126
    
  3. 检查MHA上是否包含三个公钥,执行后可以看到三个ssh-rsa

    cat /root/.ssh/authorized_keys
    
  4. 执行下面命令,将MHA Manager的公钥添加到authorized_keys文件中(此时应该包含4个公钥)

    cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
    
  5. 从MHA Manager服务器执行下面命令,向其他三台MySQL服务器分发公钥信息。

    scp /root/.ssh/authorized_keys root@192.168.0.199:/root/.ssh/authorized_keys 
    scp /root/.ssh/authorized_keys root@192.168.0.165:/root/.ssh/authorized_keys 
    scp /root/.ssh/authorized_keys root@192.168.0.142:/root/.ssh/authorized_keys
    
  6. 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

    三台Mysql需要安装node

    MHA-Manager服务器需要安装manager和node

  7. MHA-node安装

    在四台机器上安装mha4mysql-node,又因为MHA的Node依赖于perl-DBD-MySQL,所以要先安装perl-DBD-MySQL。

    1. yum install perl-DBD-MySQL -y
    2. rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm(注:这是上面github下载的安装包)
    
  8. MHA-Manager安装

    在MHA服务器上安装Manager和node,MHA的manager又依赖了perl-Confifig-Tiny、perl-Log-Dispatch、perl-Parallel-ForkManager,也分别进行安装。

    #安装依赖
    1. wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    2. rpm -ivh epel-release-latest-7.noarch.rpm
    3. yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager -y
    #安装node
    rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm
    #安装Manager
    rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
    

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

  9. 创建MHA监控实例日志文件

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

    vim /etc/masterha_default.cnf
    
    [server default]
    #主库用户名,在master mysql的主库执行下列命令建一个新用户
    #create user 'mha'@'%' identified by 'root';
    #grant all on *.* to mha@'%' identified by 'root';
    #flush privileges;
    user=mha
    password=root
    port=3306
    #ssh登录账号
    ssh_user=root
    #从库复制账号和密码
    repl_user=root
    repl_password=root
    port=3306
    #ping次数
    ping_interval=1
    #二次检查的主机
    secondary_check_script=masterha_secondary_check -s 192.168.0.199 -s 192.168.0.165 -s 192.168.0.142
    
  11. 添加监控实例配置文件

    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=192.168.0.199
    candidate_master=1
    master_binlog_dir="/var/lib/mysql"
    
    [server2]
    hostname=192.168.0.165
    candidate_master=1
    master_binlog_dir="/var/lib/mysql"
    
    [server3]
    hostname=192.168.0.142
    candidate_master=1
    master_binlog_dir="/var/lib/mysql"
    
    
  12. MHA检测(在MHA-Manager服务器上执行)

    #执行ssh通信检测
    masterha_check_ssh --conf=/etc/mha/app1.cnf
    #检测MySQL主从复制
    masterha_check_repl --conf=/etc/mha/app1.cnf
    #出现  MySQL Replication Health is OK  则说明集群没问题
    
  13. 启动MHA-Manager

    #启动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 &
    
    #查看监控状态命令:
    masterha_check_status --conf=/etc/mha/app1.cnf
    
    #查看监控日志
    tail -f /var/log/mha/app1/manager.log
    
  14. 故障转移测试:

    在MHA-Manager查看日志:

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

    关闭Master MySQL服务器服务,模拟主节点崩溃(最好先确定下来主从同步没问题再继续测试故障转移)

    systemctl stop mysqld
    

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

    show master status;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值