一、概述
MHA(Master High Availability)是一个开源的MySQL高可用性解决方案,它可以自动监测MySQL主节点的状态,并在主节点发生故障时自动将从节点提升为新的主节点,从而实现MySQL的高可用性。MHA集群通常由多个MySQL实例组成,其中一个是主节点,其余的是从节点。MHA集群可以在主节点故障时自动进行故障转移,从而保证MySQL服务的高可用性和可靠性。MHA集群的优点包括:自动化管理、高可用性、快速故障转移、易于部署和维护等。
二、工作原理
1. MHA的主要组件包括manager节点、monitor节点和各个MySQL节点。manager节点是MHA的控制节点,用于管理和监控MySQL集群的状态;monitor节点是用于监控MySQL主节点状态的节点;各个MySQL节点包括主节点和备用节点。
2. MHA的manager节点会定期向monitor节点发送心跳包,以检测monitor节点是否正常工作。如果monitor节点出现故障,manager节点会自动将monitor节点的角色切换到另一个可用的monitor节点。
3. 当MySQL主节点出现故障时,monitor节点会检测到主节点的状态变化,并向manager节点发送通知。manager节点会根据预定义的切换策略,自动将备用节点切换为新的主节点,从而实现MySQL服务的高可用性。
4. 在切换过程中,MHA会自动执行一系列的操作,包括停止原来的主节点、启动新的主节点、更新DNS记录等。这些操作可以确保MySQL服务的连续性和数据一致性。
三、准备工作
1、三台虚拟机能互相通联
2、每台虚拟机关闭防火墙
3、每台虚拟机安装MHA、SSH、Mariadb
四、配置
1、配置IP节点
vim /etc/hosts 打开自带的域名服务
写入
192.168.1.250 syh1
192.168.1.251 syh2
192.168.1.252 syh3
2、配置免密登录
ssh-keygen -t rsa 生成密钥(每一台服务器都要生成)
ssh-copy-id -i .ssh/id_rsa.pub root@syh1 复制密钥(在主、从服务器中复制管理服务器的密钥)
scp .ssh/authorized_keys root@syh2:.ssh/ 将密钥上传到syh2、syh3
生成密钥
复制密钥
上传密钥
测试(ok 成功了)
3、配置主从复制
首先配置主服务器(syh2)
yum -y install epel-release 安装epel源
yum -y install mariadb mariadb-server 安装mariadb
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 安装mha
vim /etc/my.cnf 修改配置文件
server-id = 1 ID为1 表示这是主服务器
log-bin = master-log 启用这个二进制文件
relay-log = relay-log
skip_name_resolve
systemctl start mariadb 启动服务
mysql 进入数据库
grant replication slave on *.* to ‘slave’@'%' identified by '123'; 授权用户给从库使用 密码是123
MariaDB [(none)]> grant all on *.* to ‘mha’@'%' identified by '123'; 授权用户给mariadb使用密码是123
show master status; 查看主服务器的位置信息
配置从服务器
yum -y install mariadb mariadb-server epel-release 安装mariadb epel
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm 安装mha
vim /etc/my.cnf 配置从服务器
server-id = 2 id为2 表示这是从服务器
relay-log = relay-log 开启这个二进制文件
log-bin = master-log
read_only = ON
relay_log_purge = 0
skip_name_resolve
log_slave_updates = 1
systemctl start mariadb 开启服务
mysql 进入数据库
change master to master_host='192.168.1.251',master_user='slave',master_password='123',master_log_file='master-log.000003',master_log_pos=529; 指定主服务器的信息
start slave; 开启从服务器
grant all on *.* to ‘slave’@'%' identified by '123'; 授权给mha服务器使用
配置manager管理服务器
yum -y install mariadb mariadb-server epel-release 安装mariadb epel
yum -y install mha4mysql-node-0.56-0.el6.noarch.rpm mha4mysql-manager-0.56-0.el6.noarch.rpm
安装mha
mkdir /etc/mha_master
vim /etc/mha_master/mha.cnf 创建manager配置文件
[server default]
user=mha mha的用户
password=123 用户密码
manager_workdir=/etc/mha_master/app1 管理节点上的工作路径
manager_log=/etc/mha_master/manager.log 日志路径
remote_workdir=/mydata/mha_master/app1 被管理节点的工作路径
ssh_user=root 管理工具连接用户的名称
repl_user=slave 管理工具连接从用户的密码
repl_password=123 管理工具连接用户的密码
ping_interval=1 管理工具检测MySQL主从复制状态的时间间隔
[server1] 主节点
hostname=192.168.1.251 主节点IP
ssh_port=22 主节点端口
candidate_master=1
[server2] 从节点
hostname=192.168.1.252 从节点IP
ssh_port=22 从节点端口
candidate_master=1
masterha_check_ssh --conf=/etc/mha_master/mha.cnf 对各个节点进行检测
masterha_check_repl --conf=/etc/mha_master/mha.cnf 检查管理的MySQL复制集群的连接配置参数是否OK