往期专题请查看www.zhaibibei.cn
这是一个坚持Oracle,Python,MySQL原创内容的公众号
实验环境
此次实验的环境如下
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 | 无 | 无 |

上节我们说了MHA的故障转移,这节内容为手动切换
1 检查现有状态
我们可以先通过 show slave status\G查看从库同步是否正常
2 打开管理节点日志
我们通过如下命令事实查看切换功臣
tail -f /etc/mha/manager/mha.log
3.执行手动切换
首先需要关闭MHA的管理进程
root> masterha_stop -conf=/etc/mha/mha.conf
之后我们通过如下命令关闭主库
masterha_master_switch -master_state=alive –orig_master_is_new_slave –conf=/etc/mha/mha.conf
-master_state=alive 代表告诉MHA原master还是存活的,不需要将其从配置文件删除
–orig_master_is_new_slave 参数代表原master会自动同步新的master
还有一些其他的参数如下
-running_updates_limit 如果主库的写操作时间超过了该参数,则退出切换
–interactive=0 代表直接确认,不需要输入YES
4 日志分析
这时我们查看你管理阶段的日志输出
4.1 检查配置文件并确认

上图可以看到需要确认在确认前是否执行flush no_write_to_inlog tables 语句
这里输入YES
4.2 切换前确认

从上图可以看出,mha重新读取配置文件并确认数据库状态
这里确认是否需要从14.29切换至14.30
这里输入YES
4.3 切换阶段
之后就是正式的切换过程,简单概括如下
执行master_ip_online_change时当前master不可写
新的主库设置只读
旧的主库设置只读
禁用原主库VIP
旧主库设全局锁
获取新主库master信息
新主库设置VIP
新主库取消只读
异步从库重新同步至新主库
原主库释放全局锁
原主库同步至新主库

以上就是一个完整的手工迁移过程,这时可以手动查看各节点信息
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
可点击阅读原文获得更好的阅读体验,推荐在PC端阅读
也可在公众站内搜索中回复 mha 搜索相关内容
或直接打开个人网页搜索
http://www.zhaibibei.cn
往期专题包括:
Python 自动化运维
MySQL 安装
mysqldump命令详解
mysqlbinlog命令详解
xtrabackup工具详解
打造属于自己的监控系统
Python爬虫基础
Oracle awr报告全解析
Oracle ASM全解析
Oracle Data Guard全解析
Oracle ClusterWare全解析
Oracle常见参数解析
Oracle常见故障处理
Oracle SQL优化案例

觉得文章不错的欢迎关注,转发,收藏~




