MHA

配置MHA高可用集群 (mysql一主多从)

7台主机: 192.168.4.50到192.168.4.56

规划:
1个客户端 client50
1个主库 master51
2个备用主库 master52、master53
2个纯从库 slave54、slave55
1个管理服务器 mha56
#################################################################################################
51 配置成主库(还原成独立的数据库。只保留系统的4个库,删除多余的库。开启日志和主库从库的半同步,保留所有日志,授权用户)

还原成独立的数据库
# cd /var/lib/mysql
# rm -rf master.info 从库连接主库进行复制操作的用户被授予replication slave权限。用户名的密码都会存储在master.info中。
# rm -rf relay-log.info 中继日志文件
# rm -rf mysql51-relay-bin.* 包含有.000001,.000002之类的二进制日志文件,和.index中继日志的索引文件

# rm -rf master51.* 删除之前的主库文件,还原环境
# rm -rf mysql51-bin.* 删除之前日志文件,还原环境

开启日志和主库从库的半同步,保留所有日志
# vim /etc/my.cnf
... ...
[mysqld]
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" 加载 主库和从库 的半同步复制
rpl_semi_sync_master_enabled=1 激活 主库 半同步
rpl_semi_sync_slave_enabled=1 激活 从库 半同步

server_id=51
log_bin=master51 开启主库binlog日志
binlog_format="mixed"

relay_log_purge=0 保留所有日志,这个跟mysql> set global relay_log_purge=off;命令一样。因为默认只保留最新的2个日志,清理其他的旧日志。
... ...


# systemctl restart mysqld
# mysql -uroot -p123qqq...A

删除多余的库
mysql> drop database db1; 删除多余的库,如db1
mysql> show databases; 只有系统原有的4个库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+

mysql> reset master; 清空之前的主库日志信息
mysql> show master status; 显示主库的当前日志文件
+-----------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| master51.000001 | 154 | | | |
+-----------------+----------+--------------+------------------+-------------------+

授权用户(如果没有授权,要先授权)
mysql> select user,host from mysql.user where user="repluser"; 查看是否有授权从库登陆的用户repluser
mysql> show grants for repluser@"%"; 查看用户repluser的权限
+--------------------------------------------------+
| Grants for repluser@% |
+--------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'%' | 从库连接主库进行复制操作的用户repluser被授予replication slave权限
+--------------------------------------------------+
#######################################################################################
52 配置成备用主库(还原成独立的数据库。只保留系统的4个库,删除多余的库。开启日志和主库从库的半同步,保留所有日志,授权用户,指定主库为51)

还原成独立的数据库
# cd /var/lib/mysql
# rm -rf master.info 从库连接主库进行复制操作的用户被授予replication slave权限。用户名的密码都会存储在master.info中。
# rm -rf relay-log.info 中继日志文件
# rm -rf mysql52-relay-bin.* 包含有.000001,.000002之类的二进制日志文件,和.index中继日志的索引文件

# rm -rf master52.* 删除之前的主库文件,还原环境
# rm -rf mysql52-bin.* 删除之前日志文件,还原环境

开启日志和主库从库的半同步,保留所有日志
# vim /etc/my.cnf
... ...
[mysqld]
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" 加载 主库和从库 的半同步复制
rpl_semi_sync_master_enabled=1 激活 主库 半同步
rpl_semi_sync_slave_enabled=1 激活 从库 半同步

server_id=52
log_bin=master52 开启主库binlog日志
binlog_format="mixed"

relay_log_purge=0 保留所有日志,这个跟mysql> set global relay_log_purge=off;命令一样。因为默认只保留最新的2个日志,删除其他的旧日志。
... ...


# systemctl restart mysqld
# mysql -uroot -p123qqq...A

删除多余的库
mysql> drop database db1; 删除多余的库,如db1
mysql> show databases; 只有系统原有的4个库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+

授权用户(如果没有授权,要先授权)
mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A"; 授权用户repluser用密码123qqq...A连接主库51
mysql> select user,host from mysql.user where user="repluser"; 查看是否有授权从库登陆的用户repluser
mysql> show grants for repluser@"%"; 查看用户repluser的权限
+--------------------------------------------------+
| Grants for repluser@% |
+--------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'%' | 从库连接主库进行复制操作的用户repluser被授予replication slave权限
+--------------------------------------------------+

查看主库状态
mysql> reset master; 清空之前的主库日志信息
mysql> show master status; 显示主库的当前日志文件
+-----------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| master52.000001 | 154 | | | |
+-----------------+----------+--------------+------------------+-------------------+

指定主库为51
mysql> change master to
-> master_host="192.168.4.51",
-> master_user="repluser",
-> master_password="123qqq...A",
-> master_log_file="master51.000001",
-> master_log_pos=154;

查看从库的状态
mysql> start slave; 开启从库
mysql> show slave status\G; 查看从库状态
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.4.51
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master51.000001
Read_Master_Log_Pos: 154
Relay_Log_File: mysql52-relay-bin.000002
Relay_Log_Pos: 319
Relay_Master_Log_File: master51.000001
Slave_IO_Running: Yes IO成功启动
Slave_SQL_Running: Yes SQL成功启动
###################################################################################################
53 配置成备用主库(还原成独立的数据库。只保留系统的4个库,删除多余的库。开启日志和主库从库的半同步,保留所有日志,授权用户,指定主库为51)

还原成独立的数据库
# cd /var/lib/mysql
# rm -rf master.info 从库连接主库进行复制操作的用户被授予replication slave权限。用户名的密码都会存储在master.info中。
# rm -rf relay-log.info 中继日志文件
# rm -rf mysql53-relay-bin.* 包含有.000001,.000002之类的二进制日志文件,和.index中继日志的索引文件

# rm -rf master53.* 删除之前的主库文件,还原环境
# rm -rf mysql53-bin.* 删除之前日志文件,还原环境

开启日志和主库从库的半同步,保留所有日志
# vim /etc/my.cnf
... ...
[mysqld]
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" 加载 主库和从库 的半同步复制
rpl_semi_sync_master_enabled=1 激活 主库 半同步
rpl_semi_sync_slave_enabled=1 激活 从库 半同步

server_id=53
log_bin=master53 开启主库binlog日志
binlog_format="mixed"

relay_log_purge=0 保留所有日志,这个跟mysql> set global relay_log_purge=off;命令一样。因为默认只保留最新的2个日志,删除其他的旧日志。
... ...

# systemctl restart mysqld
# mysql -uroot -p123qqq...A

删除多余的库
mysql> drop database db1; 删除多余的库,如db1
mysql> show databases; 只有系统原有的4个库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+

授权用户(如果没有授权,要先授权)
mysql> grant replication slave on *.* to repluser@"%" identified by "123qqq...A"; 授权用户repluser用密码123qqq...A连接主库51
mysql> select user,host from mysql.user where user="repluser"; 查看是否有授权从库登陆的用户repluser
mysql> show grants for repluser@"%"; 查看用户repluser的权限
+--------------------------------------------------+
| Grants for repluser@% |
+--------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'%' | 从库连接主库进行复制操作的用户repluser被授予replication slave权限
+--------------------------------------------------+

