MHA高可用MySQL高可用集群
一、MHA的介绍
-
MHA是一款用于解决数据库MySQL高可用性环境下故障切换和主从提升的高可用软件。能够很好的解决单master主数据库单点故障点的问题。
-
在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中, MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
-
MHA能够在0.5-2秒内实现切换,0.5-2秒的写阻塞通常是可接受的,所以你甚至能在非维护期间就在线切换master。诸如升级到高版本,升级到更快的服务器之类的工作,将会变得更容易。
-
MHA由Manager节点和Node节点组成。
二、实验介绍
1、实验环境
服务器 | 操作系统 | IP地址 |
---|---|---|
MHA manger节点 | Linux 7.6 (64位) | 192.168.10.161/24 |
master 主节点 | Linux 7.6 (64位) | 192.168.10.100/24 |
mater slave主备节点 | Linux 7.6 (64位) | 192.168.10.156/24 |
slave 从节点 | Linux 7.6 (64位) | 192.168.10.160/24 |
- 实验规划图
2、实验目的
本案例要求通过 MHA 监控 MySQL 数据库在master故障时进行自动切换到master salve,不影响业务。
3、实验配置过程
- 配置 MySQL 一主两从
- 安装 MHA 软件
- 配置无密码认证
- 配置 MySQL MHA 高可用
- 模拟 master 故障切换
注: 所有服务器关闭selinux和防火墙。
三、实例配置MySQL(MHA)高可用过程
1、配置MySQL一主两从
- 为三台数据库服务器安装MySQL7.6
- 修改数据库的配置文件/etc/my.cnf,开启日志服务
1)修改master配置文件
[root@Mysql1 ~]# vim /etc/my.cnf
[mysqld]
server-id = 1 //数据库的身份id,不同的数据库身份id不能一样
log_bin = master-bin //开启数据库二进制文件
log-slave-updates = true //允许别的从服务器和自己同步
2)修该slave配置文件
除了两台slave数据库的server-id直段不一样,其他修改的添加的字段一样
[root@Mysql2 ~]# vim /etc/my.cnf
server-id = 2
log_bin = master-bin
relay-log = relay-log-bin //开启中继日志,同来同步数据库的二级制文件
relay-log-index = slave-relay-bin.index //开启中继日志索引
3)重启所有数据库
[root@Mysql1 ~]# systemctl restart mysqld
4)为数据库服务器建立软连接
使liunx系统识别mysql的操作命令。
[root@Mysql1 ~]# ln -s /usr/local/mysql/bin/mysql /usr/sbin/
[root@Mysql1 ~]# ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
5)为数据库服务器开启主从复制和MHA服务账户授权
mysql> grant replication slave on *.* to 'myslave'@'192.168.10.%' identified by '123';
//为主从复制账户授权
mysql> grant all privileges on *.* to 'mha'@'192.168.10.%' identified by 'manager';
//为MHA账户授权
mysql> flush privileges; //刷新授权
6)查看master数据库主从复制的,二进制文件名和同步复制的pos点
mysql> show master status;
+-------------------+----------+
| File | Position |//从服务器要同步的二进制文件名和同步的pos点
+-------------------+----------+
| master-bin.000001 | 155|
+-------------------+----------+
7)在slave数据库中同步master数据库
mysql> change master to master_host='192.168.10.100',master_user='myslave',
> master_password='123',master_log_file='master-bin.000001',
> master_log_pos=155; //同步主数据库
mysql> start slave; //开启主从复制
mysql> set global read_only=1; //设置从数据库为只读
8)查看slave数据库的 IO 和 SQL 线程是否都是 yes 代表同步是否正常。no 表示不