当前位置: 首页 > news >正文

mysql高可用架构之MHA部署(一)(保姆级)

干货全拿走,照着做就能实现的实验。
【写在前面】
本教程主要实现MHA在mysql主库宕掉的时候由从库顶替,后续会出对应的浮动IP、告警邮件的配置教程。
MHA相关知识见我前面博客MySQL MHA(Master High Availability)高可用方案详解
mysql主从复制知识见我前面博客mysql主从配置(保姆级)
这里mysql主从基于GTID配置的
环境介绍
在这里插入图片描述

1、配置MySQL主从复制(基于GTID)

  • mysql配置文件

主要关注server_id不要一致,gtid_mode=ON
enforce_gtid_consistency=ON开启

主库:【10.0.0.60】

[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/data/mysql/mysql.sock
server_id=60
port=3306
autocommit=0
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_format = ROW  # 或 STATEMENT、MIXED
log_bin=/data/mysql/mysql-bin
log_error=/data/mysql/mysql_error.log
slow_query_log = 1
slow_query_log_file = /data/mysql/data/slow.log
long_query_time = 0.1
log_queries_not_using_indexes = 1[mysql]
socket=/data/mysql/mysql.sock[client]
socket=/data/mysql/mysql.sock

从库:【10.0.0.61】

[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/data/mysql/mysql.sock
server_id=61
port=3306
autocommit=0
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_format = ROW  # 或 STATEMENT、MIXED
log_bin=/data/mysql/mysql-bin
log_error=/data/mysql/mysql_error.log
slow_query_log = 1
slow_query_log_file = /data/mysql/data/slow.log
long_query_time = 0.1
log_queries_not_using_indexes = 1[mysql]
socket=/data/mysql/mysql.sock[client]
socket=/data/mysql/mysql.sock

从库:【10.0.0.62】

[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/mysql/data
socket=/data/mysql/mysql.sock
server_id=62
port=3306
autocommit=0
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_format = ROW  # 或 STATEMENT、MIXED
log_bin=/data/mysql/mysql-bin
log_error=/data/mysql/mysql_error.log
slow_query_log = 1
slow_query_log_file = /data/mysql/data/slow.log
long_query_time = 0.1
log_queries_not_using_indexes = 1[mysql]
socket=/data/mysql/mysql.sock[client]
socket=/data/mysql/mysql.sock
  • 构建主从

master:【10.0.0.60】
slave:【10.0.0.61】【10.0.0.62】

在主节点【10.0.0.60】创建复制用户
登录mysql执行

grant replication slave on  *.*  to repl@'%'  identified by '2544'  ;

【10.0.0.61】【10.0.0.62】都执行
登录mysql执行

CHANGE MASTER TOMASTER_HOST='10.0.0.60',MASTER_USER='repl',MASTER_PASSWORD='2544',
MASTER_AUTO_POSITION=1;
  • 启动从库复制
mysql>START SLAVE;
  • 查看主从复制状态正常
mysql> show slave status\G

返回值中主要查看

...
Master_Host: 10.0.0.60
...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

主库为10.0.0.60,两个Yes则主从复制部署完成

2、MHA高可用

2.1搭建MHA高可用

(1)配置关键程序——软连接
所有节点都执行

ln -s /application/mysql/bin/mysqlbinlog   /usr/bin/mysqlbinlog
ln -s /application/mysql/bin/mysql  /usr/bin/mysql

(2)配置互信(既免密登录)
也可参考我前面的博客ssh免密登录
在【10.0.0.60】节点操作:

[root@mysql_0 ~]# rm -rf /root/.ssh
[root@mysql_0 ~]# ssh-keygen
[root@mysql_0 ~]# cd /root/.ssh/
[root@mysql_0 .ssh]# mv id_rsa.pub  authorized_keys
[root@mysql_0 .ssh]# scp -r /root/.ssh/ 10.0.0.61:/root
[root@mysql_0 .ssh]# scp -r /root/.ssh/ 10.0.0.62:/root

各个节点验证
第一次登录需要yes
【10.0.0.60】

ssh 10.0.0.60  date
ssh 10.0.0.61  date
ssh 10.0.0.62  date

【10.0.0.61】

ssh 10.0.0.60  date
ssh 10.0.0.61  date
ssh 10.0.0.62  date

【10.0.0.62】

ssh 10.0.0.60  date
ssh 10.0.0.61  date
ssh 10.0.0.62  date

3、安装软件包

3.1 安装依赖包

所有节点安装依赖:

yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

3.2 安装 MHA 软件(所有节点)

数据库节点安装 node 包(mha4mysql-node-0.58.tar.gz)

下载安装包(可从官网或镜像站获取)

wget https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58.tar.gz[root@mysql_0 tools]# scp mha4mysql-node-0.58.tar.gz 10.0.0.61:/server/tools/
[root@mysql_0 tools]# scp mha4mysql-node-0.58.tar.gz 10.0.0.62:/server/tools/tar zxvf mha4mysql-node-0.58.tar.gz
cd mha4mysql-node-0.58
perl Makefile.PL

————————————————————————————————
报错的话

  • 安装CPAN
yum install -y perl-CPAN
  • 重新配置 CPAN(首次使用时)

安装完成后,首次运行 CPAN 需初始化配置:

perl -MCPAN -e shell

出现提示时,输入 yes 选择自动配置(默认选项即可)。
配置完成后,输入 quit 退出 CPAN 交互界面。

  • 再次执行 MHA 安装命令

回到 MHA 节点包的解压目录,重新运行:

perl Makefile.PL
make && make install

————————————————————————————————

make && make install

【10.0.0.62】上面操作

  • 管理节点安装 manager 包
wget https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58.tar.gz
tar zxvf mha4mysql-manager-0.58.tar.gz
cd mha4mysql-manager-0.58
perl Makefile.PL
make && make install

安装管理节点会出现很多依赖没法解决,需要一步步排错
——————————————————————————————
有个错误的核心原因是 CPAN 配置的镜像源地址无效,导致无法正常下载
Sub-Quote 模块,进而中断了安装流程。解决方法如下:

  • 一、修复 CPAN 镜像源配置(关键步骤)

进入 CPAN 交互模式:

perl -MCPAN -e shell

清除无效的镜像地址,添加正确的阿里云镜像:

先清空现有镜像列表(解决"URL must be absolute"错误)

o conf urllist clear

添加阿里云 CPAN 镜像(确保地址正确)

o conf urllist push http://mirrors.aliyun.com/CPAN/

保存配置

o conf commit

退出 CPAN

quit
  • 二、手动下载并安装 Sub-Quote 模块(避免再次下载失败)

如果镜像源配置后仍下载失败,直接手动下载安装:
bash

  • 下载模块源码包
wget http://mirrors.aliyun.com/CPAN/authors/id/H/HA/HAARG/Sub-Quote-2.006009.tar.gz
  • 解压并安装
tar zxvf Sub-Quote-2.006009.tar.gz
cd Sub-Quote-2.006009
perl Makefile.PL
make && make install
  • 返回 MHA 管理节点安装目录
    cd … # 回到之前的 mha4mysql-manager-0.58 所在目录
    —————————————————————————————————

  • 三、重新安装 MHA 管理节点

进入 MHA 管理包目录

cd mha4mysql-manager-0.58

清理之前的编译残留

make clean

重新检查依赖并生成 Makefile

perl Makefile.PL

编译安装

make && make install

该过程耗时可能久点,总会结束的,过程中大概显示界面如下

在这里插入图片描述

4、配置 MHA 【10.0.0.60】执行

4.1创建管理目录

mkdir -p /etc/mha/mysql_cluster
mkdir -p /var/log/mha/mysql_cluster

4.2 创建配置文件

vim  /etc/mha/mysql_cluster.cnf

添加以下内容:

[server default]
#MySQL用户名和密码
user=root
password=2544#SSH用户
ssh_user=root复制用户
repl_user=repl
repl_password=2544#监控时间间隔
ping_interval=2
#日志目录
manager_log=/var/log/mha/mysql_cluster/manager.log
manager_workdir=/var/log/mha/mysql_cluster
master_binlog_dir=/data/binlog[server1]
hostname=10.0.0.60
port=3306[server2]
hostname=10.0.0.61
port=3306
# 可作为候选主库
candidate_master=1  [server3]
hostname=10.0.0.62
port=3306

5、配置 MySQL 权限 【10.0.0.60】执行

主库上创建 MHA 所需用户:

  • 管理用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '2544';
  • 复制用户
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY '2544';
FLUSH PRIVILEGES;

6、验证环境【10.0.0.62】执行

  • 检查 SSH 免密登录
masterha_check_ssh --conf=/etc/mha/mysql_cluster.cnf

在这里插入图片描述

  • 检查主从复制
masterha_check_repl --conf=/etc/mha/mysql_cluster.cnf

在这里插入图片描述

7、启动 MHA Manager【10.0.0.62】执行

  • 启动
nohup masterha_manager   --conf=/etc/mha/mysql_cluster.cnf   --remove_dead_master_conf   --ignore_laster_failover   > /var/log/mha/mysql_cluster/manager.log 2>&1 &

参数说明:

nohup masterha_manager \
–conf=/etc/mha/mysql_cluster.cnf \ # 指定 MHA 集群配置文件路径
–remove_dead_master_conf \ # 故障转移后自动移除配置中失效的主库信息
–ignore_laster_failover \ # 忽略最近一次故障转移记录,强制允许再次故障转移
/var/log/mha/mysql_cluster/manager.log 2>&1 & # 日志重定向与后台运行

  • 停止
masterha_stop  --conf=/etc/mha/mysql_cluster.cnf

8、检查 MHA 状态 【10.0.0.62】执行

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

在这里插入图片描述

9、故障切换测试

  • 手动停止主库模拟故障,【10.0.0.60】执行
systemctl stop mysqld

查看切换日志,【10.0.0.62】执行

tail -f /var/log/mha/mysql_cluster/manager.log

在这里插入图片描述
可以从MHA日志看到,master已经切换为【10.0.0.61】
或者登录【10.0.0.62】mysql查看
可以看到主节点已经由之前的【10.0.0.60】变为【10.0.0.61】
在这里插入图片描述

注意事项
故障切换后,需重新配置 MHA,将新主库加入集群
生产环境建议配置自动发送报警邮件
定期备份数据库,确保数据安全
以上是 MHA 的基本安装部署流程,实际生产环境中需根据具体需求进行调整和优化。
后续会出MHA邮件报警、浮动IP配置

http://www.dtcms.com/a/465088.html

相关文章:

  • MySQL索引优化实战从慢查询到高性能的解决方案
  • 力扣每日一题(二)任务安排问题 + 区间变换问题 + 排列组合数学推式子
  • LeetCode-33.搜索旋转排序数组-二分查找
  • R语言基础入门详细教程
  • 用wordpress建立学校网站吗人工智能教育培训机构排名
  • 网站及其建设的心得体会wordpress能做大站吗
  • Java SpringMVC(二) --- 响应,综合性练习
  • 【保姆级教程】VMware Workstation Pro 17安装及基础使用
  • 网站开发源代码mvc电子商务网站建设与管理实训报告
  • Bootstrap4 提示框详解
  • 数据分析硬件配置——选购计算机
  • 在Java中,如何实现封装?
  • 【实录】使用 patch-package 修复第三方 npm 包中的 Bug
  • Warm-Flow 1.8.2版本发布|新增功能和优化,体验更稳定
  • 电池组PACK自动化生产线介绍|深圳比斯特自动化
  • 云手机的挂机功能涉及到哪些内容
  • 手机群控软件在游戏运营中的风险管控技术实现
  • js打开网站做欧美市场的网站
  • MongoDB源码delete分析oplog:从删除链路到核心函数实现
  • 运维面试准备——综合篇(一)
  • 线性代数 · 矩阵 | SVD 与 PCA 应用区别
  • 网站漏洞扫描服务个人怎么做公众号
  • 云计算综合标准化体系建设提供系统性指引
  • 阿里云智能集团首席技术官云栖大会要点总结
  • 6. React useState基础使用:useState修改状态的规则;useState修改对象状态的规则
  • 凡科做的网站怎么打不开了天津做再生资源交易的网站
  • AWS Shield 与海外高防服务器的对比分析
  • CTF攻防世界WEB精选基础入门:cookie
  • Vue 中 props 传递数据的坑
  • Descheduler for Kubernetes(K8s 重调度器)