查看主库状态
mysql> reset master; 清空之前的主库日志信息
mysql> show master status; 显示主库的当前日志文件
+-----------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-----------------+----------+--------------+------------------+-------------------+
| master53.000001 | 154 | | | |
+-----------------+----------+--------------+------------------+-------------------+

指定主库为51
mysql> change master to
-> master_host="192.168.4.51",
-> master_user="repluser",
-> master_password="123qqq...A",
-> master_log_file="master51.000001",
-> master_log_pos=154;

查看从库的状态
mysql> start slave; 开启从库
mysql> show slave status\G; 查看从库状态
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.4.51
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master51.000001
Read_Master_Log_Pos: 154
Relay_Log_File: mysql53-relay-bin.000002
Relay_Log_Pos: 319
Relay_Master_Log_File: master51.000001
Slave_IO_Running: Yes IO成功启动
Slave_SQL_Running: Yes SQL成功启动
#######################################################################################
54 配置成纯从库(设置从库id,开启从库的半同步,保留所有日志,指定主库为51)

设置从库id,开启从库的半同步,保留所有日志
# vim /etc/my.cnf
... ...
[mysqld]
server_id=54
relay_log_purge = 0
plugin-load="rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_slave_enabled = 1
... ...

指定主库为51
mysql> change master to
-> master_host="192.168.4.51",
-> master_user="repluser",
-> master_password="123qqq...A",
-> master_log_file="master51.000001",
-> master_log_pos=154;

查看从库的状态
mysql> start slave; 开启从库
mysql> show slave status\G; 查看从库状态
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.4.51
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master51.000001
Read_Master_Log_Pos: 154
Relay_Log_File: mysql54-relay-bin.000002
Relay_Log_Pos: 319
Relay_Master_Log_File: master51.000001
Slave_IO_Running: Yes IO成功启动
Slave_SQL_Running: Yes SQL成功启动
##########################################################################################
55 配置成纯从库(设置从库id,开启从库的半同步,保留所有日志,指定主库为51)

设置从库id,开启从库的半同步,保留所有日志
# vim /etc/my.cnf
... ...
[mysqld]
server_id=55
relay_log_purge = 0
plugin-load="rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_slave_enabled = 1
... ...

指定主库为51
mysql> change master to
-> master_host="192.168.4.51",
-> master_user="repluser",
-> master_password="123qqq...A",
-> master_log_file="master51.000001",
-> master_log_pos=154;

查看从库的状态
mysql> start slave; 开启从库
mysql> show slave status\G; 查看从库状态
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.4.51
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master51.000001
Read_Master_Log_Pos: 154
Relay_Log_File: mysql55-relay-bin.000002
Relay_Log_Pos: 319
Relay_Master_Log_File: master51.000001
Slave_IO_Running: Yes IO成功启动
Slave_SQL_Running: Yes SQL成功启动
#######################################################################################
在主库 51 添加 访问数据的连接用户

mysql> create database db8;
mysql> create table db8.a(id int);
mysql> grant select,insert on db8.* to yaya200@"%" identified by "123qqq...A";
#######################################################################################
在客户端50 连接 主数据库服务器51

# mysql -h192.168.4.51 -uyaya200 -p123qqq...A
mysql> insert into db8.a values(9999);
mysql> select * from db8.a;
+------+
| id |
+------+
| 9999 |
+------+
#########################################################################################
在51,52,53,54,55 都能查询得到客户端50插入的新数据

# mysql -uroot -p123qqq...A
mysql> select * from db8.a;
+------+
| id |
+------+
| 9999 |
+------+
#########################################################################################
配置高可用集群

3.1 集群环境配置
从库中,谁的数据最新,最接近主库,谁就会自动成为主库,自动获得VIP地址。客户端是连接VIP的。

3.3.1 配置所有数据库服务器主机之间彼此无密码登陆
3.3.2 配置管理主机 56 可以无密码连接所有的数据库服务器
3.3.3 所有主机 51-56 安装perl软件包
yum -y install perl-*
#########################################################################################
51-55 配置所有数据库服务器主机之间彼此无密码登陆

# ssh-keygen 一直回车,生成密钥
# for i in 51 52 53 54 55; do ssh-copy-id 192.168.4.$i; done 一次性拷贝给其他机子,包括自己也可以。
屏幕会要求你依次输入这几台主机的密码(第一次连接还会要求你输入yes)

页面显示如下:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.4.51 (192.168.4.51)' can't be established.
ECDSA key fingerprint is SHA256:59Byua15gv4TAVEm7YutMtmgXfxGTYbzSfO84kICu0E.
ECDSA key fingerprint is MD5:7e:6e:95:ed:84:fe:5b:8e:26:94:73:9b:c3:4b:90:cb.
Are you sure you want to continue connecting (yes/no)? yes 第一次连接会要求你输入yes

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.4.51's password: 这里要输入密码
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
也可以不用上面的命令,自己一台台的拷贝密钥给其他机子(拷贝给自己也可以)
# ssh-copy-id root@192.168.4.51
# ssh-copy-id root@192.168.4.52
# ssh-copy-id root@192.168.4.53
# ssh-copy-id root@192.168.4.54
# ssh-copy-id root@192.168.4.55

验证能否无密码登陆其他主机
# ssh 192.168.4.51
# ssh 192.168.4.53
# ssh 192.168.4.54
# ssh 192.168.4.55
#####################################################################################################
真机: 拷贝真机上的老师分享的mha-soft-student这个目录下的所有包到51-56上。

真机:
# for i in 51 52 53 54 55 56; do scp -r mha-soft-student 192.168.4.$i:/root/; done

下面这种格式的命令,更方便理解:
# for i in 51 52 53 54 55 56
> do
> scp -r /root/1 192.168.4.$i:/root/
> done
--------------------------------------------------------------------------------------------------------------------
51-56 安装MHA依赖的软件包perl-*

yum -y install perl-* 安装红帽光盘自带的perl包

# cd mha-soft-student/ 进入到mha-soft-student目录里
# ls perl-*.rpm 可以看到有8个包
perl-Config-Tiny-2.14-7.el7.noarch.rpm perl-Mail-Sendmail-0.79-21.el7.art.noarch.rpm
perl-Email-Date-Format-1.002-15.el7.noarch.rpm perl-MIME-Lite-3.030-1.el7.noarch.rpm
perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm perl-MIME-Types-1.38-2.el7.noarch.rpm
perl-Mail-Sender-0.8.23-1.el7.noarch.rpm perl-Parallel-ForkManager-1.18-2.el7.noarch.rpm

# yum -y install perl-*.rpm 安装老师分享的mha-soft-student目录里的全部的perl包
---------------------------------------------------------------------------------------------------------------------
51-56 安装mha_node软件包

# cd mha-soft-student/ 进入到mha-soft-student目录里
# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
-------------------------------------------------------------------------------------------------------------------
56 安装mha_manager软件包

# tar -zxvf mha4mysql-manager-0.56.tar.gz
# cd mha4mysql-manager-0.56/
# ls
AUTHORS bin COPYING debian inc lib Makefile.PL MANIFEST META.yml README rpm samples t tests


