MHA集群架构搭建

1.版本:

Linux版本:CentOS 7.9.2009

Mysql版本:5.7.3.3

2.服务器角色:

准备4台服务器,我这里用的虚拟机,分别是:

192.168.137.10:数据库主服务器

192.168.137.11:数据库从服务器

192.168.137.12:数据库从服务器

192.168.137.13:MHA Manage 控制器

3.master节点配置(192.168.137.10)

修改mysql配置文件:

[mysqld]
server-id = 1				//复制集群中的各节点的id均必须唯一
log_bin = mysql-bin		//开启二进制日志
relay_log = mysql_relay_bin		//开启中继日志
relay_log_purge = 0			//是否自动清空不再需要中继日志
log_slave_updates = 1       //使得更新的数据写进二进制日志中

rpl_semi_sync_master_enabled=1  //master开启半同步复制
rpl_semi_sync_master_timeout=1000  //master超时时间设置1秒
rpl-semi-sync-slave-enabled=1 //slave开启半同步复制

重启mysql服务并进入mysql命令行执行以下命令:

grant replication slave on *.* to 'root'@'%' identified by 'root'; //replication授权
grant all privileges on *.* to 'root'@'%' identified by 'root';   //privileges授权
flush privileges;  //刷新权限
show master status; //查看master信息

install plugin rpl_semi_sync_master soname 'semisync_master.so'; //安装半同步master插件
install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; //安装半同步slave插件
//安装完成后重启mysql
show variables like '%semi%'; //查看半同步复制配置信息

4.其他slave节点配置:(192.168.137.11,192.168.137.12)

修改mysql配置文件:

[mysqld]
server-id = 2				 //复制集群中的各节点的id均必须唯一 另一个从库加一
log_bin = mysql-bin		     //开启二进制日志
relay_log = mysql_relay_bin  //开启中继日志
read_only = 1				//启用只读属性
relay_log_purge = 0			//是否自动清空不再需要中继日志
log_slave_updates = 1       //使得更新的数据写进二进制日志中
    
rpl_semi_sync_master_enabled=1  //master开启半同步复制
rpl_semi_sync_master_timeout=1000  //master超时时间设置1秒
rpl-semi-sync-slave-enabled=1 //slave开启半同步复制

重启mysql服务并进入mysql命令行执行以下命令:

change master to master_host='192.168.137.10',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.0000003',master_log_pos=154; //设置主库同步

start slave;  //启动

show slave status\G; //查看slave状态

grant replication slave on *.* to 'root'@'%' identified by 'root'; //replication授权
grant all privileges on *.* to 'root'@'%' identified by 'root';  //privileges授权
flush privileges;  //刷新权限

install plugin rpl_semi_sync_master soname 'semisync_master.so'; //安装半同步master插件
install plugin rpl_semi_sync_slave soname 'semisync_slave.so'; //安装半同步slave插件
//安装完成后重启mysql
show variables like '%semi%'; //查看半同步复制配置信息

master_log_file和master_log_pos用master服务器上show master status查询出来的结果。

5.ssh互通环境配置

所有服务器节点都执行一下命令

ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.137.13

然后到192.168.137.13 manage服务器节点把authorized_keys文件发送到其他服务器上:

cd .ssh/
cat authorized_keys 
scp authorized_keys root@192.168.137.10:~/.ssh/
scp authorized_keys root@192.168.137.11:~/.ssh/
scp authorized_keys root@192.168.137.12:~/.ssh/

6.MHA安装配置

MHA rpm包下载地址:

https://github.com/yoshinorim/mha4mysql-manager/releases https://github.com/yoshinorim/mha4mysql-node/releases

在所有服务器节点都安装mha node。

yum install perl-DBD-MySQL -y
rpm -ivh mha4mysql-node-0.58-0.el7.centos.noarch.rpm

在192.168.137.13服务器上安装mha manager。

yum install -y epel-release
yum install -y perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
rpm -ivh /iba/software/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm 

mha manager配置文件:

mkdir /etc/mha_master
vim /etc/mha_master/mha.cnf
#通用配置
[server default]
#mha管理用户
user=root
#mha管理密码
password=root
#mha_master自己的工作路径
manager_workdir=/etc/mha_master/app1
#mha_master自己的日志文件
manager_log=/etc/mha_master/manager.log
#每个远程主机的工作目录
remote_workdir=/mydata/mha_master/app1
#master的binlog文件目录
master_binlog_dir=/usr/local/mysql/data
#基于ssh的密钥认证
ssh_user=root
#数据库用户名 可以单独建立mha专用的用户
repl_user=root
#数据库密码
repl_password=root
#ping间隔时长
ping_interval=1
#节点1
[server1]
#节点1主机地址
hostname=192.168.137.10
#节点1的ssh端口
ssh_port=22
#将来可不可以成为master候选节点/主节点
candidate_master=1
[server2]
hostname=192.168.137.11
ssh_port=22
candidate_master=1
[server3]
hostname=192.168.137.12
ssh_port=22
candidate_master=1

配置完成后对节点进行检测:

masterha_check_ssh -conf=/etc/mha_master/mha.cnf

可能出现错误:

Can’t exec “mysqlbinlog”: 没有那个文件或目录 at /usr/share/perl5/vendor_perl/MHA/BinlogManager.pm line 106.
​ 在所有mysql服务器节点上都创建一下软连接:

ln -s /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog

sh: mysql: 未找到命令
​ 在所有mysql服务器节点上建立软连接:

ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

启动mha manage:

nohup masterha_manager -conf=/etc/mha_master/mha.cnf &> /etc/mha_master/manager.log &

启动成功以后,查看一下 master 节点的状态:

masterha_check_status -conf=/etc/mha_master/mha.cnf

停止:

masterha_stop -conf=/etc/mha_master/mha.cnf
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值