centos7 mysql mha架构,自动切master

环境
系统:centos7.6
数据库:5.5.60-MariaDB
MHA软件版本:mha4mysql-manager-0.56 mha4mysql-node-0.56

master 192.168.92.139
slave1 192.168.92.140
slave2 192.168.92.144
manager 192.168.92.144

一、软件安装

【1】Perl的依赖模块安装
需要所有节点安装

<1>安装epel源

yum -y install epel-release
1
<2>安装依赖包

yum -y install prel perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes perl-IO-Socket-SSL

【2】mysql数据库安装
既可yum安装也可编译安装,并且还可安装mariadb。要根据需求选择。

本文为了方便,直接使用yum安装mariadb。

需要在master及slave节点安装相同版本的数据库。

<1>mariadb安装

yum -y install mariadb*

【3】MHA节点安装
<1>下载安装包

下载后,将安装包上传到相应服务器

下载地址:https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads在这里插入图片描述
<2>安装node

每台被监控的节点都需安装

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

<2>安装manager

可单独部署在一台独立机器上,也可以部署在一台slave节点上。可用于管理多个master/slave集群, 每个master/slave集群称作一个application

在manager节点上要先安装mha4mysql-node再安装manager,可避免依赖mha4mysql-node导致的问题

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

二、添加解析(可跳过)

为了方便操作,便于观察,可以更改主机名和添加解析(可跳过)

vim /etc/hostname 改主机名,每台皆如此

vim /etc/hosts 添加解析

scp /etc/hosts IP:/etc/hosts 将解析推送到其他所有服务器

三、建立时间同步

<1>在每台执行,实现时间同步

yum -y install ntp
ntpdate cn.pool.ntp.org

四、建立多机互信

每台服务器间都要进行密钥的创建及公钥的推送

<1>创建密钥

ssh-keygen
<2>将本机的公钥复制到远程机器的authorized_keys文件中

ssh-copy-id 192.168.92.139
ssh-copy-id 192.168.92.140
ssh-copy-id 192.168.92.144

五、mysql主从配置(注意server-id要唯一)

【1】配置文件设置
各节点都要开启二进制日志及中继日志, 各从节点必须显示启用其read-only属性

<1>master节点配置文件

[mysqld]

server-id = 1 #复制集群中的各节点的id均必须唯一
log-bin = master-log
relay-log = relay-log
skip_name_resolve = ON #禁止mysql域名解析
<2>slave节点配置文件

vim /etc/my.cnf

[mysqld]
server-id = 2 #各节点的id均必须唯一
relay-log = relay-log
log-bin = master-log
read_only = 1 #只读模式
relay_log_purge = 0 #自动清空不再需要的中继日志
skip_name_resolve = ON #禁止mysql域名解析
<3>启动mariadb

systemctl start mariadb
【2】主从搭建
<1>master节点授权

在每个节点上执行。因为MHA可以切换主从,代表着每个从库都有切换为主库的可能,所以下面的授权,要在每个节点上执行。

格式:grant replication slave on . to ‘slave’@‘从库的IP’ identified by ‘密码’;

grant replication slave,replication client on . to ‘slave’@‘192.168.92.%’ identified by ‘centos’;
#创建用于同步的用户并授权

flush privileges; #刷新权限;

show master status; #查看master现在的状态,显示的file名字及position位置编号;在这里插入图片描述
<2>所有从库指向主库

在每个从库上执行

格式:change master to master_host = ‘主库的IP’, master_user = ‘设置主从时设定的主库的用户’, master_port=主库的端口, master_password=’主库设定的密码’, master_log_file = ‘主库状态的File’, master_log_pos=主库状态的Position;

change master to master_host=‘192.168.92.139’,master_user=‘slave’,master_password=‘centos’,master_log_file=‘master-log.000007’,master_log_pos=245;
在这里插入图片描述
注意:如下即为成功,如其中任意一个不为Yes即为失败。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

六、MHA配置

【1】MHA授权
在每个节点上执行,允许所有其他节点可远程访问

grant all on . to ‘MHA’@‘192.168.%’ identified by ‘mhatest’;
【2】MHA配置文件创建
要在mysql的主节点上配置,并创建相应目录及文件

可为每个application,创建相应配置文件,用于管理多个集群

<1>仅在manager节点上创建目录

作为工作目录,存放配置文件及日志

mkdir /etc/mha_master

<2>在所有node节点上创建目录

用于存放日志及二进制文件

mkdir /mydata/mha_master/mha01
<3>编写MHA配置文件

在下方会利用到前几步的授权信息及创建的目录

vim /etc/mha_master/mha01.cnf

[server default]
user=MHA #MHA管理用户
password=mhatest #MHA管理密码
manager_workdir=/etc/mha_master/mha01 #mha_master的工作目录
manager_log=/etc/mha_master/manager.log #mha_master的日志文件
remote_workdir=/mydata/mha_master/mha01 #每个远程主机的工作目录
ssh_user=root #基于ssh秘钥认证的用户
repl_user=slave #数据库用户名
repl_password=centos #数据库密码
ping_interval=1 #ping间隔时长,s为单位

[server1] #节点1
hostname=192.168.92.139 #节点1的主机ip,通常为主库IP
ssh_port=22 #节点1 的ssh端口
candidate_master=1 #将来可作为master候选主节点

[server2] #节点2
hostname=192.168.92.140 #节点2的主机ip,通常为备用主库IP
ssh_port=22 #节点2的ssh端口
candidate_master=1 #将来可作为master候选主节点

[server3] #节点3
hostname=192.168.92.144 #节点3的主机ip,通常为从库IP
ssh_port=22 #节点3的ssh端口
candidate_master=1 #将来可作为master候选主节点

在这里插入图片描述

本文为了演示,加了注释,生产中不可有空格,否则后面检测或报错

3】检测配置
<1>检测各节点ssh互相是否成功

masterha_check_ssh -conf=/etc/mha_master/mha01.cnf
如不成功,请再次进行互信操作
<2>检查数据库是否可成功的连接

masterha_check_repl -conf=/etc/mha_master/mha01.cnf
如不成功,请将MHA授权及master节点授权操作在每个数据库中执行,并检测MHA配置文件中的数据库连接的用户名及密码
【4】MHA启动
仅在manager节点上执行

<1>后台启动MHA

nohup masterha_manager -conf=/etc/mha_master/mha01.cnf &> /etc/mha_master/manager.log &
<2>查看master的状态

masterha_check_status -conf=/etc/mha_master/mha01.cnf
(可能需要等几秒)
<3>停止MHA操作(不要执行这一步,这只是提示)

如需要停止MHA,可使用如下命令或kill后台进程

masterha_stop -conf=/etc/mha_master/mha01.cnf

七、MHA故障转移

【1】MHA自动切换
启动MHA后,模拟主库故障,进行转移

<1>主库故障

进入master节点执行

pkill -9 mysql
<2>查看状态
cat /etc/mha_master/manager.log
最后一行有这个就算成功了
在这里插入图片描述
#################################################
如果后续还要回复这个架构,在新的库mysqldump导出数据,回复到原先的master,再进行主从复制架构
https://blog.csdn.net/GX_1_11_real/article/details/87521223

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值