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
- 安装 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
-
主备节点先安装node 如果先安装manager会报错
# rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm -
备库安装mha manager
# yum install mha4mysql-manager-0.58-0.el7.centos.noarch.rpm -
备库生成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 -
从库设置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; -
编辑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 -
检查
- 检查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 -
测试
停掉主库192.168.10.168,查看从库169是否提升为主
# 没有复制 已经提升为主库 mysql> show slave status \G; Empty set (0.00 sec)提升为主库后mha脚本就自动结束 等到下一次主从修复后 手动配置mha脚本再次启动
本文来自博客园,作者:makj,转载请注明原文链接:https://www.cnblogs.com/makj/p/16429002.html

浙公网安备 33010602011771号