mha配置mysql高可用
本次实验的环境为rhel7
monitor 172.25.254.40
master 172.25.254.41
slave 172.25.254.42
slave2 172.25.254.43
mha的节点部署过程
每个节点的操作:
下载好eple配置yum来源
下载这个压缩包 epel-release-6-8.noarch.rpm
然后
rpm -ivh epel-release-6-8.noarch.rpm
然后安装好perl与mysql的依赖性软件
yum install perl-DBD-MySQL -y
安装好以后开始安装mha node在每个节点上
下载这个压缩包 mha4mysql-node-0.56.tar.gz
进行源码安装过程
安装好依赖性软件,搭建一个perl环境
yum install perl-devel perl-CPAN -y
解压软件包
tar xf mha4mysql-node-0.56.tar.gz
cd mha4mysql-node-0.56
执行里面的perl代码
perl Makefile.PL
安装
make && make install
cd /usr/local/bin/
ll
total 44
-r-xr-xr-x. 1 root root 16367 Aug 5 15:16 apply_diff_relay_logs
-r-xr-xr-x. 1 root root 4807 Aug 5 15:16 filter_mysqlbinlog
-r-xr-xr-x. 1 root root 8261 Aug 5 15:16 purge_relay_logs
-r-xr-xr-x. 1 root root 7525 Aug 5 15:16 save_binary_logs
save_binary_logs
//保存和复制master的二进制日志
apply_diff_relay_logs //识别差异的中继日志事件并将其差异的事件应用于其他的slave
filter_mysqlbinlog //去除不必要的ROLLBACK事件(MHA已不再使用这个工具)
purge_relay_logs //清除中继日志(不会阻塞SQL线程)
在Master主机上进入mysql创建好复制用户和监控用户
MariaDB [(none)]> grant all privileges on *.* to 'root'@'172.25.254.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant replication slave on *.* to 'repl'@'172.25.254.%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
安装mha manager步骤:
yum install perl-DBD-MySQL -y
yum install perl-devel perl-CPAN -y
重复之前安装node的方法,在manager主机上也安装好node
下载好mha4mysql-manager-0.56.tar.gz
与安装node的方式类似
tar xf mha4mysql-manager-0.56.tar.gz
cd mha4mysql-manager-0.56
perl Makefile.PL
然后安装
make && make install
查看在bin下生成的脚本
cd /usr/local/bin
ll
total 136
-r-xr-xr-x. 1 root root 16367 Aug 6 04:48 apply_diff_relay_logs
-r-xr-xr-x. 1 root root 7138 Aug 6 05:13 config_data
-r-xr-xr-x. 1 root root 15080 Aug 6 05:13 corelist
-r-xr-xr-x. 1 root root 4807 Aug 6 04:48 filter_mysqlbinlog
-r-xr-xr-x. 1 root root 4170 Aug 6 05:13 json_pp
-r-xr-xr-x. 1 root root 1995 Aug 6 05:16 masterha_check_repl
-r-xr-xr-x. 1 root root 1779 Aug 6 05:16 masterha_check_ssh
-r-xr-xr-x. 1 root root 1865 Aug 6 05:16 masterha_check_status
-r-xr-xr-x. 1 root root 3201 Aug 6 05:16 masterha_conf_host
-r-xr-xr-x. 1 root root 2517 Aug 6 05:16 masterha_manager
-r-xr-xr-x. 1 root root 2165 Aug 6 05:16 masterha_master_monitor
-r-xr-xr-x. 1 root root 2373 Aug 6 05:16 masterha_master_switch
-r-xr-xr-x. 1 root root 5171 Aug 6 05:16 masterha_secondary_check
-r-xr-xr-x. 1 root root 1739 Aug 6 05:16 masterha_stop
-r-xr-xr-x. 1 root root 927 Aug 6 05:15 package-stash-conflicts
-r-xr-xr-x. 1 root root 13582 Aug 6 05:13 prove
-r-xr-xr-x. 1 root root 8261 Aug 6 04:48 purge_relay_logs
-r-xr-xr-x. 1 root root 7525 Aug 6 04:48 save_binary_logs
然后安装后生成的脚本复制到/usr/local/bin下
[root@www scripts]# ll
total 32
-rwxr-xr-x. 1 4984 users 3648 Apr 1 2014 master_ip_failover
-rwxr-xr-x. 1 4984 users 9870 Apr 1 2014 master_ip_online_change
-rwxr-xr-x. 1 4984 users 11867 Apr 1 2014 power_manager
-rwxr-xr-x. 1 4984 users 1360 Apr 1 2014 send_report
[root@www scripts]# pwd
/root/Desktop/mha4mysql-manager-0.56/samples/scripts
执行
cp * /usr/local/bin
然后设置SSH登陆无密码的验证方式
在master上
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.42
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.43
在slave上
ssh-keygen -t rsa
分发给master和slave
在slave2上
ssh-keygen -t rsa
分发给master和slave
在monitor上
ssh-keygen -t rsa
分发给master slave slave2
在搭建好主从复制的环境后,就可以搭建mha服务
在monitor端
cd /etc/
mkdir masterha
cp mha4mysql-manager-0.56/samples/conf/app1.cnf /etc/masterha/
然后在/etc/masterha下对app1.cnf进行修改
vim /etc/masterha/app1.cnf
[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
#master_binlog_dir=/data/mysql
#master_ip_failover_script=/usr/local/bin/master_ip_online_change
password=123456
user=slaves
ping_interval=1
remote_workdir=/tmp
repl_password=123456
repl_user=repl
report_script=/usr/local/bin/send_report
secondary_check_script=/usr/local/bin/masterha_secondary_check -s server1 -s server2 --username=root --master_host=server1 --master_ip=172.25.254.41 --master-port=3306
ssh_user=root
[server1]
hostname=172.25.254.41
port=3306
[server2]
hostname=172.25.254.42
port=3306
candidate_master=1
check_repl_delay=0
[server3]
hostname=172.25.254.43
port=3306
设置relay log的清除方式(在每个slave节点上):
在slave 172.25.254.42操作:
mysql -uroot -p123456 -e "set global relay_log_purge=0"
在slave2 172.25.254.43操作:
mysql -uroot -p123456 -e "set global relay_log_purge=0"
最后使用
masterha_check_repl --conf=/etc/masterha/app1.cnf
测试
可以将master搞down,然后查看slave是否被选举为master