MySQL MHA部署 Part 5 MHA部署指南

时间:2022-07-23
本文章向大家介绍MySQL MHA部署 Part 5 MHA部署指南,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

实验环境

此次实验的环境如下

  • MySQL 5.7.25
  • Redhat 6.10
  • 操作系统账号:mysql
  • 数据库复制账号:repl
  • 复制格式:基于行的复制
  • MHA版本: 0.56

IP地址

主从关系

复制账号

复制格式

11.12.14.29

主库

repl

Row-Based

11.12.14.30

从库(半同步/备master)

repl

Row-Based

11.12.14.39

从库(异步)

repl

Row-Based

11.12.14.40

管理节点

11.12.14.41

VIP

1. 管理节点配置

vim /etc/mha/mha.conf
[server default]
# mysql user and password
user=monitor
password=123456
ssh_user=root

# working directory on the manager
manager_workdir=/etc/mha/manager
manager_log=/etc/mha/manager/mha.log
ping_interval=1

# working directory on MySQL servers
remote_workdir=/etc/mha/node

# replication user
repl_user=repl
repl_password=rpl
master_binlog_dir=/oradata/datalog/mysql/binlog

## customized script
master_ip_failover_script=/etc/mha/script/master_ip_failover
master_ip_online_change_script=/etc/mha/script/master_ip_online_change
secondary_check_script=/usr/bin/masterha_secondary_check -s 11.12.14.30  -s 11.12.14.39 --user=root  --master_host=11.12.14.29 --master_ip=11.12.14.29  --master_port=3306

[server1]
hostname=shytest
candidate_master=1

[server2]
hostname=shytest2
candidate_master=1

[server3]
hostname=shytest3
no_master=1

接下来我们来解释每个参数的意义

  • manager_workdir 管理节点工作目录,mha运行时会有状态文件生成
  • masnager_log 管理节点生成的日志
  • ping_interval 管理节点检测主库状态的间隔,默认为3s
  • remote_workdir MHA node工作目录,不存在会自动建立,如果不允许创建,MHA Node自动异常退出
  • master_binlog_dir 指定主库的二进制日志位置,防止管理节点无法连接主库获取日志位置
  • master_ip_failover_script 发生切换时VIP漂移脚本
  • master_ip_online_change_script 用于手动切换时VIP的漂移
  • secondary_check_script 若管理节点无法连接主库,则调用该脚本从从库检测主库状态
  • candidate_master 指定如果主库发生故障,优先提升该节点为主库
  • no_master 指定该节点不会成为主库

2. 测试连接

2.1 测试ssh是否设置正确

管理节点

root>masterha_check_ssh --conf=/etc/mha/mha.conf

测试通过会有成功字样打印出来

2.2 测试复制是否正常

管理节点

root>masterha_check_repl --conf=/etc/mha/mha.conf

测试通过会有成功字样打印出来

通过输出我们可以看到相关架构信息

3. 启动MHA

首先我们可以检测MHA是否已启动

管理节点

root>masterha_check_status --conf=/etc/mha/mha.conf

我们在manager上执行如下命令开启MHA

管理节点

root> nohup masterha_manager    --conf=/etc/mha/mha.conf --remove_dead_master_conf &

--remove_dead_master_conf意思为当发生切换后,老的主库信息会从配置文件删除

4. 停止MHA

root> masterha_stop -conf=/etc/mha/mha.conf 

5. 设置relay log清理计划

前面我们说到我们已经取消了relay log的自动清理,这里需要在主从库3台上设置定时任务手动清理

这里首先需要在root用户环境变量中增加mysql相关路径

主从库三台

export MYSQL_HOME=/usr/local/mysql
export PATH=$HOME/bin:$MYSQL_HOME/bin:$PATH
0 4 1 * * /usr/bin/purge_relay_logs --user=monitor --password=123456 -disable_relay_log_purge --workdir=/tmp/ >> /tmp/purge_relay_logs.log 2>&1

6. 参考资料

https://www.percona.com/blog/2016/09/02/mha-quickstart-guide/

http://www.ttlsa.com/mysql/step-one-by-one-deploy-mysql-mha-cluster/

https://www.cnblogs.com/ivictor/p/5686275.html

https://andblog.cn/?p=974