MySQL案例--磁盘空间不足&MTS Group recovery失败

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: -------------------------------------------------------------------------------------------------正文-----------------------------------...

-------------------------------------------------------------------------------------------------正文---------------------------------------------------------------------------------------------------------------
线上业务,最后一次内测阶段;
背景:MySQL-5.7.12
问题发生的现象:
收到报警信息,业务主库A的心跳检测失败,将备库B升级为业务主库;
问题发生的原因:
业务主库A的数据文件目录的磁盘空间剩余量为0%;
问题解决的过程:
磁盘空间写满以后,DML语句无法将数据变更落盘,因此导致业务主库不可用;
所以处理方式也很简单,清理一部分空间以后,purge掉了一些已经备份过的binlog
不过在处理中发现一个问题,replication slave在报错;
查看mysql的error-log,可以看到如下信息:




与此同时,不管是start slave还是change master都无法完成,会在error-log中不断的刷新类似的错误信息;

由于业务主库A降级是在磁盘空间写满以后,所以可以确认备库B上的业务操作不可能会在A上面执行,两个库之间不会有一致性的问题;
于是选择了reset slave all+change master的方式,重新恢复了同步;

故障报告写完以后,再详细研究一下这种现象的原因:
找到一个bug记录:发生于MySQL-5.6
http://bugs.mysql.com/bug.php?id=77496
并且在5.7.12中也发现过:
https://bugs.mysql.com/bug.php?id=80102

在comment中,提到了relay_log_recovery=ON和
slave-parallel-type=LOGICAL_CLOCK时会出现这个问题;
恰好正在出问题的库也是这种设置;

发生错误的原因:
基于在5.6的Group Commit特性,5.7中实现了Mutil-Thread-Slave的特性,多个线程会同时复现relay-log中, 同一组的事务;
因此
multi-threaded replication slave在运行过程中,如果意外的停止了,由于无法确认事务的一致性,在开启了relay_log_recovery的情况下,会出现如截图中的信息;

官方推荐的恢复步骤:
1.
设置
relay_log_recovery=0;
2.启动slave的时候,带上特殊命令:
START SLAVE UNTIL SQL_AFTER_MTS_GAPS
3.设置relay_log_recovery=1;
非常重要的一点:relay_log_recovery不是一个动态的参数,需要重启数据库实例;


这个问题在5.7.13得到了修复,整个操作步骤会在重启的时候自动进行;重启的时候...重启的...重启...

虽然和bug文档以及官方描述的场景不同,不过上文中出现的情况应该是同一个原因造成的;
好在能够确认A库上的multi-threaded replication slave不可能出现事务不一致的情况,所以就简单粗暴的清除了slave的信息,然后重新进行了同步;

PS:GTID大法好~

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
50 3
|
1月前
|
SQL 关系型数据库 MySQL
案例剖析:MySQL唯一索引并发插入导致死锁!
案例剖析:MySQL唯一索引并发插入导致死锁!
114 0
案例剖析:MySQL唯一索引并发插入导致死锁!
|
1月前
|
SQL 关系型数据库 MySQL
案例剖析,MySQL共享锁引发的死锁问题!
案例剖析,MySQL共享锁引发的死锁问题!
|
1月前
|
消息中间件 关系型数据库 MySQL
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
151 0
|
30天前
|
关系型数据库 MySQL 数据库
一个 MySQL 数据库死锁的案例和解决方案
本文介绍了一个 MySQL 数据库死锁的案例和解决方案。
67 3
|
1月前
|
存储 关系型数据库 MySQL
基于案例分析 MySQL 权限认证中的具体优先原则
【10月更文挑战第26天】本文通过具体案例分析了MySQL权限认证中的优先原则,包括全局权限、数据库级别权限和表级别权限的设置与优先级。全局权限优先于数据库级别权限,后者又优先于表级别权限。在权限冲突时,更严格的权限将被优先执行,确保数据库的安全性与资源合理分配。
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
63 2
zabbix agent集成percona监控MySQL的插件实战案例
|
3月前
|
存储 关系型数据库 MySQL
MySQL bit类型增加索引后查询结果不正确案例浅析
【8月更文挑战第17天】在MySQL中,`BIT`类型字段在添加索引后可能出现查询结果异常。表现为查询结果与预期不符,如返回错误记录或遗漏部分数据。原因包括索引使用不当、数据存储及比较问题,以及索引创建时未充分考虑`BIT`特性。解决方法涉及正确运用索引、理解`BIT`的存储和比较机制,以及合理创建索引以覆盖各种查询条件。通过`EXPLAIN`分析执行计划可帮助诊断和优化查询。
|
4月前
|
缓存 监控 关系型数据库
MySQL PXC 集群死锁分析案例
前不久一个系统死锁导致部分业务受到影响,今次补上详细的节点日志分析过程。
96 1
|
4月前
|
存储 关系型数据库 MySQL

热门文章

最新文章

下一篇
无影云桌面