Centos+MHA+keepalived+MySQL
installation
Master:192.168.1.200
sMaster:192.168.1.197
Slave: 192.168.1.155
Configure master on 192.168.1.200
[root@Master ~]# cat /etc/my.cnf
[mysqld]
innodb_buffer_pool_size
= 128M
log_bin=/usr/local/mysql/data/binlog.log
basedir
= /usr/local/mysql
datadir
= /usr/local/mysql/data
port
= 3306
server_id
= 1
socket
= /tmp/mysql.sock
binlog-ignore-db=mysql
binlog-ignore-db=test
binlog_format=mixed
innodb_flush_log_at_trx_commit=2
transaction-isolation
= READ-COMMITTED
join_buffer_size
= 128M
sort_buffer_size
= 2M
read_rnd_buffer_size
= 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Login to mysql, open replication and MHA access for
192.168.1.197 and 192.168.1.155
[root@Master ~]# mysql -uroot -p
Enter password:
mysql>
grant replication slave on *.* to 'repl'@'192.168.1.197' identified by
'123123';
Query
OK, 0 rows affected (0.01 sec)
mysql>
grant replication slave on *.* to 'repl'@'192.168.1.155' identified by
'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
grant all privileges on *.* to 'mha'@'192.168.197' identified by'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
grant all privileges on *.* to 'mha'@'192.168.155' identified by'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
grant all privileges on *.* to 'mha'@'192.168.200' identified by'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
flush privileges;
Query
OK, 0 rows affected (0.00 sec)
Configure second master on
192.168.1.197
[root@sMaster ~]# cat /etc/my.cnf
[mysqld]
innodb_buffer_pool_size
= 128M
log_bin=/usr/local/mysql/data/binlog.log
basedir
= /usr/local/mysql
datadir
= /usr/local/mysql/data
port
= 3306
server_id
= 2
socket
= /tmp/mysql.sock
binlog-ignore-db=mysql
binlog-ignore-db=test
binlog_format=mixed
innodb_flush_log_at_trx_commit=2
transaction-isolation
= READ-COMMITTED
read_only=1
relay_log_purge=0
join_buffer_size
= 128M
sort_buffer_size
= 2M
read_rnd_buffer_size
= 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Login MySQL open replication access for slave(192.168.1.155)
and MHA
[root@sMaster ~]# mysql -uroot -p
Enter password:
mysql>
grant replication slave on *.* to 'repl'@'192.168.1.155' identified by
'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
grant all privileges on *.* to 'mha'@'192.168.197' identified by'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
grant all privileges on *.* to 'mha'@'192.168.200' identified by'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
grant all privileges on *.* to 'mha'@'192.168.155' identified by'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
flush privileges;
Query
OK, 0 rows affected (0.00 sec)
Configure Slave 192.168.1.155
[root@Slave ~]# mysql -uroot -p
Enter password:
mysql>
grant replication slave on *.* to 'repl'@'192.168.1.200' identified by
'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
grant all privileges on *.* to 'mha'@'192.168.155' identified by'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
grant all privileges on *.* to 'mha'@'192.168.197' identified by'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
grant all privileges on *.* to 'mha'@'192.168.200' identified by'123123';
Query
OK, 0 rows affected (0.00 sec)
mysql>
flush privileges;
Query
OK, 0 rows affected (0.00 sec)
[root@Slave ~]# cat /etc/my.cnf
[mysqld]
innodb_buffer_pool_size
= 128M
#log_bin
basedir
= /usr/local/mysql
datadir
= /usr/local/mysql/data
port
= 3306
server_id
= 3
socket
= /tmp/mysql.sock
join_buffer_size
= 128M
sort_buffer_size
= 2M
read_rnd_buffer_size
= 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Replication configure:
On Master
192.168.1.200
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File |
Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000001 |
120 | |
mysql,test | |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
On sMaster
192.168.1.197
mysql> change master to
->
master_host='192.168.1.200',
->
master_user='repl',
->
master_password='123123',
->
master_log_file='binlog.000001',
->
master_log_pos=120;
Query OK, 0 rows affected, 2 warnings (0.49 sec)
mysql> start slave;
Query OK, 0 rows affected (0.05 sec)
mysql> show slave status\G;
*************************** 1. row
***************************
Slave_IO_State: Waiting for master to send event
Master_Host:
192.168.1.200
…..
Relay_Log_File:
sMaster-relay-bin.000002
Relay_Log_Pos:
280
Relay_Master_Log_File: binlog.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
……
1 row in set (0.00 sec)
On sMaster
192.168.1.155
mysql> change master to
->
master_host='192.168.1.200',
->
master_user='repl',
->
master_password='123123',
->
master_log_file='binlog.000001',
->
master_log_pos=120;
Query OK, 0 rows affected, 2 warnings (0.49 sec)
mysql> start slave;
Query OK, 0 rows affected (0.05 sec)
mysql> show slave status\G;
*************************** 1. row
***************************
Slave_IO_State: Waiting for master to send event
Master_Host:
192.168.1.200
…..
Relay_Log_File:
sMaster-relay-bin.000002
Relay_Log_Pos:
280
Relay_Master_Log_File: binlog.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
……
1 row in set (0.00 sec)
Install keepalived on Master(192.168.1.200)
and sMaster(192.168.1.197)
[root@Master
local]# tar -zxvf keepalived-1.2.9.tar.gz
[root@Master
local]# mv keepalived-1.2.9 keepalived
[root@Master
keepalived]# yum install gcc openssl-devel -y
[root@Master
keepalived]# ./configure --prefix=/usr --sysconf=/etc
checking
for gcc... gcc
checking
whether the C compiler works... yes
checking
for C compiler default output file name... a.out
……………
Keepalived
configuration
------------------------
Keepalived
version : 1.2.9
Compiler : gcc
Compiler
flags : -g -O2
Extra
Lib : -lssl -lcrypto
-lcrypt
Use
IPVS Framework : Yes
IPVS
sync daemon support : Yes
IPVS
use libnl : No
Use
VRRP Framework : Yes
Use
VRRP VMAC : Yes
SNMP
support : No
SHA1
support : No
Use
Debug flags : No
[root@Master
keepalived]# make
[1]
15813
make
-C keepalived install
make
-C lib || exit 1;
make[1]:
Entering directory `/usr/local/keepalived/keepalived'
……
Make
complete
make[1]:
Leaving directory `/usr/local/keepalived/keepalived'
make
-C genhash
make[1]:
Entering directory `/usr/local/keepalived/genhash'
………………….
Make
complete
make[1]:
Leaving directory `/usr/local/keepalived/genhash'
Make
complete
[root@Master
keepalived]# make install
make
-C keepalived install
make[1]:
Entering directory `/usr/local/keepalived/keepalived'
install
-d /usr/sbin
……
make[1]:
Leaving directory `/usr/local/keepalived/genhash'
[root@Master
keepalived]# service keepalived status
keepalived
is stopped
[root@Master
keepalived]# ls -lah
total
16K
drwxr-xr-x. 3 root root 4.0K Jan 8 10:35 .
drwxr-xr-x.
62 root root 4.0K Jan 8 10:35 ..
-rw-r--r--.
1 root root 3.5K Jan 8 10:35
keepalived.conf
drwxr-xr-x. 2 root root 4.0K Jan 8 10:35 samples
[root@Master
keepalived]# vi keepalived.conf
global_defs
{
router_id LVS_DEVEL
}
vrrp_sync_group
VG1{
group {
VI_1
}
}
vrrp_instance
VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.196/24 dev eth0 label eth0:1
}
}
virtual_server
192.168.1.196 3306 {
delay_loop 2
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.1.200 3306 {
weight 1
notify_down /etc/checkmysql.sh
TCP_CHECK {
connect_timeout=10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
Add VIP:192.168.1.196
[root@Master
keepalived]# service keepalived start
Starting keepalived: [ OK ]
[root@Master
keepalived]# tail -n 30 /var/log/messages
Jan 8 10:48:09 Master Keepalived_vrrp[17242]: VRRP_Instance(VI_1)
Entering MASTER STATE
Jan 8 10:48:09 Master Keepalived_vrrp[17242]:
VRRP_Instance(VI_1) setting protocol VIPs.
Jan 8 10:48:09 Master Keepalived_vrrp[17242]:
VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.1.196
Jan
8 10:48:09 Master Keepalived_healthcheckers[17241]: Netlink reflector
reports IP 192.168.1.196 added
Jan 8 10:48:14 Master Keepalived_vrrp[17242]:
VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.1.196
Same steps on
192.168.1.197,
Vi /etc/keepalived/keepalived.conf
global_defs
{
router_id LVS_DEVEL
}
vrrp_sync_group
VG1{
group {
VI_1
}
}
vrrp_instance
VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.196/24 dev eth0 label eth0:1
}
}
virtual_server
192.168.1.196 3306 {
delay_loop 2
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.1.197 3306 {
weight 1
notify_down /etc/checkmysql.sh
TCP_CHECK {
connect_timeout=10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
[root@sMaster
keepalived]# vi keepalived.conf
[root@sMaster
keepalived]# service keepalived status
keepalived is stopped
[root@sMaster
keepalived]# service keepalived start
Starting keepalived: [ OK ]
[root@sMaster
keepalived]# tail -n 10 /var/log/messages
Jan 8 12:44:56 sMaster Keepalived[15679]:
Starting Healthcheck child process, pid=15685
Jan 8 12:44:56 sMaster
Keepalived_healthcheckers[15685]: Netlink reflector reports IP 192.168.1.197
added
Jan 8 12:44:56 sMaster
Keepalived_healthcheckers[15685]: Netlink reflector reports IP
fe80::215:5dff:fe01:c312 added
Jan 8 12:44:56 sMaster
Keepalived_healthcheckers[15685]: Registering Kernel netlink reflector
Jan 8 12:44:56 sMaster Keepalived_healthcheckers[15685]:
Registering Kernel netlink command channel
Jan 8 12:44:56 sMaster
Keepalived_healthcheckers[15685]: Opening file
'/etc/keepalived/keepalived.conf'.
Jan 8 12:44:56 sMaster
Keepalived_healthcheckers[15685]: Configuration is using : 10220 Bytes
Jan 8 12:44:56 sMaster
Keepalived_healthcheckers[15685]: Using LinkWatch kernel netlink reflector...
Jan 8 12:44:56 sMaster
Keepalived_healthcheckers[15685]: Activating healthchecker for service
[192.168.1.197]:3306
Jan 8 12:44:56 sMaster kernel: IPVS: [rr]
scheduler registered.
Install mha4mysql-node on master
192.168.1.200
[root@Master local]#
tar -zxvf mha4mysql-node-0.54.tar.gz
[root@Master local]#
mv mha4mysql-node-0.54 mha4mysql
[root@Master local]#
cd mha4mysql
[root@Master
mha4mysql]# yum install perl-DBD-MySQL perl-Config-Tiny perl-Params-Validate
perl-Log-Dispatch perl-Parallel-ForkManager perl-devel cpan
[root@Master
mha4mysql]# perl Makefile.PL
***
Module::AutoInstall version 1.03
***
Checking for Perl dependencies...
[Core
Features]
-
DBI ...loaded. (1.609)
-
DBD::mysql ...loaded. (4.013)
***
Module::AutoInstall configuration finished.
Checking
if your kit is complete...
Looks
good
Writing
Makefile for mha4mysql::node
[root@Master
mha4mysql]# make && make install
……
Installing /usr/local/bin/apply_diff_relay_logs
Appending installation info to
/usr/lib64/perl5/perllocal.pod
Same steps on sMaster(192.168.1.197)
and Slave(192.168.1.155)
Configure SSH connection on the 3 db
server
If use sudo user, must create the connection under sudo (dbaroot)
and root user, this is very important tips.
#192.168.1.200
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub
dbaroot@192.168.1.197
ssh-copy-id -i .ssh/id_rsa.pub
dbaroot@192.168.1.155
ssh-copy-id -i .ssh/id_rsa.pub
dbaroot@192.168.1.200
#192.168.1.197
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub
dbaroot@192.168.1.200
ssh-copy-id -i .ssh/id_rsa.pub
dbaroot@192.168.1.155
ssh-copy-id -i .ssh/id_rsa.pub
dbaroot@192.168.1.197
#192.168.1.155
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub
dbaroot@192.168.1.200
ssh-copy-id -i .ssh/id_rsa.pub
dbaroot@192.168.1.197
ssh-copy-id -i .ssh/id_rsa.pub
dbaroot@192.168.1.155
Testing the SSH
connection
[dbaroot@Master ~]$ ssh dbaroot@192.168.1.197
[dbaroot@sMaster
~]$ exit
logout
Connection to 192.168.1.197 closed.
[dbaroot@Master ~]$ ssh dbaroot@192.168.1.155
[dbaroot@Slave
~]$ exit
logout
Connection to 192.168.1.155 closed.
[dbaroot@Master ~]$
Install mha4mysql-manager on slave(192.168.1.155)
[root@Slave ~]# cd /usr/local/
[root@Slave
local]# tar -zxvf mha4mysql-manager-0.55.tar.gz
[root@Slave
local]# mv mha4mysql-manager-0.55 mha4mysql-manager
[root@Slave
local]# cd mha4mysql-manager
[root@Slave
mha4mysql-manager]# ls -lah
total
84K
drwxr-xr-x.
10 root root 4.0K Dec 13 2012 .
drwxr-xr-x.
15 root root 4.0K Jan 8 15:32 ..
-rw-r--r--. 1 4984 users
78 Dec 12 2012 AUTHORS
drwxr-xr-x. 2 root root
4.0K Dec 13 2012 bin
-rw-r--r--. 1 4984 users
18K Dec 12 2012 COPYING
drwxr-xr-x. 2 root root
4.0K Dec 13 2012 debian
drwxr-xr-x. 3 root root
4.0K Dec 13 2012 inc
drwxr-xr-x. 3 root root
4.0K Dec 13 2012 lib
-rwxr-xr-x. 1 4984 users
406 Dec 12 2012 Makefile.PL
-rw-r--r--. 1 root root
4.8K Dec 12 2012 MANIFEST
-rw-r--r--. 1 root root
555 Dec 13 2012 META.yml
-rw-r--r--. 1 4984 users
258 Dec 12 2012 README
drwxr-xr-x. 2 root root
4.0K Dec 13 2012 rpm
drwxr-xr-x. 4 root root
4.0K Dec 13 2012 samples
drwxr-xr-x. 2 root root
4.0K Dec 13 2012 t
drwxr-xr-x. 3 root root
4.0K Dec 13 2012 tests
[root@Slave
mha4mysql-manager]# perl Makefile.PL
***
Module::AutoInstall version 1.03
***
Checking for Perl dependencies...
[Core
Features]
-
DBI ...loaded. (1.609)
-
DBD::mysql ...loaded. (4.013)
-
Time::HiRes ...missing.
-
Config::Tiny ...loaded. (2.12)
-
Log::Dispatch ...loaded. (2.26)
-
Parallel::ForkManager ...loaded. (0.7.9)
-
MHA::NodeConst ...missing.
==>
Auto-install the 2 mandatory module(s) from CPAN? [y]
[root@Slave
mha4mysql-manager]# yum install perl-Time-HiRes -y
[root@Slave mha4mysql-manager]# perl
Makefile.PL
***
Module::AutoInstall version 1.03
***
Checking for Perl dependencies...
[Core
Features]
-
DBI ...loaded. (1.609)
-
DBD::mysql ...loaded. (4.013)
-
Time::HiRes ...loaded. (1.9721)
-
Config::Tiny ...loaded. (2.12)
-
Log::Dispatch ...loaded. (2.26)
-
Parallel::ForkManager ...loaded. (0.7.9)
-
MHA::NodeConst ...missing.
MHA::NodeConst ...missing
Means we need to make and make install the MHA Node on slave
192.168.1.155
[root@Slave local]#
cd mha4mysql-node
[root@Slave mha4mysql-node]# make
&& make install
cp
lib/MHA/NodeUtil.pm blib/lib/MHA/NodeUtil.pm
……
Installing
/usr/local/bin/purge_relay_logs
Installing
/usr/local/bin/filter_mysqlbinlog
Installing
/usr/local/bin/apply_diff_relay_logs
Installing
/usr/local/bin/save_binary_logs
Appending
installation info to /usr/lib64/perl5/perllocal.pod
[root@Slave local]#
cd mha4mysql-manager
[root@Slave
mha4mysql-manager]# perl Makefile.PL
***
Module::AutoInstall version 1.03
***
Checking for Perl dependencies...
[Core
Features]
-
DBI ...loaded. (1.609)
-
DBD::mysql ...loaded. (4.013)
-
Time::HiRes ...loaded. (1.9721)
-
Config::Tiny ...loaded. (2.12)
-
Log::Dispatch ...loaded. (2.26)
-
Parallel::ForkManager ...loaded. (0.7.9)
-
MHA::NodeConst ...loaded. (0.54)
***
Module::AutoInstall configuration finished.
Writing
Makefile for mha4mysql::manager
[root@Slave
mha4mysql-manager]# make && make install
……
Configure MHA Manager
[root@Slave mha4mysql-manager]# cd
[root@Slave ~]# mkdir -p masterha
[root@Slave ~]# cd masterha
[root@Slave masterha]# mkdir app1
[root@Slave masterha]# cd /etc
[root@Slave etc]# vi app1.cnf
[server
default]
manager_workdir=/masterha/app1
manager_log=/masterha/app1/manager.log
#remote_workdir=/usr/local/mysql
user=mha
password=123123
ssh_user=dbaroot
repl_user=repl
repl_password=123123
ping_interval=1
shutdown_script=""
#master_ip_failover_script=/usr/local/bin/master_ip_failover
#master_ip_online_change_script=/usr/local/bin/master_ip_online_change_script
report_script=""
[server1]
hostname=192.168.1.200
master_binlog_dir=/usr/local/mysql/data
candidate_master=1
[server2]
hostname=192.168.1.197
master_binlog_dir=/usr/local/mysql/data
candidate_master=1
[server3]
hostname=192.168.1.155
master_binlog_dir=/usr/local/mysql/data
no_master=1
Check MHA replication and SSH status
[dbaroot@Slave ~]$ masterha_check_ssh
--conf=/etc/app1.cnf
Thu
Jan 8 16:39:46 2015 - [warning] Global
configuration file /etc/masterha_default.cnf not found. Skipping.
Thu
Jan 8 16:39:46 2015 - [info] Reading
application default configurations from /etc/app1.cnf..
Thu
Jan 8 16:39:46 2015 - [info] Reading
server configurations from /etc/app1.cnf..
Thu
Jan 8 16:39:46 2015 - [info] Starting
SSH connection tests..
Thu
Jan 8 16:39:50 2015 - [debug]
Thu
Jan 8 16:39:46 2015 - [debug] Connecting via SSH from
dbaroot@192.168.1.200(192.168.1.200:22) to
dbaroot@192.168.1.197(192.168.1.197:22)..
Thu
Jan 8 16:39:47 2015 - [debug] ok.
Thu
Jan 8 16:39:47 2015 - [debug] Connecting via SSH from
dbaroot@192.168.1.200(192.168.1.200:22) to
dbaroot@192.168.1.155(192.168.1.155:22)..
Thu
Jan 8 16:39:49 2015 - [debug] ok.
Thu
Jan 8 16:39:50 2015 - [debug]
Thu
Jan 8 16:39:46 2015 - [debug] Connecting via SSH from
dbaroot@192.168.1.197(192.168.1.197:22) to
dbaroot@192.168.1.200(192.168.1.200:22)..
Thu
Jan 8 16:39:48 2015 - [debug] ok.
Thu
Jan 8 16:39:48 2015 - [debug] Connecting via SSH from
dbaroot@192.168.1.197(192.168.1.197:22) to dbaroot@192.168.1.155(192.168.1.155:22)..
Thu
Jan 8 16:39:50 2015 - [debug] ok.
Thu
Jan 8 16:39:50 2015 - [debug]
Thu
Jan 8 16:39:47 2015 - [debug] Connecting via SSH from
dbaroot@192.168.1.155(192.168.1.155:22) to
dbaroot@192.168.1.200(192.168.1.200:22)..
Thu
Jan 8 16:39:48 2015 - [debug] ok.
Thu
Jan 8 16:39:48 2015 - [debug] Connecting via SSH from
dbaroot@192.168.1.155(192.168.1.155:22) to
dbaroot@192.168.1.197(192.168.1.197:22)..
Thu
Jan 8 16:39:50 2015 - [debug] ok.
Thu
Jan 8 16:39:50 2015 - [info] All SSH connection
tests passed successfully.
[root@Slave ~]#
masterha_check_repl --conf=/etc/app1.cnf
Thu
Jan 8 17:01:23 2015 - [warning] Global
configuration file /etc/masterha_default.cnf not found. Skipping.
Thu
Jan 8 17:01:23 2015 - [info] Reading
application default configurations from /etc/app1.cnf..
Thu
Jan 8 17:01:23 2015 - [info] Reading
server configurations from /etc/app1.cnf..
Thu
Jan 8 17:01:23 2015 - [info]
MHA::MasterMonitor version 0.55.
Thu
Jan 8 17:01:23 2015 - [info] Dead
Servers:
Thu
Jan 8 17:01:23 2015 - [info] Alive
Servers:
Thu
Jan 8 17:01:23 2015 - [info] 192.168.1.200(192.168.1.200:3306)
Thu
Jan 8 17:01:23 2015 - [info] 192.168.1.197(192.168.1.197:3306)
Thu
Jan 8 17:01:23 2015 - [info] 192.168.1.155(192.168.1.155:3306)
Thu
Jan 8 17:01:23 2015 - [info] Alive
Slaves:
Thu
Jan 8 17:01:23 2015 - [info] 192.168.1.197(192.168.1.197:3306) Version=5.6.11-log (oldest major version
between slaves) log-bin:enabled
Thu
Jan 8 17:01:23 2015 - [info] Replicating from 192.168.1.200(192.168.1.200:3306)
Thu
Jan 8 17:01:23 2015 - [info] Primary candidate for the new Master
(candidate_master is set)
Thu
Jan 8 17:01:23 2015 - [info] 192.168.1.155(192.168.1.155:3306) Version=5.6.11 (oldest major version between
slaves) log-bin:disabled
Thu
Jan 8 17:01:23 2015 - [info] Replicating from
192.168.1.200(192.168.1.200:3306)
Thu
Jan 8 17:01:23 2015 - [info] Not candidate for the new Master
(no_master is set)
Thu
Jan 8 17:01:23 2015 - [info] Current
Alive Master: 192.168.1.200(192.168.1.200:3306)
Thu
Jan 8 17:01:23 2015 - [info] Checking
slave configurations..
Thu
Jan 8 17:01:23 2015 - [info] read_only=1 is not set on slave
192.168.1.155(192.168.1.155:3306).
Thu
Jan 8 17:01:23 2015 - [warning] relay_log_purge=0 is not set on slave
192.168.1.155(192.168.1.155:3306).
Thu
Jan 8 17:01:23 2015 - [warning] log-bin is not set on slave
192.168.1.155(192.168.1.155:3306). This host can not be a master.
Thu
Jan 8 17:01:23 2015 - [info] Checking
replication filtering settings..
Thu
Jan 8 17:01:23 2015 - [info] binlog_do_db= , binlog_ignore_db= mysql,test
Thu
Jan 8 17:01:23 2015 - [info] Replication filtering check ok.
Thu
Jan 8 17:01:23 2015 - [info] Starting
SSH connection tests..
Thu
Jan 8 17:01:28 2015 - [info] All SSH
connection tests passed successfully.
Thu
Jan 8 17:01:28 2015 - [info] Checking
MHA Node version..
Thu
Jan 8 17:01:29 2015 - [info] Version check ok.
Thu
Jan 8 17:01:29 2015 - [info] Checking
SSH publickey authentication settings on the current master..
Thu
Jan 8 17:01:30 2015 - [info]
HealthCheck: SSH to 192.168.1.200 is reachable.
Thu
Jan 8 17:01:30 2015 - [info] Master MHA
Node version is 0.54.
Thu
Jan 8 17:01:30 2015 - [info] Checking
recovery script configurations on the current master..
Thu
Jan 8 17:01:30 2015 - [info] Executing command: save_binary_logs
--command=test --start_pos=4 --binlog_dir=/usr/local/mysql/data
--output_file=/var/tmp/save_binary_logs_test --manager_version=0.55
--start_file=binlog.000001
Thu
Jan 8 17:01:30 2015 - [info] Connecting to
dbaroot@192.168.1.200(192.168.1.200)..
Creating /var/tmp if not exists.. ok.
Checking output directory is accessible or
not..
ok.
Binlog found at /usr/local/mysql/data, up to
binlog.000001
Thu
Jan 8 17:01:31 2015 - [info] Master
setting check done.
Thu
Jan 8 17:01:31 2015 - [info] Checking
SSH publickey authentication and checking recovery script configurations on all
alive slave servers..
Thu
Jan 8 17:01:31 2015 - [info] Executing command : apply_diff_relay_logs
--command=test --slave_user='mha' --slave_host=192.168.1.197
--slave_ip=192.168.1.197 --slave_port=3306 --workdir=/var/tmp
--target_version=5.6.11-log --manager_version=0.55
--relay_log_info=/usr/local/mysql/data/relay-log.info --relay_dir=/usr/local/mysql/data/ --slave_pass=xxx
Thu
Jan 8 17:01:31 2015 - [info] Connecting to
dbaroot@192.168.1.197(192.168.1.197:22)..
Can't
exec "mysqlbinlog": No such file or directory at
/usr/local/share/perl5/MHA/BinlogManager.pm line 99.
mysqlbinlog
version not found!
at /usr/local/bin/apply_diff_relay_logs line
482
Thu
Jan 8 17:01:32 2015 -
[error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln195] Slaves settings
check failed!
Thu
Jan 8 17:01:32 2015 -
[error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln375] Slave configuration
failed.
Thu
Jan 8 17:01:32 2015 -
[error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln386] Error happend on
checking configurations. at
/usr/local/bin/masterha_check_repl line 48
Thu
Jan 8 17:01:32 2015 -
[error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln482] Error happened on
monitoring servers.
Thu
Jan 8 17:01:32 2015 - [info] Got exit
code 1 (Not master dead).
MySQL
Replication Health is NOT OK!
Got error:
Can't exec "mysqlbinlog": No such file or
directory at /usr/local/share/perl5/MHA/BinlogManager.pm line 99
Login to 192.168.1.197 and 192.168.1.155, copy
/usr/local/mysql/bin/mysqlbinlog and /usr/local/mysql/bin/ to /usr/bin
#192.168.1.197
[root@sMaster ~]# cp /usr/local/mysql/bin/mysqlbinlog
/usr/bin/
[root@sMaster ~]# cp /usr/local/mysql/bin/mysql /usr/bin/
#192.168.1.155
[root@Slave ~]# cp /usr/local/mysql/bin/mysqlbinlog
/usr/bin/
[root@Slave ~]# cp /usr/local/mysql/bin/mysql /usr/bin/
[root@Slave ~]#
masterha_check_repl --conf=/etc/app1.cnf
Thu
Jan 8 17:06:27 2015 - [warning] Global
configuration file /etc/masterha_default.cnf not found. Skipping.
Thu
Jan 8 17:06:27 2015 - [info] Reading
application default configurations from /etc/app1.cnf..
Thu
Jan 8 17:06:27 2015 - [info] Reading
server configurations from /etc/app1.cnf..
Thu
Jan 8 17:06:27 2015 - [info]
MHA::MasterMonitor version 0.55.
Thu
Jan 8 17:06:28 2015 - [info] Dead
Servers:
Thu
Jan 8 17:06:28 2015 - [info] Alive
Servers:
Thu
Jan 8 17:06:28 2015 - [info] 192.168.1.200(192.168.1.200:3306)
Thu
Jan 8 17:06:28 2015 - [info] 192.168.1.197(192.168.1.197:3306)
Thu
Jan 8 17:06:28 2015 - [info] 192.168.1.155(192.168.1.155:3306)
Thu
Jan 8 17:06:28 2015 - [info] Alive
Slaves:
Thu
Jan 8 17:06:28 2015 - [info] 192.168.1.197(192.168.1.197:3306) Version=5.6.11-log (oldest major version
between slaves) log-bin:enabled
Thu
Jan 8 17:06:28 2015 - [info] Replicating from
192.168.1.200(192.168.1.200:3306)
Thu
Jan 8 17:06:28 2015 - [info] Primary candidate for the new Master
(candidate_master is set)
Thu
Jan 8 17:06:28 2015 - [info] 192.168.1.155(192.168.1.155:3306) Version=5.6.11 (oldest major version between
slaves) log-bin:disabled
Thu
Jan 8 17:06:28 2015 - [info] Replicating from
192.168.1.200(192.168.1.200:3306)
Thu
Jan 8 17:06:28 2015 - [info] Not candidate for the new Master
(no_master is set)
Thu
Jan 8 17:06:28 2015 - [info] Current
Alive Master: 192.168.1.200(192.168.1.200:3306)
Thu
Jan 8 17:06:28 2015 - [info] Checking
slave configurations..
Thu
Jan 8 17:06:28 2015 - [info] read_only=1 is not set on slave
192.168.1.155(192.168.1.155:3306).
Thu
Jan 8 17:06:28 2015 - [warning] relay_log_purge=0 is not set on slave
192.168.1.155(192.168.1.155:3306).
Thu
Jan 8 17:06:28 2015 - [warning] log-bin is not set on slave
192.168.1.155(192.168.1.155:3306). This host can not be a master.
Thu
Jan 8 17:06:28 2015 - [info] Checking
replication filtering settings..
Thu
Jan 8 17:06:28 2015 - [info] binlog_do_db= , binlog_ignore_db= mysql,test
Thu
Jan 8 17:06:28 2015 - [info] Replication filtering check ok.
Thu
Jan 8 17:06:28 2015 - [info] Starting
SSH connection tests..
Thu
Jan 8 17:06:32 2015 - [info] All SSH
connection tests passed successfully.
Thu
Jan 8 17:06:32 2015 - [info] Checking
MHA Node version..
Thu
Jan 8 17:06:34 2015 - [info] Version check ok.
Thu
Jan 8 17:06:34 2015 - [info] Checking
SSH publickey authentication settings on the current master..
Thu
Jan 8 17:06:35 2015 - [info]
HealthCheck: SSH to 192.168.1.200 is reachable.
Thu
Jan 8 17:06:35 2015 - [info] Master MHA
Node version is 0.54.
Thu
Jan 8 17:06:35 2015 - [info] Checking
recovery script configurations on the current master..
Thu
Jan 8 17:06:35 2015 - [info] Executing command: save_binary_logs
--command=test --start_pos=4 --binlog_dir=/usr/local/mysql/data
--output_file=/var/tmp/save_binary_logs_test --manager_version=0.55
--start_file=binlog.000001
Thu
Jan 8 17:06:35 2015 - [info] Connecting to
dbaroot@192.168.1.200(192.168.1.200)..
Creating /var/tmp if not exists.. ok.
Checking output directory is accessible or
not..
ok.
Binlog found at /usr/local/mysql/data, up to
binlog.000001
Thu
Jan 8 17:06:36 2015 - [info] Master
setting check done.
Thu
Jan 8 17:06:36 2015 - [info] Checking
SSH publickey authentication and checking recovery script configurations on all
alive slave servers..
Thu
Jan 8 17:06:36 2015 - [info] Executing command : apply_diff_relay_logs
--command=test --slave_user='mha' --slave_host=192.168.1.197
--slave_ip=192.168.1.197 --slave_port=3306 --workdir=/var/tmp
--target_version=5.6.11-log --manager_version=0.55
--relay_log_info=/usr/local/mysql/data/relay-log.info --relay_dir=/usr/local/mysql/data/ --slave_pass=xxx
Thu
Jan 8 17:06:36 2015 - [info] Connecting to
dbaroot@192.168.1.197(192.168.1.197:22)..
Checking slave recovery environment
settings..
Opening
/usr/local/mysql/data/relay-log.info ... ok.
Relay log found at /usr/local/mysql/data,
up to sMaster-relay-bin.000002
Temporary relay log file is
/usr/local/mysql/data/sMaster-relay-bin.000002
Testing mysql connection and
privileges..Warning: Using a password on the command line interface can be
insecure.
done.
Testing mysqlbinlog output.. done.
Cleaning up test file(s).. done.
Thu
Jan 8 17:06:37 2015 - [info] Executing command : apply_diff_relay_logs
--command=test --slave_user='mha' --slave_host=192.168.1.155
--slave_ip=192.168.1.155 --slave_port=3306 --workdir=/var/tmp
--target_version=5.6.11 --manager_version=0.55
--relay_log_info=/usr/local/mysql/data/relay-log.info --relay_dir=/usr/local/mysql/data/ --slave_pass=xxx
Thu
Jan 8 17:06:37 2015 - [info] Connecting to
dbaroot@192.168.1.155(192.168.1.155:22)..
Checking slave recovery environment
settings..
Opening
/usr/local/mysql/data/relay-log.info ... ok.
Relay log found at /usr/local/mysql/data,
up to Slave-relay-bin.000002
Temporary relay log file is
/usr/local/mysql/data/Slave-relay-bin.000002
Testing mysql connection and
privileges..Warning: Using a password on the command line interface can be
insecure.
done.
Testing mysqlbinlog output.. done.
Cleaning up test file(s).. done.
Thu
Jan 8 17:06:40 2015 - [info] Slaves
settings check done.
Thu
Jan 8 17:06:40 2015 - [info]
192.168.1.200
(current master)
+--192.168.1.197
+--192.168.1.155
Thu
Jan 8 17:06:40 2015 - [info] Checking
replication health on 192.168.1.197..
Thu
Jan 8 17:06:40 2015 - [info] ok.
Thu
Jan 8 17:06:40 2015 - [info] Checking
replication health on 192.168.1.155..
Thu
Jan 8 17:06:40 2015 - [info] ok.
Thu
Jan 8 17:06:40 2015 - [warning]
master_ip_failover_script is not defined.
Thu
Jan 8 17:06:40 2015 - [warning]
shutdown_script is not defined.
Thu
Jan 8 17:06:40 2015 - [info] Got exit
code 0 (Not master dead).
MySQL
Replication Health is OK.
[root@Slave
~]#
MHA check replication successfully.
Start MHA Manager service
[root@Slave ~]# nohup masterha_manager
--conf=/etc/app1.cnf < /dev/null > /masterha/app1/manager.log 2>&1
&
[1]
16086
[root@Slave ~]# masterha_check_status
--conf=/etc/app1.cnf
app1
monitoring program is now on initialization phase(10:INITIALIZING_MONITOR).
Wait for a while and try checking again.
[root@Slave ~]# masterha_check_status
--conf=/etc/app1.cnf
app1
monitoring program is now on initialization phase(10:INITIALIZING_MONITOR).
Wait for a while and try checking again.
[root@Slave ~]# masterha_check_status
--conf=/etc/app1.cnf
app1 (pid:16086) is running(0:PING_OK),
master:192.168.1.200
ping the keepalived VIP 192.168.1.196 from 192.168.1.155
[root@Slave ~]# ping 192.168.1.196
PING 192.168.1.196 (192.168.1.196) 56(84) bytes of data.
64 bytes from 192.168.1.196: icmp_seq=1 ttl=64 time=0.784 ms
64 bytes from 192.168.1.196: icmp_seq=2 ttl=64 time=0.175 ms
Stop mysql service on master(192.168.1.200)
[root@Master ~]#
service mysql stop
Shutting down MySQL.... SUCCESS!
Login to sMaster, check failover status
[root@sMaster ~]# mysql -uroot -p
Enter
password:
Welcome
to the MySQL monitor. Commands end with
; or \g.
Your
MySQL connection id is 8457
Server
version: 5.6.11-log MySQL Community Server (GPL)
Copyright
(c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle
is a registered trademark of Oracle Corporation and/or its
affiliates.
Other names may be trademarks of their respective
owners.
Type
'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
show master status;
+---------------+----------+--------------+------------------+-------------------+
|
File | Position | Binlog_Do_DB |
Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
|
binlog.000001 | 120 | | mysql,test | |
+---------------+----------+--------------+------------------+-------------------+
1 row
in set (0.00 sec)
mysql>
show slave status\G;
Empty
set (0.00 sec)
ERROR:
No
query specified
The sMaster automatically switch from Replication Slave to
Master.
We check the slave 192.168.1.155
[root@Slave
~]# mysql -uroot -p
Enter
password:
Welcome
to the MySQL monitor. Commands end with
; or \g.
Your
MySQL connection id is 33
Server
version: 5.6.11 MySQL Community Server (GPL)
Copyright
(c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle
is a registered trademark of Oracle Corporation and/or its
affiliates.
Other names may be trademarks of their respective
owners.
Type
'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
show slave status\G;
***************************
1. row ***************************
Slave_IO_State: Waiting for
master to send event
Master_Host: 192.168.1.197
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binlog.000001
Read_Master_Log_Pos: 120
Relay_Log_File: Slave-relay-bin.000002
Relay_Log_Pos: 280
Relay_Master_Log_File: binlog.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
The slave status show us the 192.168.1.155 automatically switch
sync data from 192.168.1.200 to 192.168.1.197
We ping the VIP 192.168.1.196 again
[root@Slave ~]# ping 192.168.1.196
PING 192.168.1.196 (192.168.1.196) 56(84) bytes of data.
64 bytes from 192.168.1.196: icmp_seq=1 ttl=64 time=0.447 ms
64 bytes from 192.168.1.196: icmp_seq=2 ttl=64 time=0.276 ms
[root@Slave ~]# mysql -h192.168.1.196 -uroot -p
Enter
password:
Welcome
to the MySQL monitor. Commands end with
; or \g.
Your
MySQL connection id is 230
Server
version: 5.6.11-log MySQL Community Server (GPL)
Copyright
(c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle
is a registered trademark of Oracle Corporation and/or its
affiliates.
Other names may be trademarks of their respective
owners.
Type
'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>