MySQL8.0 mha 安装部署及主从切换测试

MySQL8.0 mha 安装部署及主从切换测试

1.安装mha依赖包(每台服务器都需要)

yum -y install epel-release

yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-CPAN

2.安装mha :每台服务器都需要

wget https://qiniu.wsfnk.com/mha4mysql-node-0.58-0.el7.centos.noarch.rpm

rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm

安装manager节点,只在manager上安装,这里在node3上执行

wget https://qiniu.wsfnk.com/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

rpm -ivh mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

3.配置管理节点

mkdir /etc/mha

mkdir /home/mysql_mha

vim /etc/mha/mysql_mha.cnf

[server default]

#mha访问数据库的账号与密码

user=mha

password=123456

#指定mha的工作目录

manager_workdir=/home/mysql_mha

#指定管理日志路径

manager_log=/home/mysql_mha/manager.log

#指定mha在远程节点上的工作目录

remote_workdir=/home/mysql_mha

#可以使用ssh登入的用户

ssh_user=root

ssh_port=22

#指定主从复制的mysq用户和密码

repl_user=repl

repl_password=123456

#指定检测间隔时间

ping_interval=1

#指定master节点存放binlog的日志文件的目录

master_binlog_dir=/data/mysql/log

#指定一个脚本,该脚本实现了在主从切换之后,将虚拟ip漂移到新的master上

master_ip_failover_script=/usr/bin/master_ip_failover

#指定用于二次检查节点状态的节点

secondary_check_script= /usr/bin/masterha_secondary_check -s 172.17.0.35 -s 172.17.0.29 -s 172.17.0.56

#配置集群中的节点

[server1]

hostname=172.17.0.35

port=3306

ssh_user=root

#指定该节点可以参与master选举

candidate_master=1

[server2]

hostname=172.17.0.29

#指定该节点可以参与master选举

port=3308

ssh_user=root

candidate_master=1

[server3]

hostname=172.17.0.56

port=3307

ssh_user=root

##指定该节点不参与master选举 该节点也是监控节点,所以关闭master候选

no_master=1

4.编辑vip配置文件

vim /usr/bin/master_ip_failover

#!/usr/bin/env perl

use strict;

use warnings FATAL => ‘all’;

use Getopt::Long;

my (

$command, $ssh_user, $orig_master_host, $orig_master_ip,

$orig_master_port, $new_master_host, $new_master_ip, $new_master_port

);

my $vip = ‘172.17.0.251/24’; # Virtual IP

my $key = “1”;

my sshstartvip="/sbin/ifconfigeth0:ssh_start_vip = "/sbin/ifconfig eth0:sshs​tartv​ip="/sbin/ifconfigeth0:key $vip";

my sshstopvip="/sbin/ifconfigeth0:ssh_stop_vip = "/sbin/ifconfig eth0:sshs​topv​ip="/sbin/ifconfigeth0:key down";

GetOptions(

‘command=s’ => $command,

‘ssh_user=s’ => $ssh_user,

‘orig_master_host=s’ => $orig_master_host,

‘orig_master_ip=s’ => $orig_master_ip,

‘orig_master_port=i’ => $orig_master_port,

‘new_master_host=s’ => $new_master_host,

‘new_master_ip=s’ => $new_master_ip,

‘new_master_port=i’ => $new_master_port,

);

exit &main();

sub main {

print “\n\nIN SCRIPT TEST====sshstopvip==ssh_stop_vip==sshs​topv​ip==ssh_start_vip===\n\n”;

if ( $command eq “stop” || $command eq “stopssh” ) {

$orig_master_host, $orig_master_ip, $orig_master_port are passed.

If you manage master ip address at global catalog database,

invalidate orig_master_ip here.