# perl Makefile.PL
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
[Core Features]
- DBI ...loaded. (1.627)
- DBD::mysql ...loaded. (4.023)
- Time::HiRes ...loaded. (1.9725)
- Config::Tiny ...loaded. (2.14)
- Log::Dispatch ...loaded. (2.41)
- Parallel::ForkManager ...loaded. (1.18)
- MHA::NodeConst ...loaded. (0.56)
*** Module::AutoInstall configuration finished.
Checking if your kit is complete...
Looks good 出现这个Looks good,就说明安装成功!
Writing Makefile for mha4mysql::manager
Writing MYMETA.yml and MYMETA.json

# make 必须在mha4mysql-manager-0.56这个目录下
# make install
##############################################################################################
56 把masterha命令放入系统环境变量的默认路径,方便tab

# ls bin
masterha_check_repl masterha_check_status masterha_manager masterha_master_switch masterha_stop
masterha_check_ssh masterha_conf_host masterha_master_monitor masterha_secondary_check

# cp -r bin /root/

# ls /root/bin/
masterha_check_repl masterha_check_status masterha_manager masterha_master_switch masterha_stop
masterha_check_ssh masterha_conf_host masterha_master_monitor masterha_secondary_check

# echo $PATH
/root/perl5/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

# masterha_ 摁2次tab可以出现相关的masterha命令
masterha_check_repl masterha_check_status masterha_manager masterha_master_switch masterha_stop
masterha_check_ssh masterha_conf_host masterha_master_monitor masterha_secondary_check
##############################################################################################
在管理主机56 配置集群

56

创建 集群配置文件
# mkdir /etc/mha 在/etc下新建mha目录,专门放mha配置文件
# cd /root/mha-soft-student/mha4mysql-manager-0.56/samples/conf 这里有系统默认的mha配置文件
# cp app1.cnf /etc/mha/ 拷贝mha默认配置文件到/etc/mha的配置目录中


编辑 集群配置文件
vim /etc/mha/app1.cnf
[server default]
manager_workdir=/etc/mha
manager_log=/etc/mha/manager.log
master_ip_failover_script=/etc/mha/master_ip_failover

ssh_user=root
ssh_port=22

repl_user=repluser
repl_password=123qqq...A

user=root
password=123qqq...A

[server1]
hostname=192.168.4.51
port=3306
candidate_master=1

[server2]
hostname=192.168.4.52
port=3306
candidate_master=1

[server3]
hostname=192.168.4.53
port=3306
candidate_master=1

[server4]
hostname=192.168.4.54
port=3306
no_master=1

[server5]
hostname=192.168.4.55
port=3306
no_master=1
---------------------------------------------------------------------------------------------------------------------------------------------
56 创建故障切换脚本

# cd mha-soft-student
# cp master_ip_failover /etc/mha/ 把真机上的老师写好的故障切换脚本拷贝过去
# chmod +x /etc/mha/master_ip_failover 给执行权限

vim /etc/mha/master_ip_failover
:set nu
... ... 这是老师自己在默认脚本基础上,添加了vip后的脚本。她加了这4行。
35 my $vip = '192.168.4.100/24'; # Virtual IP
36 my $key = "1";
37 my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
38 my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";
... ...
--------------------------------------------------------------------------------------------------------------------------------------------
51 在竞选数据库服务器上添加授权用户(51 | 52 | 53)。
51授权就行了,52-55是51的从库,都会自动同步。

51

# mysql -uroot -p123qqq...A
mysql> grant all on *.* to root@"%" identified by "123qqq...A";
mysql> quit
---------------------------------------------------------------------------------------------------------------------------------------------
# which mysql 如果没有安装数据库,可以yum -y install mariadb mariadb-server直接安装,只要是数据库就行,和版本没有关系。
/usr/bin/mysql

# systemctl restart mysqld
# mysql -h192.168.4.51 -uroot -p123qqq...A 测试能否用root登陆51-55的数据库
# mysql -h192.168.4.52 -uroot -p123qqq...A
# mysql -h192.168.4.53 -uroot -p123qqq...A
# mysql -h192.168.4.54 -uroot -p123qqq...A
# mysql -h192.168.4.55 -uroot -p123qqq...A
------------------------------------------------------------------------------------------------------------------------------------
51 把vip地址绑定在当前的主库服务器51的eth0接口

51

# ifconfig eth0:1 192.168.4.100 绑定vip在eth0:1 不能永久配置,只能临时配置,因为如果坏了,才能56进行切换VIP
# ifconfig eth0:1 可以查到绑定vip成功
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.4.100 netmask 255.255.255.0 broadcast 192.168.4.255
ether 52:54:00:58:02:fb txqueuelen 1000 (Ethernet)
---------------------------------------------------------------------------------------------------------------------------------------
4 在管理主机56 上测试配置
4.1 测试ssh配置
4.2 测试主从同步配置

56
# masterha_check_ssh --conf=/etc/mha/app1.cnf
... ...
Mon Nov 26 16:41:19 2018 - [info] All SSH connection tests passed successfully. 出现这句话All SSH successfully代表成功
---------------------------------------------------------------------------------------------------------------------------------------
5 启动管理服务

56
# masterha_check_repl --conf=/etc/mha/app1.cnf
... ...
MySQL Replication Health is OK. 出现这句话Health is OK代表成功!
-------------------------------------------------------------------------------------------------------------------------------------
如果有错误,就看这个对应的信息。【error】
-------------------------------------------------------------------------------------------------------------------------------------
56

# masterha_check_status --conf=/etc/mha/app1.cnf 目前还没启动
app1 is stopped(2:NOT_RUNNING).

启动服务
# masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover
当检测到当前主库51死了就马上删除配置文件里,51的对应信息。忽略失败检测,如果8小时内连续主库服务器死机,也不要停止服务。


# masterha_check_status --conf=/etc/mha/app1.cnf
app1 (pid:7566) is running(0:PING_OK), master:192.168.4.51 可以看到当前51拿着vip

# ping -c 2 192.168.4.100
PING 192.168.4.100 (192.168.4.100) 56(84) bytes of data.
64 bytes from 192.168.4.100: icmp_seq=1 ttl=64 time=0.902 ms
64 bytes from 192.168.4.100: icmp_seq=2 ttl=64 time=0.610 ms

--- 192.168.4.100 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.610/0.756/0.902/0.146 ms
-------------------------------------------------------------------------------------------------------------------------------
51

[root@mysql51 ~]# ifconfig eth0:1
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.4.100 netmask 255.255.255.0 broadcast 192.168.4.255
ether 52:54:00:58:02:fb txqueuelen 1000 (Ethernet)
------------------------------------------------------------------------------------------------------------------------------
50

[root@client50 ~]# mysql -h192.168.4.100 -uyaya200 -p123qqq...A

mysql> show grants;
+--------------------------------------------------+
| Grants for yaya200@% |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO 'yaya200'@'%' |
| GRANT SELECT, INSERT ON `db8`.* TO 'yaya200'@'%' |
+--------------------------------------------------+

mysql> select * from db8.a;
+------+
| id |
+------+
| 9999 |
+------+


mysql> insert into db8.a values(8888);
mysql> select * from db8.a;
+------+
| id |
+------+
| 9999 |
| 8888 |
+------+
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
51-55

# mysql -uroot -p123qqq...A
mysql> select * from db8.a; 都能查到客户端50插入的最新数据
+------+
| id |
+------+
| 9999 |
| 8888 |
+------+
#############################################################################################
测试高可用

