MySQL8搭建MHA一主两从

一、介绍

MHA(Master High Availability)是MySQL高可用解决方案,用perl语言开发的管理工具,轮询探测MySQL主结点可用性,发现故障,自动转移故障,选一从结点提升为新的主结点,接替旧的主结继续对外提供服务,此过程对应用来说是透明的。在MHA中,MySQL主从高可用本质不变,仍是利用binlog发送到从结点,再relaylog重放实现数据同步,它是MySQL主从外挂,在故障情况下,主从手工切换工作自动化。

MHA支持MySQL一主多从,但MySQL结点至少3个,也只支持一次故障转移,在故障转移后MHA管理进程退出,如要重新将旧主结点纳入MySQL集群,只能手工操作,不能自动完成。

注意:MHA上次更新在2018年3月,距今时间很长了。

二、架构

MHA分为管理结点和数据结点两部分,MHA管理结点到MySQL结点,网络要连通,可以与MySQL主机共用,也可以分开,可能是一个也可以是多个,MHA数据结点必须与MySQL共用主机。

三、搭建前置准备

3.1 环境准备

OS: CentOS 7.9

DB: MySQL 8.0.23

MHA: v0.58

3.2 主机规划

主机IP数据库身份MHA类型
node1172.17.0.2数据结点
node2172.17.0.3从1数据结点
node3172.17.0.4从2管理结点

四、搭建

实现MHA管理mysql一主多从,先搭建一主多从,再搭建MHA;

4.1 主从搭建

4.1.1 主my.cnf配置

在my.cnf中[mysqld]下方新增配置

server_id=1
log_bin=master-binlog
relay-log = relay-log

4.1.2 从1 my.cnf配置

在my.cnf中[mysqld]下方新增配置

server_id=2
log-bin = master-log
log-slave-updates=1
relay-log = relay-log

4.1.3 从2 my.cnf配置

在my.cnf中[mysqld]下方新增配置

server_id=3
log_bin=master-binlog 
log-slave-updates=1 
relay-log = relay-log

4.1.4 启动数据库

systemctl start mysqld

4.1.5 MHA管理账号创建

CREATE USER 'mha'@'%' IDENTIFIED BY 'Node-2022';
GRANT ALL PRIVILEGES ON *.* TO 'mha'@'%';

4.1.6 主从复制账号创建

CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'Node-123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

4.1.7 建立一主两从复制

show master status;

从1、从2

根据在主结点查询出来的值,调整MASTER_LOG_FILE='master-binlog.00002'和MASTER_LOG_POS=196,再执行下方内容;

CHANGE MASTER TO MASTER_HOST='node1', MASTER_USER='repl', MASTER_PASSWORD='Node-123456', MASTER_LOG_FILE='master-binlog.00002', MASTER_LOG_POS=196;
start slave;
show slave status;

4.2 主机免密互信

主、从1和从2

ssh-keygen
for i in node1 node2 node3; do ssh-copy-id -i /root/.ssh/id_rsa.pub %i;done

4.3 MHA部署

4.3.1 部署数据结点

主1、从1和从2

yum install -y perl-DBD-MySQL
yum -y install https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm

4.3.2 部署管理结点

从2

yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes epel-release
yum -y install https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

4.3.3 编写配置文件

从2

创建/etc/mha/目录,再在文件mysql-mha.conf 写入如下内容

[server default]
user=mha
password=Node-2022
manager_workdir=/home/mha
manager_log=/home/mha/manager.log
remote_workdir=/home/mha
ssh_user=root
repl_user=repl
repl_password=Node-123456
ping_interval=1
master_binlog_dir=/var/lib/mysql
ssh_port=22
[server1]
hostname=node1
candidate_master=1
[server2]
hostname=node2
candidate_master=1
[server3]
hostname=node3
candidate_master=1
no_master=1

4.3.4 验证主机免密互信

从2

masterha_check_ssh --conf=/etc/mha/mysql-mha.conf 

4.3.5 验证MySQL复制

从2

masterha_check_repl --conf=/etc/mha/mysql-mha.conf 

4.3.6 启动MHA

从2

nohup masterha_manager --conf=/etc/mha/mysql-mha.conf &

4.3.7 检查MHA状态

从2

masterha_check_status --conf=/etc/mha/mysql-mha.conf

4.4 故障验证

4.4.1 终止主结点MySQL进程

pkill mysqld

4.4.2 检查MHA日志

从2

less /home/mha/manager.log

4.4.3 检查从1和从2结点复制状态

从1、从2

show slave status\G
要在MySQL搭建MHAMySQL Master High Availability),需要执行以下步骤: 1. 在所有MySQL服务器上创建一个MHA管理账号,并赋予其所有权限。在MySQL命令行中执行以下语句: ``` mysql> grant all privileges on *.* to 'root'@'192.168.1.%' identified by '123456'; mysql> flush privileges; ``` 如果是在slave服务器上安装的manager,则需要创建一个以本机hostname名连接的账号,以确保masterha_check_repl测试通过。在MySQL命令行中执行以下语句: ``` GRANT ALL PRIVILEGES ON *.* TO 'root'@'master(主机名)' IDENTIFIED BY '123456'; ``` 2. 安装MHA软件包。在MHA节点服务器上执行以下命令: ``` cd /opt tar zxvf mha4mysql-manager-0.57.tar.gz cd mha4mysql-manager-0.57 perl Makefile.PL make && make install ``` 3. 在manager节点上测试MySQL主从连接情况。在命令行中执行以下命令: ``` masterha_check_repl -conf=/etc/masterha/app1.cnf ``` 如果最后出现"MySQL Replication Health is OK"字样,说明连接正常。 请注意,以上步骤仅为搭建MHA的基本步骤,具体操作可能会因环境和需求而有所不同。建议参考MHA的官方文档或相关教程进行详细配置和操作。 #### 引用[.reference_title] - *1* [MySQL高可用架构之基于MHA搭建](https://blog.csdn.net/weixin_34137799/article/details/93427145)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [MySQL——MHA搭建](https://blog.csdn.net/qq_45773660/article/details/118445729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值