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:sshstartvip="/sbin/ifconfigeth0:key $vip";
my sshstopvip="/sbin/ifconfigeth0:ssh_stop_vip = "/sbin/ifconfig eth0:sshstopvip="/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==sshstopvip==ssh_start_vip===\n\n”;
if ( $command eq “stop” || $command eq “stopssh” ) {