51停止服务
[root@mysql51 ~]# systemctl stop mysqld

56

打开新终端,查看状态信息。

# masterha_check_status --conf=/etc/mha/app1.cnf
app1 is stopped(2:NOT_RUNNING). 当前状态是停止的

[root@host56 ~]# ping -c 2 192.168.4.100
PING 192.168.4.100 (192.168.4.100) 56(84) bytes of data.
64 bytes from 192.168.4.100: icmp_seq=1 ttl=64 time=0.714 ms
64 bytes from 192.168.4.100: icmp_seq=2 ttl=64 time=0.635 ms

--- 192.168.4.100 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms 仍然能ping通vip 192.168.4.100
rtt min/avg/max/mdev = 0.635/0.674/0.714/0.047 ms


# cd /etc/mha/
# ls
app1.cnf app1.master_status.health master_ip_failover
app1.failover.complete manager.log saved_master_binlog_from_192.168.4.51_3306_20181126175503.binlog
------------------------------------------------------------------------------------------------------------------------------------------------------------
50客户端仍然可以访问,查看当前服务的主机,vip转移到了52

mysql> select @@hostname;
+------------+
| @@hostname |
+------------+
| mysql52 |
+------------+
-----------------------------------------------------------------------------------------------------------------------------------------------------------
53-55可以检测得到当前的主库是52

# mysql -uroot -p123qqq...A -e "show slave status\G" | grep 192
mysql: [Warning] Using a password on the command line interface can be insecure.
Master_Host: 192.168.4.52 当前的主库是52

# mysql -uroot -p123qqq...A -e "show slave status\G" | grep -i yes
mysql: [Warning] Using a password on the command line interface can be insecure.
Slave_IO_Running: Yes IO线程成功启动!
Slave_SQL_Running: Yes SQL线程成功启动!

######################################################################################################
# masterha_check_ssh --conf=/etc/mha/app1.cnf

成功时输出信息如下:
Mon Nov 26 16:41:14 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Mon Nov 26 16:41:14 2018 - [info] Reading application default configuration from /etc/mha/app1.cnf..
Mon Nov 26 16:41:14 2018 - [info] Reading server configuration from /etc/mha/app1.cnf..
Mon Nov 26 16:41:14 2018 - [info] Starting SSH connection tests..
Mon Nov 26 16:41:17 2018 - [debug]
Mon Nov 26 16:41:14 2018 - [debug] Connecting via SSH from root@192.168.4.52(192.168.4.52:22) to root@192.168.4.51(192.168.4.51:22)..
Mon Nov 26 16:41:15 2018 - [debug] ok.
Mon Nov 26 16:41:15 2018 - [debug] Connecting via SSH from root@192.168.4.52(192.168.4.52:22) to root@192.168.4.53(192.168.4.53:22)..
Mon Nov 26 16:41:15 2018 - [debug] ok.
Mon Nov 26 16:41:15 2018 - [debug] Connecting via SSH from root@192.168.4.52(192.168.4.52:22) to root@192.168.4.54(192.168.4.54:22)..
Mon Nov 26 16:41:16 2018 - [debug] ok.
Mon Nov 26 16:41:16 2018 - [debug] Connecting via SSH from root@192.168.4.52(192.168.4.52:22) to root@192.168.4.55(192.168.4.55:22)..
Mon Nov 26 16:41:17 2018 - [debug] ok.
Mon Nov 26 16:41:17 2018 - [debug]
Mon Nov 26 16:41:14 2018 - [debug] Connecting via SSH from root@192.168.4.51(192.168.4.51:22) to root@192.168.4.52(192.168.4.52:22)..
Mon Nov 26 16:41:14 2018 - [debug] ok.
Mon Nov 26 16:41:14 2018 - [debug] Connecting via SSH from root@192.168.4.51(192.168.4.51:22) to root@192.168.4.53(192.168.4.53:22)..
Mon Nov 26 16:41:15 2018 - [debug] ok.
Mon Nov 26 16:41:15 2018 - [debug] Connecting via SSH from root@192.168.4.51(192.168.4.51:22) to root@192.168.4.54(192.168.4.54:22)..
Mon Nov 26 16:41:16 2018 - [debug] ok.
Mon Nov 26 16:41:16 2018 - [debug] Connecting via SSH from root@192.168.4.51(192.168.4.51:22) to root@192.168.4.55(192.168.4.55:22)..
Mon Nov 26 16:41:17 2018 - [debug] ok.
Mon Nov 26 16:41:18 2018 - [debug]
Mon Nov 26 16:41:15 2018 - [debug] Connecting via SSH from root@192.168.4.54(192.168.4.54:22) to root@192.168.4.51(192.168.4.51:22)..
Attempting to create directory /root/perl5
Mon Nov 26 16:41:16 2018 - [debug] ok.
Mon Nov 26 16:41:16 2018 - [debug] Connecting via SSH from root@192.168.4.54(192.168.4.54:22) to root@192.168.4.52(192.168.4.52:22)..
Mon Nov 26 16:41:17 2018 - [debug] ok.
Mon Nov 26 16:41:17 2018 - [debug] Connecting via SSH from root@192.168.4.54(192.168.4.54:22) to root@192.168.4.53(192.168.4.53:22)..
Mon Nov 26 16:41:17 2018 - [debug] ok.
Mon Nov 26 16:41:17 2018 - [debug] Connecting via SSH from root@192.168.4.54(192.168.4.54:22) to root@192.168.4.55(192.168.4.55:22)..
Mon Nov 26 16:41:18 2018 - [debug] ok.
Mon Nov 26 16:41:18 2018 - [debug]
Mon Nov 26 16:41:15 2018 - [debug] Connecting via SSH from root@192.168.4.53(192.168.4.53:22) to root@192.168.4.51(192.168.4.51:22)..
Attempting to create directory /root/perl5
Mon Nov 26 16:41:15 2018 - [debug] ok.
Mon Nov 26 16:41:15 2018 - [debug] Connecting via SSH from root@192.168.4.53(192.168.4.53:22) to root@192.168.4.52(192.168.4.52:22)..
Mon Nov 26 16:41:16 2018 - [debug] ok.
Mon Nov 26 16:41:16 2018 - [debug] Connecting via SSH from root@192.168.4.53(192.168.4.53:22) to root@192.168.4.54(192.168.4.54:22)..
Mon Nov 26 16:41:17 2018 - [debug] ok.
Mon Nov 26 16:41:17 2018 - [debug] Connecting via SSH from root@192.168.4.53(192.168.4.53:22) to root@192.168.4.55(192.168.4.55:22)..
Mon Nov 26 16:41:17 2018 - [debug] ok.
Mon Nov 26 16:41:19 2018 - [debug]
Mon Nov 26 16:41:16 2018 - [debug] Connecting via SSH from root@192.168.4.55(192.168.4.55:22) to root@192.168.4.51(192.168.4.51:22)..
Attempting to create directory /root/perl5
Mon Nov 26 16:41:16 2018 - [debug] ok.
Mon Nov 26 16:41:16 2018 - [debug] Connecting via SSH from root@192.168.4.55(192.168.4.55:22) to root@192.168.4.52(192.168.4.52:22)..
Mon Nov 26 16:41:17 2018 - [debug] ok.
Mon Nov 26 16:41:17 2018 - [debug] Connecting via SSH from root@192.168.4.55(192.168.4.55:22) to root@192.168.4.53(192.168.4.53:22)..
Mon Nov 26 16:41:18 2018 - [debug] ok.
Mon Nov 26 16:41:18 2018 - [debug] Connecting via SSH from root@192.168.4.55(192.168.4.55:22) to root@192.168.4.54(192.168.4.54:22)..
Mon Nov 26 16:41:18 2018 - [debug] ok.
Mon Nov 26 16:41:19 2018 - [info] All SSH connection tests passed successfully.
出现最后这句话,就是成功!


