lover。
注意:现在mha manager进行没有作为daemon来运行,如果故障转移成功完成或master进程意外被杀,那么监控将会停止。我们可以使用daemontools来是监控作为daemon来运行。
[root@rd-mysql-test4 yum.repos.d]# cd /usr/local/src
[root@rd-mysql-test4 src]# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
[root@rd-mysql-test4 src]# tar -zxvf daemontools-0.76.tar.gz
[root@rd-mysql-test4 src]# cd admin/daemontools-0.76/
[root@rd-mysql-test4 daemontools-0.76]# package/install
Linking ./src/* into ./compile...
Compiling everything in ./compile...
./load envdir unix.a byte.a
/usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o
/lib64/libc.so.6: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [envdir] Error 1
####解决方法####
在src/conf-cc最后加上-include /usr/include/errno.h
[root@rd-mysql-test4 daemontools-0.76]# package/install
最后会在/usr/local/src/admin/daemontools-0.76先建立command目录并存放相关命令,有什么命令我们可以这样查看:
[root@rd-mysql-test4 daemontools-0.76]# ls /usr/local/src/admin/daemontools-0.76/command
envdir fghack pgrphack setlock softlimit svc svscan svstat tai64nlocal
envuidgid multilog readproctitle setuidgid supervise svok svscanboot tai64n
同时在/usr/local/bin下对上面这些命令建立了软连接方便我们执行。另外创建监控/services目录,并在/etc/inittab下也有变化:
SV:123456:respawn:/command/svscanboot
它使用init的方式来守护自己。
[root@rd-mysql-test4 daemontools-0.76]#mkdir -p /service/masterha_app1
[root@rd-mysql-test4 daemontools-0.76]#vim /service/masterha_app1/run
#!bin/bash
exec masterha_manager --conf=/etc/mha/app1.cnf --wait_on_monitor_error=60 --wait_on_failover_error=60 >> /var/log/masterha/app1/app1.log 2>&1
[root@rd-mysql-test4 daemontools-0.76]#chmod 755 /service/masterha_app1/run
##启动monitoring
svc -u /service/masterha_app1
##停止monitoring
svc -d /service/masterha_app1
在此我们先不使用这种方式启动。
9.查看是否启动
[root@rd-mysql-test4 /]# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:21438) is running(0:PING_OK), master:10.10.10.56
启动后会在/var/log/masterha/app1下生成app1.master_status.health manager.log两个文件。
关闭监控我们可以使用masterha_stop --conf=/etc/mha/app1.cnf
10.测试
一.自动failover
1.我们关闭master的mysql
[root@rd-mysql-test1 mysql]# mysqladmin shutdown
我们查看/var/log/masterha/app1会发现以下情况:
?
[root@rd-mysql-test4 app1]# ls
app1.failover.complete manager.log saved_master_binlog_from_10.10.10.56_3306_20150807180251.binlog
app1.failover.complete文件,说明failover已经完成;
?
saved_master_binlog_from_10.10.10.56_3306_20150807180251.binlog是从master上复制过来的二进制日志。
manager.log是复制环境状态的检查并记录了整个failover的过程,我们可以failover报告:
?
----- Failover Report -----
app1: MySQL Master failover 10.10.10.56 to 10.10.10.57 succeeded
Master 10.10.10.56 is down!
Check MHA Manager logs at rd-mysql-test4:/var/log/masterha/app1/manager.log for details.
Started automated(non-interactive) failover.
The latest slave 10.10.10.57(10.10.10.57:3306) has all relay logs for recovery.
Selected 10.10.10.57 as a new master.
10.10.10.57: OK: Applying all logs succeeded.
Generating relay diff files from the latest slave succeeded.
10.10.10.57: Resetting slave info succeeded.
Master failover to 10.10.10.57(10.10.10.57:3306) completed successfully.
?
从报告中可以看出故障迁移是成功,我们还可以看看mysql的状态确认迁移是否