linux部署MHA集群

环境布置:

 主机1:
      master:192.168.4.1  VIP:192.168.4.100
 主机2:
      备用master1:192.168.4.2
 主机3:
      备用master2:192.168.4.3
 主机4:
      slave1:192.168.4.4     //用于从库
 主机5:
      slave2:192.168.4.5    
 主机6:
      manager:192.168.4.6   //用于管理MHA

步骤1:配置半同步模式

主机1-主机5共同操作:

mysql>show variables like “have_dynamic_loading”; // 查看是否允许加载动态模块

主机1-3共同操作:

vim /etc/my.cnf
添加以下内容:
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
relay-log-purge=off //关闭自动删除中继日志
relay-log=/data/mysql/relay-log/relay-log //中继日志放置位置

server_id=11 //每台主机数值+1
log-bin=/data/mysql/log/master11 //开启binlog日志
binlog-format=”mixed”

主机4-5共同操作:

只作为从库只需要含有半同步从库插件即可

作为从库通过读取主库binlog日志到中继日志再进行数据导入,是不记录在本身的binlog日志里,所以需要开启中继日志记录binlog日志功能

plugin-load=“rpl_semi_sync_slave=semisync_slave.so”;
rpl-semi-sync-slave-enabled=1
relay-log-purge=off //关闭自动删除中继日志
relay-log=/data/mysql/relay-log/relay-log //中继日志放置位置
log_slave_updates //开启记录中继日志到binlog日志功能

server_id=14 //每台主机数值+1
保存并重启服务

步骤2:查看是否启动的模块

主机1-5共同操作:

mysql>show variables like “rql_semi_sync_%_enabled”;
显示:
| Variable_name | Value |
±----------------------------------------------±------+
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_slave_enabled | ON |
±---------------------------------------------±------+
*192.168.4.1-3显示以上内容
*192.168.4.4-5 只显示rpl_semi_sync_slave_enabled ON

步骤3:创建主从同步授权用户

主机1操作:

mysql>grant replication slave on . to repluser@”%” identified by “123456”;
mysql>show master status; //查看master状态

ifconfig ens33:1 192.168.4.100 //设置VIP

步骤4:设置主从同步

主机2-5操作:

mysql>change master to
master_host=”192.168.4.1”,
master_user=”repluser”,
master_password=”123456”,
master_log_file=”master12.000001”, //根据主服务器的show master status;
master_log_pos=441; //根据主服务器的show master status;

步骤5:测试版主从同步

主机2操作

mysql>start slave; //启动slave
mysql>show slave status\G; //查看slave状态
显示:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
*显示两个线程开启成功,表示主从连接成功

主机1操作

mysql>create database test1;
显示:
Query OK, 1 row affected (0.00 sec)
*查看192.168.4.2也有test1库生成

主机2操作

mysql>stop slave;

主机1操作

mysql>create database test2
显示:
Query OK, 1 row affected (10.00 sec) //花费的时间过长,说明半同步设置成功

然后将其他的服务器全部开启slave模式

步骤6:设置SSH

主机1-5共同操作:相互设置密钥

ssh-keygen
ssh-copy-id //除自己以外的所有ip

步骤7:安装依赖包

主机1-5共同操作:

yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y

步骤8:安装MHA Manager和MHA Node

下载位置:
https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads
在这里插入图片描述

主机6操作:下载”MHA Manager 0.56 RHEL6”到/root/下

rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

主机1-5操作:下载”MHA Node 0.56 rpm RHEL6”到/root/下

rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

步骤9:集群环境准备

主机6操作:创建MHA配置文件

[server default]
manager_log=/etc/mha/manager.log //生成MHA日志文件
manager_workdir=/etc/mha //配置MHA工作路径
master_binlog_dir=/data/mysql/log //告知MHA manager的binlog日志
master_ip_failover_script=/etc/mha/Master_ip_failover //VIP切换脚本

user=root //设置当前主库数据库的用户名和密码,用于监视主库服务器
password=123456

ping_interval=1
remote_workdir=/mydata/mha_ma //远程mysql在切换时binlog保存位置

repl_password=123456 //监控mysql主从用户
repl_user=repluser

ssh_port=22 //ssh用户
ssh_user=root

[server1]
candidate_master=1
hostname=192.168.4.1
master_binlog_dir=/data/mysql/log
port=3306

[server2]
candidate_master=1
hostname=192.168.4.2
master_binlog_dir=/data/mysql/log
port=3306

[server3]
candidate_master=1
hostname=192.168.4.3
master_binlog_dir=/data/mysql/log
port=3306

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

[server5]
hostname=192.168.4.5
no_master=1
port=3306

保存并推出

主机6操作:创建VIP切换脚本

vim master_ip_failover //此文件服务master_ip_failover
修改以下内容:
12 my $vip = ‘172.16.1.100’; #设置VIP
13 my $key = “1”;
14 my $ssh_start_vip = “/sbin/ifconfig ens32:$key $vip”; //此处的ens32为网卡
15 my $ssh_stop_vip = “/sbin/ifconfig ens32:$key down”;

保存并退出

主机1-5操作:

mkdir -p /mydata/mha //生成远端mysql在切换时binlog保存位置
添加以下内容:
vim purge_relay_log.sh //切换脚本
#!/bin/bash
. /home/mysql/.bashrc
user=root
passwd=123456
port=3306
log_dir=’/data/mysql/relay-log’
work_dir=’/data/mysql/relay-log’
purge=’/usr/bin/purge_relay_logs’

if [ ! -d $log_dir ]
then
mkdir $log_dir -p
fi

$purge --user=$user --password=$passwd --disable_relay_log_purge --port=$port --workdir=$work_dir >>\ $log_dir/purge_relay_logs.log 2>&1

保存并退出

主机1-5操作:制定定任务

chmod 755 purge_relay_log.sh //为脚本添加权限
crontab -uroot -e //周期化任务
添加一下内容:
0 17 * * 1-5 /bin/bash /root/purge_relay_log.sh //周一到周五的下午5点

主机6操作:检查MHA配置

masterha_check_ssh --conf=/etc/mha/app1.cnf //检查各个服务器的ssh
显示:
All SSH connection tests passed successfully.
表示ssh设置OK

masterha_check_repl --conf=/etc/mha/app1.cnf //检查服务器的主从
显示:
MySQL Replication Health is OK.
表示服务器主从设置OK

主机6操作:启动MHA Manager

使用命令:
masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover

使用命令:查看MHA Manager状态
masterha_check_status --conf=/etc/mha/app1.cnf
显示:
app1 (pid:298237) is running(0:PING_OK), master:192.168.4.1
启动成功

主机6操作:让Supervisor 管理MHA Manager进程

vim MysqlMhaManager.conf
添加以下内容:
[program:MysqlMhaManager]
command=masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover
Directory=/etc/mha/
autorestart=true
autostart=true
stderr_logfile=/var/log/MysqlMhaManager.err.log
stdout_logfile=/var/log/MysqlMhaManager.out.log
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
stopsignal=INT
保存并退出

systemctl start supervisor //启动supervisor服务
*启动时确保mastermhaManager服务是可以正常运行的以及是关闭的
supervisorctl status //查看supervisor服务的状态
成功后显示:
MysqlMhaManager RUNNING pid 24258, uptime 2:01:57
再查看:
masterha_check_status --conf=/etc/mha/app1.cnf //查看mha_manager的状态
成功后显示:
app1 (pid:24258) is running(0:PING_OK), master:192.168.4.1

猜你喜欢

转载自blog.csdn.net/weixin_42917630/article/details/92709281