############################################################################################################
[root@host56 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
成功时输出信息如下:

Mon Nov 26 16:43:14 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Mon Nov 26 16:43:14 2018 - [info] Reading application default configuration from /etc/mha/app1.cnf..
Mon Nov 26 16:43:14 2018 - [info] Reading server configuration from /etc/mha/app1.cnf..
Mon Nov 26 16:43:14 2018 - [info] MHA::MasterMonitor version 0.56.
Mon Nov 26 16:43:15 2018 - [info] GTID failover mode = 0
Mon Nov 26 16:43:15 2018 - [info] Dead Servers:
Mon Nov 26 16:43:15 2018 - [info] Alive Servers:
Mon Nov 26 16:43:15 2018 - [info] 192.168.4.51(192.168.4.51:3306)
Mon Nov 26 16:43:15 2018 - [info] 192.168.4.52(192.168.4.52:3306)
Mon Nov 26 16:43:15 2018 - [info] 192.168.4.53(192.168.4.53:3306)
Mon Nov 26 16:43:15 2018 - [info] 192.168.4.54(192.168.4.54:3306)
Mon Nov 26 16:43:15 2018 - [info] 192.168.4.55(192.168.4.55:3306)
Mon Nov 26 16:43:15 2018 - [info] Alive Slaves:
Mon Nov 26 16:43:15 2018 - [info] 192.168.4.52(192.168.4.52:3306) Version=5.7.17-log (oldest major version between slaves) log-bin:enabled
Mon Nov 26 16:43:15 2018 - [info] Replicating from 192.168.4.51(192.168.4.51:3306)
Mon Nov 26 16:43:15 2018 - [info] Primary candidate for the new Master (candidate_master is set)
Mon Nov 26 16:43:15 2018 - [info] 192.168.4.53(192.168.4.53:3306) Version=5.7.17-log (oldest major version between slaves) log-bin:enabled
Mon Nov 26 16:43:15 2018 - [info] Replicating from 192.168.4.51(192.168.4.51:3306)
Mon Nov 26 16:43:15 2018 - [info] Primary candidate for the new Master (candidate_master is set)
Mon Nov 26 16:43:15 2018 - [info] 192.168.4.54(192.168.4.54:3306) Version=5.7.17 (oldest major version between slaves) log-bin:disabled
Mon Nov 26 16:43:15 2018 - [info] Replicating from 192.168.4.51(192.168.4.51:3306)
Mon Nov 26 16:43:15 2018 - [info] Not candidate for the new Master (no_master is set)
Mon Nov 26 16:43:15 2018 - [info] 192.168.4.55(192.168.4.55:3306) Version=5.7.17 (oldest major version between slaves) log-bin:disabled
Mon Nov 26 16:43:15 2018 - [info] Replicating from 192.168.4.51(192.168.4.51:3306)
Mon Nov 26 16:43:15 2018 - [info] Not candidate for the new Master (no_master is set)
Mon Nov 26 16:43:15 2018 - [info] Current Alive Master: 192.168.4.51(192.168.4.51:3306)
Mon Nov 26 16:43:15 2018 - [info] Checking slave configurations..
Mon Nov 26 16:43:15 2018 - [info] read_only=1 is not set on slave 192.168.4.52(192.168.4.52:3306).
Mon Nov 26 16:43:15 2018 - [info] read_only=1 is not set on slave 192.168.4.53(192.168.4.53:3306).
Mon Nov 26 16:43:15 2018 - [info] read_only=1 is not set on slave 192.168.4.54(192.168.4.54:3306).
Mon Nov 26 16:43:15 2018 - [warning] log-bin is not set on slave 192.168.4.54(192.168.4.54:3306). This host cannot be a master.
Mon Nov 26 16:43:15 2018 - [info] read_only=1 is not set on slave 192.168.4.55(192.168.4.55:3306).
Mon Nov 26 16:43:15 2018 - [warning] log-bin is not set on slave 192.168.4.55(192.168.4.55:3306). This host cannot be a master.
Mon Nov 26 16:43:15 2018 - [info] Checking replication filtering settings..
Mon Nov 26 16:43:15 2018 - [info] binlog_do_db= , binlog_ignore_db=
Mon Nov 26 16:43:15 2018 - [info] Replication filtering check ok.
Mon Nov 26 16:43:15 2018 - [info] GTID (with auto-pos) is not supported
Mon Nov 26 16:43:15 2018 - [info] Starting SSH connection tests..
Mon Nov 26 16:43:20 2018 - [info] All SSH connection tests passed successfully.
Mon Nov 26 16:43:20 2018 - [info] Checking MHA Node version..
Mon Nov 26 16:43:22 2018 - [info] Version check ok.
Mon Nov 26 16:43:22 2018 - [info] Checking SSH publickey authentication settings on the current master..
Mon Nov 26 16:43:22 2018 - [info] HealthCheck: SSH to 192.168.4.51 is reachable.
Mon Nov 26 16:43:23 2018 - [info] Master MHA Node version is 0.56.
Mon Nov 26 16:43:23 2018 - [info] Checking recovery script configurations on 192.168.4.51(192.168.4.51:3306)..
Mon Nov 26 16:43:23 2018 - [info] Executing command: save_binary_logs --command=test --start_pos=4 --binlog_dir=/var/lib/mysql,/var/log/mysql --output_file=/var/tmp/save_binary_logs_test --manager_version=0.56 --start_file=master51.000001
Mon Nov 26 16:43:23 2018 - [info] Connecting to root@192.168.4.51(192.168.4.51:22)..
Creating /var/tmp if not exists.. ok.
Checking output directory is accessible or not..
ok.
Binlog found at /var/lib/mysql, up to master51.000001
Mon Nov 26 16:43:23 2018 - [info] Binlog setting check done.
Mon Nov 26 16:43:23 2018 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers..
Mon Nov 26 16:43:23 2018 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='root' --slave_host=192.168.4.52 --slave_ip=192.168.4.52 --slave_port=3306 --workdir=/var/tmp --target_version=5.7.17-log --manager_version=0.56 --relay_log_info=/var/lib/mysql/relay-log.info --relay_dir=/var/lib/mysql/ --slave_pass=xxx
Mon Nov 26 16:43:23 2018 - [info] Connecting to root@192.168.4.52(192.168.4.52:22)..
Checking slave recovery environment settings..
Opening /var/lib/mysql/relay-log.info ... ok.
Relay log found at /var/lib/mysql, up to mysql52-relay-bin.000008
Temporary relay log file is /var/lib/mysql/mysql52-relay-bin.000008
Testing mysql connection and privileges..mysql: [Warning] Using a password on the command line interface can be insecure.
done.
Testing mysqlbinlog output.. done.
Cleaning up test file(s).. done.
Mon Nov 26 16:43:24 2018 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='root' --slave_host=192.168.4.53 --slave_ip=192.168.4.53 --slave_port=3306 --workdir=/var/tmp --target_version=5.7.17-log --manager_version=0.56 --relay_log_info=/var/lib/mysql/relay-log.info --relay_dir=/var/lib/mysql/ --slave_pass=xxx
Mon Nov 26 16:43:24 2018 - [info] Connecting to root@192.168.4.53(192.168.4.53:22)..
Checking slave recovery environment settings..
Opening /var/lib/mysql/relay-log.info ... ok.
Relay log found at /var/lib/mysql, up to mysql53-relay-bin.000005
Temporary relay log file is /var/lib/mysql/mysql53-relay-bin.000005
Testing mysql connection and privileges..mysql: [Warning] Using a password on the command line interface can be insecure.
done.
Testing mysqlbinlog output.. done.
Cleaning up test file(s).. done.
Mon Nov 26 16:43:25 2018 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='root' --slave_host=192.168.4.54 --slave_ip=192.168.4.54 --slave_port=3306 --workdir=/var/tmp --target_version=5.7.17 --manager_version=0.56 --relay_log_info=/var/lib/mysql/relay-log.info --relay_dir=/var/lib/mysql/ --slave_pass=xxx
Mon Nov 26 16:43:25 2018 - [info] Connecting to root@192.168.4.54(192.168.4.54:22)..
Checking slave recovery environment settings..
Opening /var/lib/mysql/relay-log.info ... ok.
Relay log found at /var/lib/mysql, up to mysql54-relay-bin.000002
Temporary relay log file is /var/lib/mysql/mysql54-relay-bin.000002
Testing mysql connection and privileges..mysql: [Warning] Using a password on the command line interface can be insecure.
done.
Testing mysqlbinlog output.. done.
Cleaning up test file(s).. done.
Mon Nov 26 16:43:26 2018 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='root' --slave_host=192.168.4.55 --slave_ip=192.168.4.55 --slave_port=3306 --workdir=/var/tmp --target_version=5.7.17 --manager_version=0.56 --relay_log_info=/var/lib/mysql/relay-log.info --relay_dir=/var/lib/mysql/ --slave_pass=xxx
Mon Nov 26 16:43:26 2018 - [info] Connecting to root@192.168.4.55(192.168.4.55:22)..
Checking slave recovery environment settings..
Opening /var/lib/mysql/relay-log.info ... ok.
Relay log found at /var/lib/mysql, up to mysql55-relay-bin.000002
Temporary relay log file is /var/lib/mysql/mysql55-relay-bin.000002
Testing mysql connection and privileges..mysql: [Warning] Using a password on the command line interface can be insecure.
done.
Testing mysqlbinlog output.. done.
Cleaning up test file(s).. done.
Mon Nov 26 16:43:28 2018 - [info] Slaves settings check done.
Mon Nov 26 16:43:28 2018 - [info]
192.168.4.51(192.168.4.51:3306) (current master)
+--192.168.4.52(192.168.4.52:3306)
+--192.168.4.53(192.168.4.53:3306)
+--192.168.4.54(192.168.4.54:3306)
+--192.168.4.55(192.168.4.55:3306)

Mon Nov 26 16:43:28 2018 - [info] Checking replication health on 192.168.4.52..
Mon Nov 26 16:43:28 2018 - [info] ok.
Mon Nov 26 16:43:28 2018 - [info] Checking replication health on 192.168.4.53..
Mon Nov 26 16:43:28 2018 - [info] ok.
Mon Nov 26 16:43:28 2018 - [info] Checking replication health on 192.168.4.54..
Mon Nov 26 16:43:28 2018 - [info] ok.
Mon Nov 26 16:43:28 2018 - [info] Checking replication health on 192.168.4.55..
Mon Nov 26 16:43:28 2018 - [info] ok.
Mon Nov 26 16:43:28 2018 - [info] Checking master_ip_failover_script status:
Mon Nov 26 16:43:28 2018 - [info] /etc/mha/master_ip_failover --command=status --ssh_user=root --orig_master_host=192.168.4.51 --orig_master_ip=192.168.4.51 --orig_master_port=3306
Mon Nov 26 16:43:28 2018 - [info] OK.
Mon Nov 26 16:43:28 2018 - [warning] shutdown_script is not defined.
Mon Nov 26 16:43:28 2018 - [info] Got exit code 0 (Not master dead).

MySQL Replication Health is OK.
出现最后这句话,就是成功!

 

##############################################################################################################
没有开机,直接连接数据库会报错,开机就行。

[root@s1 ~]# mysqladmin -uroot -p password "123qqq...A"
Enter password:
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists!

只有开启了数据库服务,才会产生下面这个文件。它的作用就是用来连接上数据库的。
/var/lib/mysql/mysql.sock
##################################################################################################################
[root@h14 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
Tue Nov 27 12:43:53 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Tue Nov 27 12:43:53 2018 - [info] Reading application default configuration from /etc/mha/app1.cnf..
Tue Nov 27 12:43:53 2018 - [info] Reading server configuration from /etc/mha/app1.cnf..
Tue Nov 27 12:43:53 2018 - [info] MHA::MasterMonitor version 0.56.
Tue Nov 27 12:43:54 2018 - [info] GTID failover mode = 0
Tue Nov 27 12:43:54 2018 - [info] Dead Servers:
Tue Nov 27 12:43:54 2018 - [info] Alive Servers:
Tue Nov 27 12:43:54 2018 - [info] 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:43:54 2018 - [info] 192.168.4.12(192.168.4.12:3306)
Tue Nov 27 12:43:54 2018 - [info] 192.168.4.13(192.168.4.13:3306)
Tue Nov 27 12:43:54 2018 - [info] 192.168.4.1(192.168.4.1:3306)
Tue Nov 27 12:43:54 2018 - [info] 192.168.4.2(192.168.4.2:3306)
Tue Nov 27 12:43:54 2018 - [info] Alive Slaves:
Tue Nov 27 12:43:54 2018 - [info] 192.168.4.12(192.168.4.12:3306) Version=5.5.56-MariaDB (oldest major version between slaves) log-bin:enabled
Tue Nov 27 12:43:54 2018 - [info] Replicating from 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:43:54 2018 - [info] Primary candidate for the new Master (candidate_master is set)
Tue Nov 27 12:43:54 2018 - [info] 192.168.4.13(192.168.4.13:3306) Version=5.5.56-MariaDB (oldest major version between slaves) log-bin:enabled
Tue Nov 27 12:43:54 2018 - [info] Replicating from 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:43:54 2018 - [info] Primary candidate for the new Master (candidate_master is set)
Tue Nov 27 12:43:54 2018 - [info] 192.168.4.1(192.168.4.1:3306) Version=5.5.56-MariaDB (oldest major version between slaves) log-bin:disabled
Tue Nov 27 12:43:54 2018 - [info] Replicating from 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:43:54 2018 - [info] Not candidate for the new Master (no_master is set)
Tue Nov 27 12:43:54 2018 - [info] 192.168.4.2(192.168.4.2:3306) Version=5.5.56-MariaDB (oldest major version between slaves) log-bin:disabled
Tue Nov 27 12:43:54 2018 - [info] Replicating from 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:43:54 2018 - [info] Not candidate for the new Master (no_master is set)
Tue Nov 27 12:43:54 2018 - [info] Current Alive Master: 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:43:54 2018 - [info] Checking slave configurations..
Tue Nov 27 12:43:54 2018 - [info] read_only=1 is not set on slave 192.168.4.12(192.168.4.12:3306).
Tue Nov 27 12:43:54 2018 - [warning] relay_log_purge=0 is not set on slave 192.168.4.12(192.168.4.12:3306).
Tue Nov 27 12:43:54 2018 - [info] read_only=1 is not set on slave 192.168.4.13(192.168.4.13:3306).
Tue Nov 27 12:43:54 2018 - [warning] relay_log_purge=0 is not set on slave 192.168.4.13(192.168.4.13:3306).
Tue Nov 27 12:43:54 2018 - [info] read_only=1 is not set on slave 192.168.4.1(192.168.4.1:3306).
Tue Nov 27 12:43:54 2018 - [warning] relay_log_purge=0 is not set on slave 192.168.4.1(192.168.4.1:3306).
Tue Nov 27 12:43:54 2018 - [warning] log-bin is not set on slave 192.168.4.1(192.168.4.1:3306). This host cannot be a master.
Tue Nov 27 12:43:54 2018 - [info] read_only=1 is not set on slave 192.168.4.2(192.168.4.2:3306).
Tue Nov 27 12:43:54 2018 - [warning] relay_log_purge=0 is not set on slave 192.168.4.2(192.168.4.2:3306).
Tue Nov 27 12:43:54 2018 - [warning] log-bin is not set on slave 192.168.4.2(192.168.4.2:3306). This host cannot be a master.
Tue Nov 27 12:43:54 2018 - [info] Checking replication filtering settings..
Tue Nov 27 12:43:54 2018 - [info] binlog_do_db= , binlog_ignore_db=
Tue Nov 27 12:43:54 2018 - [info] Replication filtering check ok.
Tue Nov 27 12:43:54 2018 - [error][/usr/local/share/perl5/MHA/Server.pm, ln393] 192.168.4.12(192.168.4.12:3306): User repluser does not exist or does not have REPLICATION SLAVE privilege! Other slaves can not start replication from this host.
Tue Nov 27 12:43:54 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations. at /usr/local/share/perl5/MHA/ServerManager.pm line 1403.
Tue Nov 27 12:43:54 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers.
Tue Nov 27 12:43:54 2018 - [info] Got exit code 1 (Not master dead).

MySQL Replication Health is NOT OK!

 

[root@h14 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
Tue Nov 27 12:49:31 2018 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Tue Nov 27 12:49:31 2018 - [info] Reading application default configuration from /etc/mha/app1.cnf..
Tue Nov 27 12:49:31 2018 - [info] Reading server configuration from /etc/mha/app1.cnf..
Tue Nov 27 12:49:31 2018 - [info] MHA::MasterMonitor version 0.56.
Tue Nov 27 12:49:32 2018 - [info] GTID failover mode = 0
Tue Nov 27 12:49:32 2018 - [info] Dead Servers:
Tue Nov 27 12:49:32 2018 - [info] Alive Servers:
Tue Nov 27 12:49:32 2018 - [info] 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:49:32 2018 - [info] 192.168.4.12(192.168.4.12:3306)
Tue Nov 27 12:49:32 2018 - [info] 192.168.4.13(192.168.4.13:3306)
Tue Nov 27 12:49:32 2018 - [info] 192.168.4.1(192.168.4.1:3306)
Tue Nov 27 12:49:32 2018 - [info] 192.168.4.2(192.168.4.2:3306)
Tue Nov 27 12:49:32 2018 - [info] Alive Slaves:
Tue Nov 27 12:49:32 2018 - [info] 192.168.4.12(192.168.4.12:3306) Version=5.5.56-MariaDB (oldest major version between slaves) log-bin:enabled
Tue Nov 27 12:49:32 2018 - [info] Replicating from 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:49:32 2018 - [info] Primary candidate for the new Master (candidate_master is set)
Tue Nov 27 12:49:32 2018 - [info] 192.168.4.13(192.168.4.13:3306) Version=5.5.56-MariaDB (oldest major version between slaves) log-bin:enabled
Tue Nov 27 12:49:32 2018 - [info] Replicating from 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:49:32 2018 - [info] Primary candidate for the new Master (candidate_master is set)
Tue Nov 27 12:49:32 2018 - [info] 192.168.4.1(192.168.4.1:3306) Version=5.5.56-MariaDB (oldest major version between slaves) log-bin:disabled
Tue Nov 27 12:49:32 2018 - [info] Replicating from 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:49:32 2018 - [info] Not candidate for the new Master (no_master is set)
Tue Nov 27 12:49:32 2018 - [info] 192.168.4.2(192.168.4.2:3306) Version=5.5.56-MariaDB (oldest major version between slaves) log-bin:disabled
Tue Nov 27 12:49:32 2018 - [info] Replicating from 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:49:32 2018 - [info] Not candidate for the new Master (no_master is set)
Tue Nov 27 12:49:32 2018 - [info] Current Alive Master: 192.168.4.11(192.168.4.11:3306)
Tue Nov 27 12:49:32 2018 - [info] Checking slave configurations..
Tue Nov 27 12:49:32 2018 - [info] read_only=1 is not set on slave 192.168.4.12(192.168.4.12:3306).
Tue Nov 27 12:49:32 2018 - [warning] relay_log_purge=0 is not set on slave 192.168.4.12(192.168.4.12:3306).
Tue Nov 27 12:49:32 2018 - [info] read_only=1 is not set on slave 192.168.4.13(192.168.4.13:3306).
Tue Nov 27 12:49:32 2018 - [warning] relay_log_purge=0 is not set on slave 192.168.4.13(192.168.4.13:3306).
Tue Nov 27 12:49:32 2018 - [info] read_only=1 is not set on slave 192.168.4.1(192.168.4.1:3306).
Tue Nov 27 12:49:32 2018 - [warning] relay_log_purge=0 is not set on slave 192.168.4.1(192.168.4.1:3306).
Tue Nov 27 12:49:32 2018 - [warning] log-bin is not set on slave 192.168.4.1(192.168.4.1:3306). This host cannot be a master.
Tue Nov 27 12:49:32 2018 - [info] read_only=1 is not set on slave 192.168.4.2(192.168.4.2:3306).
Tue Nov 27 12:49:32 2018 - [warning] relay_log_purge=0 is not set on slave 192.168.4.2(192.168.4.2:3306).
Tue Nov 27 12:49:32 2018 - [warning] log-bin is not set on slave 192.168.4.2(192.168.4.2:3306). This host cannot be a master.
Tue Nov 27 12:49:32 2018 - [info] Checking replication filtering settings..
Tue Nov 27 12:49:32 2018 - [info] binlog_do_db= , binlog_ignore_db=
Tue Nov 27 12:49:32 2018 - [info] Replication filtering check ok.
Tue Nov 27 12:49:32 2018 - [info] GTID (with auto-pos) is not supported
Tue Nov 27 12:49:32 2018 - [info] Starting SSH connection tests..
Tue Nov 27 12:49:38 2018 - [info] All SSH connection tests passed successfully.
Tue Nov 27 12:49:38 2018 - [info] Checking MHA Node version..
Tue Nov 27 12:49:39 2018 - [info] Version check ok.
Tue Nov 27 12:49:39 2018 - [info] Checking SSH publickey authentication settings on the current master..
Tue Nov 27 12:49:40 2018 - [info] HealthCheck: SSH to 192.168.4.11 is reachable.
Tue Nov 27 12:49:40 2018 - [info] Master MHA Node version is 0.56.
Tue Nov 27 12:49:40 2018 - [info] Checking recovery script configurations on 192.168.4.11(192.168.4.11:3306)..
Tue Nov 27 12:49:40 2018 - [info] Executing command: save_binary_logs --command=test --start_pos=4 --binlog_dir=/var/lib/mysql,/var/log/mysql --output_file=/var/tmp/save_binary_logs_test --manager_version=0.56 --start_file=master11.000001
Tue Nov 27 12:49:40 2018 - [info] Connecting to root@192.168.4.11(192.168.4.11:22)..
Creating /var/tmp if not exists.. ok.
Checking output directory is accessible or not..
ok.
Binlog found at /var/lib/mysql, up to master11.000001
Tue Nov 27 12:49:40 2018 - [info] Binlog setting check done.
Tue Nov 27 12:49:40 2018 - [info] Checking SSH publickey authentication and checking recovery script configurations on all alive slave servers..
Tue Nov 27 12:49:40 2018 - [info] Executing command : apply_diff_relay_logs --command=test --slave_user='root' --slave_host=192.168.4.12 --slave_ip=192.168.4.12 --slave_port=3306 --workdir=/var/tmp --target_version=5.5.56-MariaDB --manager_version=0.56 --relay_log_info=/var/lib/mysql/relay-log.info --relay_dir=/var/lib/mysql/ --slave_pass=xxx
Tue Nov 27 12:49:40 2018 - [info] Connecting to root@192.168.4.12(192.168.4.12:22)..
Checking slave recovery environment settings..
Opening /var/lib/mysql/relay-log.info ... ok.
Relay log found at /var/lib/mysql, up to mariadb-relay-bin.000002
Temporary relay log file is /var/lib/mysql/mariadb-relay-bin.000002
Testing mysql connection and privileges..ERROR 1045 (28000): Access denied for user 'root'@'m12' (using password: YES)
mysql command failed with rc 1:0!
at /usr/bin/apply_diff_relay_logs line 375.
main::check() called at /usr/bin/apply_diff_relay_logs line 497
eval {...} called at /usr/bin/apply_diff_relay_logs line 475
main::main() called at /usr/bin/apply_diff_relay_logs line 120
Tue Nov 27 12:49:41 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln205] Slaves settings check failed!
Tue Nov 27 12:49:41 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln413] Slave configuration failed.
Tue Nov 27 12:49:41 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations. at /usr/local/bin/masterha_check_repl line 48.
Tue Nov 27 12:49:41 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers.
Tue Nov 27 12:49:41 2018 - [info] Got exit code 1 (Not master dead).

MySQL Replication Health is NOT OK!

##############################################################################################################
[root@h14 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
... ...
Tue Nov 27 12:56:58 2018 - [info] Connecting to root@192.168.4.12(192.168.4.12:22)..
Checking slave recovery environment settings..
Opening /var/lib/mysql/relay-log.info ... ok.
Relay log found at /var/lib/mysql, up to mariadb-relay-bin.000002
Temporary relay log file is /var/lib/mysql/mariadb-relay-bin.000002
Testing mysql connection and privileges..ERROR 1045 (28000): Access denied for user 'root'@'m12' (using password: YES)
mysql command failed with rc 1:0!
at /usr/bin/apply_diff_relay_logs line 375.
main::check() called at /usr/bin/apply_diff_relay_logs line 497
eval {...} called at /usr/bin/apply_diff_relay_logs line 475
main::main() called at /usr/bin/apply_diff_relay_logs line 120
Tue Nov 27 12:56:58 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln205] Slaves settings check failed!
Tue Nov 27 12:56:58 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln413] Slave configuration failed.
Tue Nov 27 12:56:58 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations. at /usr/local/bin/masterha_check_repl line 48.
Tue Nov 27 12:56:58 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers.
Tue Nov 27 12:56:58 2018 - [info] Got exit code 1 (Not master dead).

