MHA安装

mha安装

主库:192.168.10.168

从库:192.168.10.169

软件:

​ mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar

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

​ mha4mysql-node-0.58-0.el7.centos.noarch.rpm

  1. 安装 mysql-community-libs-compat
# yum remove mariadb-libs
# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

# 安装依赖
# yum install net-tools -y


# tar xvf mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar 


# 这两个暂时不需要
# rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm 
# rpm -ivh mysql-community-libs-5.7.38-1.el7.x86_64.rpm 
# 这两个暂时不需要


# rpm -ivh mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm 
# yum install perl-DBD-MySQL -y
  1. 主备节点先安装node 如果先安装manager会报错

    # rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm 
    
  2. 备库安装mha manager

    # yum install mha4mysql-manager-0.58-0.el7.centos.noarch.rpm 
    
  3. 备库生成ssh key并且免密登录

    主库要向备库免密登录,备库也要向主库免密登录 两个相互免密

    因为mha会拷贝主库的binlog和到备库 让主库没有同步到binlog的数据同步到备库

    # 192.168.10.168执行
    # ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
    # ssh-copy-id -i /root/.ssh/id_rsa.pub  root@192.168.10.169
    
    # 192.168.10.169执行
    # ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
    # ssh-copy-id -i /root/.ssh/id_rsa.pub  root@192.168.10.168
    
    # 两台都执行
    # chmod 600 /root/.ssh/authorized_keys
    # vim /etc/ssh/sshd_config
    #去掉以下两行的注释:
    PubkeyAuthentication yes
    PermitRootLogin yes
    
  4. 从库设置set global relay_log_purge=0

    MHA在发生切换的过程中,从库的恢复过程中依赖于relay log的相关信息,所以这里要将relay log的自动清除设置为OFF,采用手动清除relay log的方式。默认情况下,从服务器上的中继日志会在SQL线程执行完毕后被自动删除。但是在MHA环境中,这些中继日志在恢复其他从服务器时可能会被用到,因此需要禁用中继日志的自动删除功能。定期清除中继日志需要考虑到复制延时的问题。在ext3的文件系统下,删除大的文件需要一定的时间,会导致严重的复制延时。为了避免复制延时,需要暂时为中继日志创建硬链接,因为在linux系统中通过硬链接删除大文件速度会很快。(在mysql数据库中,删除大表时,通常也采用建立硬链接的方式)

    # /usr/local/mysql/bin/mysql -S /data/mysql/mysql3306/mysql3306.sock -uroot -proot
    mysql> set global relay_log_purge=0;
    
  5. 编辑manager配置文件

    • server default段是manager的一些基本配置参数,server1、server2、server3分别对应复制中的master、第一个slave、第二个slave。该文件的语法要求严格,变量值后不要有多余的空格。主要配置项说明如下。
    • manager_log:设置manager的日志文件。
    • manager_workdir:设置manager的工作目录。
    • master_binlog_dir:设置master保存binlog的位置,以便MHA可以找到master的日志,这里的也就是mysql的数据目录。
    • master_ip_failover_script:设置自动failover时候的切换脚本。
    • master_ip_online_change_script:设置手动切换时候的切换脚本。
    • password:设置mysql中root用户的密码。
    • ping_interval:设置监控主库,发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行railover。
    • remote_workdir:设置远端mysql在发生切换时binlog的保存位置。
    • repl_password:设置复制用户的密码。
    • repl_user:设置复制环境中的复制用户名
    • secondary_check_script:一旦MHA到hdp4的监控之间出现问题,MHA Manager将会尝试从hdp3登录到hdp4。
    • shutdown_script:设置故障发生后关闭故障主机脚本。该脚本的主要作用是关闭主机放在发生脑裂,这里没有使用。
    • ssh_user:设置ssh的登录用户名。
    • user:设置监控用户为root。
    • candidate_master:设置为候选master。设置该参数以后,发生主从切换以后将会将此从库提升为主库,即使这个主库不是集群中事件最新的slave。
    • check_repl_delay:默认情况下如果一个slave落后master 100M的relay logs的话,MHA将不会选择该slave作为一个新的
    • master,因为对于这个slave的恢复需要花费很长时间,通过设置check_repl_delay=0,MHA触发切换在选择一个新的
    • master的时候将会忽略复制延时,这个参数对于设置了candidate_master=1的主机非常有用,因为这个候选主在切换的过程中一定是新的master。
    # vim /etc/mha.cnf
    [server default]
    # mysql user and password
    user=mysql
    password=mysql
    # working directory on the manager
    manager_workdir=/var/log/masterha/app1
    # manager log file
    manager_log=/var/log/masterha/app1/app1.log
    # working directory on MySQL servers
    remote_workdir=/var/log/masterha/app1
    
    # master
    [server1]
    hostname=192.168.10.168
    
    # slave
    [server2]
    hostname=192.168.10.169
    
    #[server3]
    #hostname=host3
    
  6. 检查

    • 检查ssh免密
    # sudo masterha_check_ssh  --conf=/etc/mha.cnf
    ……
    Thu Jun 30 22:25:29 2022 - [info] All SSH connection tests passed successfully.
    
    • 检查主备复制状态
    # masterha_check_repl --conf=/etc/mha.cnf
    ……
    MySQL Replication Health is NOT OK!
    
    • 检查mha状态
    # masterha_check_status --conf=/etc/mha.cnf
    ……
    mha is stopped(2:NOT_RUNNING).
    
    • 运行 mha_manager
    # masterha_manager --conf=/etc/mha.cnf > /var/log/mha/mysql3306/mha-3306.log 2>&1 &
    
    • 停止 mha
    masterha_stop --conf=/etc/mha.cnf
    
  7. 测试

    停掉主库192.168.10.168,查看从库169是否提升为主

    # 没有复制 已经提升为主库
    mysql> show slave status \G;
    Empty set (0.00 sec)
    

    提升为主库后mha脚本就自动结束 等到下一次主从修复后 手动配置mha脚本再次启动

posted @ 2022-06-30 23:10  makj  阅读(226)  评论(0)    收藏  举报