高可用模式下的故障切换,基于主从复制。
单点故障和主从复制不能切换的问题。
至少需要三台。
故障切换过程0-30秒
vip地址,根据vip地址所在的主机,确定主备。
主 vip
备 vip
主和备不是优先级确定的,主从复制的时候就确定了,备是在MHA的过程中确定。
MHA的组件:
MHA NODE 数据节点,每台mysql和管理服务器都要安装 监控服务器状态以及收集数据
MHA的 manager 管理节点
管理mysql的高可用集群
可以单独部署在一台独立的服务器,也可以部署多个。
实现主备之间切换,主发生故障,切换到备。
MHA的特点:
1、manager来实现主备切换
2、数据同步还是依靠二进制日志,最大程度上保证数据的完整
3、半同步的方式实现数据的完整性
支持一主多从的架构,至少要三台。
实现MySQL的高可用
一主两从
搭建完成MHA的架构
主备之间的切换
故障恢复
4台机器
master 192.168.124.10 MySQL8.0 node组件
master 192.168.124.10 MySQL8.0 node组件
master 192.168.124.10 MySQL8.0 node组件
管理节点 192.168.233.20 node组件
先修改各个主机的主机名
hostnamectl set-hostname master
hostnamectl set-hostname slave1
hostnamectl set-hostname slave2
修改 master、slave1、slave2 节点的 Mysql主配置文件/etc/my.cnf
master
log_bin = master-bin:
用于记录主服务器上的更改操作的日志文件。
这个配置用于主服务器,将生成的二进制日志文件保存为"master-bin"(可以是其他自定义的名称)
log-slave-updates = true:
从服务器是否要记录它自己执行的更改操作到自己的二进制日志文件中。
设置为"true"表示从服务器会记录自己执行的更改操作,将其写入从服务器的二进制日志文件中。
slave1
log_bin = master-bin:
指定主服务器(master)的二进制日志文件名称,用于记录主服务器上的更改操作的日志文件。
relay-log = relay-log-bin:
指定从服务器的中继日志文件名称,即用于记录主服务器的二进制日志在从服务器上执行的中继日志。
从服务器会读取主服务器的二进制日志并将其记录到中继日志中。这个配置用于从服务器。
relay-log-index = slave-relay-bin.index:
指定从服务器的中继日志索引文件的名称,该索引文件用于跟踪中继日志文件的位置和顺序。
通过这个索引文件,从服务器知道哪个中继日志文件是下一个要读取和执行的。这个配置用于从服务器。
slave2
slave2不用设置master,指定主的备服务器为slave1即可。(永远的备胎)
在 master、slave1、slave2 节点上都创建两个软链接
ln -s /usr/local/mysql/bin/mysql /usr/sbin/
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin/
配置 mysql 一主两从
master
CREATE USER 'myslave'@'192.168.233.%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.233.%';
#manager 使用
CREATE USER 'mha'@'192.168.233.%' IDENTIFIED WITH mysql_native_password BY 'manager';
GRANT ALL PRIVILEGES ON *.* TO 'mha'@'192.168.233.%' WITH GRANT OPTION;
#防止从库通过主机名连接不上主库
CREATE USER 'mha'@'master' IDENTIFIED WITH mysq