MySQL高可用架构之MHA详解(2)

在四个节点的/etc/hosts中添加主机内容: 
10.0.0.200 mycat01 
10.0.0.201 master01 
10.0.0.204 master02 
10.0.0.202 slave01

在管理节点创建配置文件

[root@mycat01 ~]# cat /etc/app1.cnf
[server default]
# mysql user and password
user=root
password=123456
ssh_user=root
# working directory on the manager
manager_workdir=/var/log/masterha/app1
# working directory on MySQL servers
remote_workdir=/var/log/masterha/app1
repl_user=repl
repl_password=123456
user=root
ping_interval=1
remote_workdir=/tmp
[server1]
hostname=master01
port=3306
master_binlog_dir=/usr/local/mysql/data
[server2]
hostname=master02
port=3306
master_binlog_dir=/usr/local/mysql/data
#candidate_master=1
#check_repl_delay=0
[server3]
hostname=slave01
port=3306
master_binlog_dir=/usr/local/mysql/data

在所有节点的my.cnf 文件 添加一下内容

log-bin=mysql-bin
relay_log_purge=0
log-slave-updates=true

添加完记得重启所有mysql环境

所有节点(管理节点和node节点)实现无密码登录 
MHA manager通过SSH访问所有的node节点,各个node节点也同样需要通过SSH来相互发送不同的relay log 文件,所以有必要在每一个node和manager上配置SSH无密码登陆。

设置目录和软连接 

      mkdir /var/log/masterha/app1 –p #管理节点 存放mha日志

      ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog #所有节点 
      ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql #所有节点

检测所有节点SSH连接是否配置正常 
MHAmanager可通过masterha_check_ssh脚本检测SSH连接是否配置正常

      masterha_check_ssh --conf=/etc/app1.cnf

MySQL高可用架构之MHA详解

在管理节点检查复制配置 
为了让MHA正常工作,所有的master和slave必须在配置文件中正确配置,MHA可通过masterha_check_repl 脚本检测复制是否正确配置

      masterha_check_repl --conf=/etc/app1.cnf

    如果主从复制正常会出现 
    MySQL Replication Health is OK

  

开启Manager 
当你正确配置了mysql复制,正确安装了manager和node节点,SSH配置也正确,那么下一步就是开启manager,可通过 masterha_manager 命令开启

nohup masterha_manager --conf=/etc/app1.cnf > /var/log/masterha/app1/mha_manager.log < /dev/null &

检查manager状态 
当MHA manager启动监控以后,如果没有异常则不会打印任何信息。我们可通过masterha_check_status命令检查manager的状态,以下是范例

测试master的自动故障转移 
现在master运行正常,manager监控也正常,下一步就是停止master,测试自动故障 
转移,可以简单地停止master上的mysqld服务 
[root@master01 bin]# /etc/init.d/mysql.server stop 
Shutting down MySQL………… SUCCESS! 
这时候检查manager的log日志,看看slave1是否成功成为新的master,并且slave2从slave1中复制。

查看MHA切换日志 
vim /var/log/masterha/app1/mha_manager.log

Master failover to master02(10.0.0204:3306) completed successfully. 
会出现迁移成功的字样。

注:有一个主库停止了服务,故障切换完毕, mha的服务也会停止

ok MHA搭建完成

MHA 配置文件介绍

cat /etc/masterha/app1.cnf
[server default]
manager_workdir=/var/log/masterha/app1.log //设置manager的工作目录
manager_log=/var/log/masterha/app1/manager.log //设置manager的日志
master_binlog_dir=/data/mysql //设置master 保存binlog的位置,以便MHA可以找到master的日志,我这里的也就是
mysql的数据目录
master_ip_failover_script= /usr/local/bin/master_ip_failover //设置自动failover时候的切换脚本
master_ip_online_change_script= /usr/local/bin/master_ip_online_change //设置手动切换时候的切换脚本
password=123456 //设置mysql中root用户的密码,这个密码是前文中创建监控用户的那个密码
user=root 设置监控用户root
ping_interval=1 //设置监控主库,发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行failover
remote_workdir=/tmp //设置远端mysql在发生切换时binlog的保存位置
repl_password=123456 //设置复制用户的密码
repl_user=repl //设置复制环境中的复制用户名
report_script=/usr/local/send_report //设置发生切换后发送的报警的脚本
secondary_check_script= /usr/local/bin/masterha_secondary_check -s server03 -s server02  # //一旦MHA到server02的监控之间出现问题,MHA Manager将会尝试从server03登录到server02
shutdown_script="" //设置故障发生后关闭故障主机脚本(该脚本的主要作用是关闭主机放在发生脑裂,这里没有使用)
ssh_user=root //设置ssh的登录用户名
[server1]
hostname=10.0.0.201
port=3306
[server2]
hostname=10.0.0.204
port=3306
candidate_master=1 //设置为候选master,如果设置该参数以后,发生主从切换以后将会将此从库提升为主库,即使这个
主库不是集群中事件最新的
slave check_repl_delay=0 //默认情况下如果一个slave落后master 100M的relay logs的话,MHA将不会选择该slave作为
一个新的master,因为对于这个slave的恢复需要花费很长时间,通过设置check_repl_delay=0,MHA触发切换在选择一个
新的master的时候将会忽略复制延时,这个参数对于设置了candidate_master=1的主机非常有用,因为这个候选主在切换
的过程中一定是新的master
[server3]
hostname=10.0.0.202
port=3306

设置relay log的清除方式(在每个slave节点上):

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/431c75c11babaaacce52af47a31b0421.html