mysql高可用之Mha

                                           环境准备:需要四台服务器 centos7.9  数据库版本5.7.20

master01192.168.52.5主节点
master02192.168.52.6备主节点
slave01192.168.52.7从节点
manager192.168.52.10管理节点

注意:所有服务器都需要安装mysql服务,manager管理节点不用启动服务。

2.先在master01上装mysql数据库,配置ip地址,设置主机名  安装epel源,安装Mha依赖 配置hosts文件。克隆其他三台
#我这里数据库是二进制方式安装!
#配置ip地址,设置主机名

vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.52.6
GATEWAY=192.168.52.2
DNS1=114.114.114.114
hostnamectl set-hostname master01-5

#关闭防火墙和selinux

systemctl  stop  firewalld
systemctl  disabled  firewalld
vim /etc/selinux/config 
SELINUX=disabled

#安装epel源

wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/
yum makecache

#安装Mha依赖

yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Config-IniFiles ncftp perl-Params-Validate perl-CPAN perl-Test-Mock-LWP.noarch perl-LWP-Authen-Negotiate.noarch perl-devel perl-ExtUtils-CBuilder   perl-ExtUtils-MakeMaker

#配置host文件解析

cat /etc/hosts
192.168.52.5	master01-5
192.168.52.6	master02-6
192.168.52.7	slave01-7
192.168.52.10	manager01-10

注意:设置主机名一定要和hosts文件中的主机名一致!
#停止mysql服务,删除auto.cnf防止uuid冲突

/etc/init.d/mysql.server stop
rm -f /usr/local/mysql/data/auto.cnf

#关机克隆其他三台
systemctl poweroff

3.配置ssh免密登录,安装插件,配置半同步 所有的主机都要配置(master01,master02,slave01,manager不用安装插件)
#配置ssh免密登录

ssh-keygen -t rsa
for i in {master01-5,master02-6,slave01-7,manager01-10};do ssh-copy-id $i;done

#查看插件的位置,我这里在/usr/local/mysql/lib/plugin/ 
show variables like '%plugin%';


#查看是否支持动态载入
show variables like '%dynam%';


#安装插件
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; 

#配置半同步
#查看半同步配置默认是关闭
show variables like '%semi%';


#在配置文件里,配置半同步

master01配置:

vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/data/mysqld.pid
log-error=/usr/local/mysql/data/mysql.err
socket=/tmp/mysql.sock
log_bin=mysql-bin		#开启二进制日志
server_id=1				#设置server_id,不能重复
relay_log=relay-bin		#开启中继日志
relay_log_index=relay_slave_bin.index	#中继日志索引文件位置
relay_log_purge=0		#关闭清除中继日志
rpl_semi_sync_master_enabled=1	#开启半同步
rpl_semi_sync_slave_enabled=1	
rpl_semi_sync_master_timeout=1000	#设置超时时间
binlog_format=mixed		#二进制类型设置为混合类型

master02配置:

vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/data/mysqld.pid
log-error=/usr/local/mysql/data/mysql.err
socket=/tmp/mysql.sock
log_bin=mysql-bin
server_id=2
relay_log=relay-bin
relay_log_index=relay_slave_bin.index
relay_log_purge=0
rpl_semi_sync_master_enabled=1
rpl_semi_sync_slave_enabled=1
rpl_semi_sync_master_timeout=1000
binlog_format=mixed

slave01配置:

vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
pid-file=/usr/local/mysql/data/mysqld.pid
log-error=/usr/local/mysql/data/mysql.err
socket=/tmp/mysql.sock
log_bin=mysql-bin
server_id=3
relay_log=relay-bin
relay_log_index=relay_slave_bin.index
rpl_semi_sync_slave_enabled=1
binlog_format=mixed
read_only=1

配置完成重启服务:

/etc/init.d/mysql restart

#查看半同步状态
show status like ‘%rpl_semi_sync%’;

4.创建用户,做主从复制,安装部署Mha
master01,master02(创建rep和manager用户)slave只需要创建manager用户
#创建用户

grant replication client ,replication slave on *.* to rep@'192.168.52.%' identified by
'123';
grant all  on *.* to manager@'192.168.52.%' identified by '123';

#配置主从复制 master02和slave01相同操作
#查看二进制日志状态
show master status;
#master02从master01。

change master to
      master_host='192.168.52.5',
      master_user='rep',
      master_password='123',
      master_log_file='mysql-bin.000001',
      master_log_pos=761;

#启动查看状态
start slave;
show slave status\G

#安装Mha(master01,master02,slave01,manager)
操作管理节点需要两个都安装, 在3台数据库节点只要安装MHA的node节点:
上传mha4mysql-node和manager包

 下载地址:Releases · yoshinorim/mha4mysql-manager · GitHub

                   Releases · yoshinorim/mha4mysql-node · GitHub

tar   zxf  mha4mysql-node-0.58.tar.gz
cd  mha4mysql-node-0.58
perl   Makefile.PL
make  &&  make install
manager节点上操作:
tar zxf mha4mysql-manager-0.58.tar.gz 
cd mha4mysql-manager-0.58/
perl Makefile.PL 
make && make install
mkdir /etc/masterha
mkdir -p /masterha/app
mkdir /scripts
cp samples/conf/* /etc/masterha/
cp samples/scripts/* /scripts/

#配置manager文件

cat app1.cnf 
[server default]
manager_workdir=/masterha/app1
manager_log=/masterha/app1/manager.log
user=manager
password=123
ssh_user=root
repl_user=rep
repl_password=123
ping_interval=1

[server1]
hostname=192.168.52.5
port=3306
master_binlog_dir=/usr/local/mysql/data
candidate_master=1

[server2]
hostname=192.168.52.6
port=3306
master_binlog_dir=/usr/local/mysql/data
candidate_master=1

[server3]
hostname=192.168.52.7
port=3306
master_binlog_dir=/usr/local/mysql/data
no_master=1

#清空masterha_default.cnf文件
 >/etc/masterha/masterha_default.cnf
#SSH有效验证
masterha_check_ssh --global_conf=/etc/masterha/masterha_default.cnf --conf=/etc/masterha/app1.cnf 
masterha_check_repl --conf=/etc/masterha/app1.cnf 
在(master01,master02,slave01,manager)上做软链接
ln -s /usr/local/mysql/bin/* /usr/local/bin/
#启动Mha服务
nohup masterha_manager --global_conf=/etc/masterha/masterha_default.cnf --conf=/etc/masterha/app1.cnf &>/tmp/mha_manager.log &
#查看状态
masterha_check_status --conf=/etc/masterha/app1.cnf 
模拟故障
如果Mha启动失败,查看tailf /masterha/app1/manager.log日志
解决问题后删除app1.failover.complete 文件
rm -f /masterha/app1/app1.failover.complete 
重新启动Mha服务
nohup masterha_manager --global_conf=/etc/masterha/masterha_default.cnf --conf=/etc/masterha/app1.cnf &>/tmp/mha_manager.log &

到这里Mha服务已经部署完成了!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值