MySQL Replication Health is NOT OK!

#####################################################################################################
[root@h14 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
... ...
Tue Nov 27 13:22:12 2018 - [info] Connecting to root@192.168.4.13(192.168.4.13:22)..
Checking slave recovery environment settings..
Opening /var/lib/mysql/relay-log.info ... ok.
Relay log found at /var/lib/mysql, up to mariadb-relay-bin.000002
Temporary relay log file is /var/lib/mysql/mariadb-relay-bin.000002
Testing mysql connection and privileges..ERROR 1045 (28000): Access denied for user 'root'@'m13' (using password: YES)
mysql command failed with rc 1:0!
at /usr/bin/apply_diff_relay_logs line 375.
main::check() called at /usr/bin/apply_diff_relay_logs line 497
eval {...} called at /usr/bin/apply_diff_relay_logs line 475
main::main() called at /usr/bin/apply_diff_relay_logs line 120
Tue Nov 27 13:22:12 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln205] Slaves settings check failed!
Tue Nov 27 13:22:12 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln413] Slave configuration failed.
Tue Nov 27 13:22:12 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations. at /usr/local/bin/masterha_check_repl line 48.
Tue Nov 27 13:22:12 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers.
Tue Nov 27 13:22:12 2018 - [info] Got exit code 1 (Not master dead).

