使用MHA实现MySQL/MariaDB高可用

本篇介绍MHA部署过程,MHA工作原理请看 这里

一、作业环境

  • 作业系统:CentOS 7.7
服务器角色 IP地址 主机名 应用程式分布
MHA Manager 172.50.1.119 basic-platform Manager, node, mariadb
MHA Node & MySQL Master 172.50.1.107 nacos-mha-s1 node, mariadb
MHA Node & MySQL Slave1 172.50.1.108 nacos-mha-s2 node, mariadb
MHA Node & MySQL Slave2 172.50.1.109 nacos-mha-s3 node, mariadb

二、让我们开始吧

MHA 安装包托管在 Google Code 上,也可在 GitHub 上下载 mha-managermha-node 安装包

1.依赖环境

如果你准备的是一台全新的服务器,建议对服务器进行常用基础环境包的安装

  • MHA 是用 Perl 编写的,需要安装 Perl 依赖 ( Tips: 如果你的服务器在中国,那么建议将 YUM 源设置成 中国科学技术大学源,如何设置请点击 这里)
# MHA Manager 和 MHA node 服务器都需要执行
sudo yum install perl-DBD-MySQL perl-Parallel-ForkManager perl-Log-Dispatch  perl-Config-Tiny -y

2.安装 Manager 节点

# manager 节点上也需要安装 mha-node 组件
sudo yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
sudo yum install mha4mysql-manager-0.58-0.el7.centos.noarch.rpm

3.安装 Node 节点

# mysql / mariadb 服务器上都需要安装 mha-node 组件,本实验环境总共 3 台服务器
sudo yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm

4.配置MHA Manager

  • 首先登陆 Mariadb Master, 创建 mha 用户并授权
CREATE USER 'mha'@'%' IDENTIFIED BY 'Admin123';
GRANT ALL ON *.* TO 'mha'@'%';
FLUSH PRIVILEGES;
  • 然后登陆 MHA Manager 服务器,创建 MHA Manager 配置文件 /etc/mha/mha.cnf ,写入以下内容
[server default]
user=mha
password=Admin123
repl_user=replication  # 特别指出:这是 Mariadb 主从复制账号
repl_password=Admin123 # 特别指出:这是 Mariadb 主从复制密码
ssh_user=root
manager_workdir=/opt/mha
manager_log=/var/log/mha/mha.log
remote_workdir=/opt/mha
ping_interval=3
[server1]
# Master
hostname=172.50.1.107
[server2]
# Slave One
hostname=172.50.1.108
[server3]
# Slave Two
hostname=172.50.1.109
  • 生成密钥对,使得 MHA Manager 通过 SSH 密钥登陆 Mariadb 服务器,三台 Mariadb 服务器也可互相登陆(四台机器都需要执行)
# 1.四台服务器(一台 MHA Manager, 三台 Mariadb 都需要执行)
# 2.建议用 root 用户在 /root 目录下执行以下命令
# 3.为了图方便,每台服务器自身都做了 ssh 登陆,其实这是不严谨的
sudo ssh-keygen -t rsa
sudo ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.50.1.107 
sudo ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.50.1.108
sudo ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.50.1.109
sudo ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.50.1.119

5.校验配置是否成功

# 在 MHA Manager 服务器上,执行以下命令,进行校验配置
# 校验SSH,需要出现All SSH connection tests passed successfully代表成功。
sudo masterha_check_ssh --conf=/etc/mha/mha.cnf
# 校验主从复制,需要出现MySQL Replication Health is OK代表成功。
sudo masterha_check_repl --conf=/etc/mha/mha.cnf

6.启动 MHA 监测集群

# 校验配置成功之后,在 MHA Manager 服务器上启动 MHA 监测集群
sudo nohup masterha_manager --conf=/etc/mha/mha.cnf < /dev/null > /var/log/mha/mha.log 2>&1 &

7.查看 MHA 监测集群服务状态

sudo masterha_check_status --conf=/etc/mha/mha.cnf

8.停止 MHA 监测集群服务

sudo masterha_check_stop --conf=/etc/mha/mha.cnf

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据