MySQL MHA部署 Part 7 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 |
无 |
无 |
上节我们说了MHA的故障转移,这节内容为手动切换
1 检查现有状态
我们可以先通过 show slave statusG查看从库同步是否正常
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
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Linux Lab v0.5 正式发布,功能强大,用法简单
- Kafka核心API——AdminClient API
- PyQt5 技术篇-调用颜色对话框(QColorDialog)获取颜色,调色板的调用。
- Kafka的安装与配置
- PyQt5 技术篇-如何彻底删除控件?布局移除控件方法。
- PyQt5 技术篇-设置滚动条拉动位置,scrollArea滚动条位置设置方法。
- CentOS8更换yum源后出现同步仓库缓存失败的问题
- log4j配置方式
- 基于MHA搭建MySQL Replication集群高可用架构
- PyQt5 技巧篇-解决相对路径无法加载图片问题,styleSheet通过"相对"路径加载图片,python获取当前运行文件的绝对路径。
- 基于MMM搭建MySQL Replication集群高可用架构
- Python 技术篇-按任意格式灵活获取日期、时间、年月日、时分秒。日期格式化。
- 当删库时如何避免跑路
- Python 句法错误:"SyntaxError: invalid character in identifier",原因及解决方法
- Python3 多线程问题:ModuleNotFoundError: No module named 'thread',原因及解决办法。