MySQL Replication Health is NOT OK!

####################################################################################################
[root@h14 ~]# masterha_check_repl --conf=/etc/mha/app1.cnf
... ...
Tue Nov 27 13:25:37 2018 - [info] Checking master_ip_failover_script status:
Tue Nov 27 13:25:37 2018 - [info] /etc/mha/master_ip_failover_script --command=status --ssh_user=root --orig_master_host=192.168.4.11 --orig_master_ip=192.168.4.11 --orig_master_port=3306
Tue Nov 27 13:25:37 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations. Can't exec "/etc/mha/master_ip_failover_script": 没有那个文件或目录 at /usr/local/share/perl5/MHA/ManagerUtil.pm line 68.
Tue Nov 27 13:25:37 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers.
Tue Nov 27 13:25:37 2018 - [info] Got exit code 1 (Not master dead).

MySQL Replication Health is NOT OK!
Tue Nov 27 13:25:37 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln226] Failed to get master_ip_failover_script status with return code 1:0.
Tue Nov 27 13:25:37 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln424] Error happened on checking configurations. at /usr/local/bin/masterha_check_repl line 48.
Tue Nov 27 13:25:37 2018 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln523] Error happened on monitoring servers.
Tue Nov 27 13:25:37 2018 - [info] Got exit code 1 (Not master dead).

MySQL Replication Health is NOT OK!

 

posted @ 2019-04-30 22:29  安于夏  阅读(366)  评论(0编辑  收藏  举报