Mysql数据库主从集群从库Slave因为RelayLog过多过大引起服务器硬盘爆满生产事故实战解决

Mysql数据库主从集群从库slave因为RelayLog过多过大引起从库服务器硬盘爆满生产事故实战解决

一、MySQL数据库主从集群概念

MySQL数据库主从集群是一种高可用性和读写分离的数据库架构,它基于MySQL的复制(Replication)技术来同步数据。在主从集群中,至少包含一个主数据库(Master)和一个或多个从数据库(Slave)。
•主数据库:负责处理所有的写操作(INSERT、UPDATE、DELETE等),并将这些更改记录到其二进制日志(Binary Log)中。
•从数据库:通过连接主数据库并读取主库上的二进制日志,将其中的事务事件应用到自身的数据表中,这个过程称为“中继”(Relay)。
从数据库一般只用于处理读请求(SELECT),不接受直接的写入操作。主从集群的主要优势包括:1. 数据备份与恢复:从数据库提供了一种实时的数据备份方式,如果主数据库出现故障,可以从从数据库切换为新的主数据库以保证服务连续性。
2. 负载均衡:通过读写分离,可以将读密集型的查询分发到从数据库上执行,减轻主数据库的压力,提高系统整体性能。
3. 高可用性:多从数据库可以进一步提升系统的可用性,即使部分从库宕机,其他从库仍然可以提供读服务。
4. 扩展性:随着业务量的增长,可以通过增加从库的方式来扩展系统的读能力。在更复杂的场景下,还可以构建多层复制结构,例如级联复制(Cascade Replication)或者环形复制(Circular Replication),甚至实现互为主从的集群,从而达到更高的容错能力和灵活的部署架构。

在这里插入图片描述

二、RelayLog是什么?

MySQL中的中继日志(Relay Log)主要用于主从复制(Master-Slave Replication)场景下,它存储在从库(Slave)服务器上。当主库将二进制日志(Binary Log)中的事件传输给从库时,这些事件先被记录到从库上的中继日志文件中,然后由SQL线程读取中继日志并执行这些事件,从而实现主从数据同步。

三、生产实际问题描述

从库服务器MYSQL文件路径下情况如下:
在这里插入图片描述
从库产生特别多RelayLog的日志文件,导致硬盘爆满!
在这里插入图片描述

四、解决问题方法

解决方法(1)

(1)删除一些没有用的文件,腾出空间,让mysql服务至少正常启动!
(2)修改localhost-relay-bin配置

localhost-relay-bin 日志是MySQL数据库主从复制中备库上的中继日志文件,主要用于存储从主库接收到的binlog事件,以便备库在本地应用这些事件以保持数据同步。当主从之间存在延迟或者同步过程中出现问题时,中继日志可能会积累得很大。处理 localhost-relay-bin 日志过大的情况通常不建议直接手动删除,因为这可能导致数据一致性问题和主从复制中断。正确做法包括:总之,针对localhost-relay-bin日志过大问题,重点在于找到并解决复制延迟的原因,而不是简单粗暴地删除日志文件。如非必要,应当避免手动清理中继日志以防止破坏复制链路。

修改localhost-relay-bin为100G最大值

要在MySQL中配置relay-log-space-limit参数,使其最大值为100GB,你需要在MySQL服务器的配置文件(通常是my.cnf或my.ini)中添加或修改该参数。

 vi /etc/my.cnf

以下是在配置文件中设置的方法:[mysqld]下配置追加
设置中继日志使用的最大磁盘空间为100GB

relay-log-space-limit = 107374182400 # 这是100GB以字节为单位表示

请注意,上述数字是将100GB转换成字节(1GB = 1024 * 1024 * 1024 字节)。保存配置文件后,需要重启MySQL服务来应用新的配置。如果你正在运行的是MySQL 8.0版本,请确保这个选项仍然有效,并且适用于你的MySQL复制环境。在某些情况下,可能还需要根据具体的MySQL版本和配置进行调整。在执行任何配置更改之前,请查阅官方文档以获取最新的建议和最佳实践。

在MySQL中,你无法直接通过SQL查询来获取relay-log-space-limit的当前设置值。这个参数是一个服务器级别的系统变量,通常是在MySQL服务器启动时通过配置文件(如my.cnf或my.ini)进行设置的。要查看该参数的当前值,你需要登录到MySQL服务器,并执行如下命令:
SHOW VARIABLES LIKE ‘relay_log_space_limit’;
这条命令将显示所有与 relay_log_space_limit 相关的系统变量及其当前设置值。如果该值为0,则表示未设置上限或者默认不限制中继日志占用的空间大小。

SHOW VARIABLES LIKE 'relay_log_space_limit';

在这里插入图片描述
在MySQL中清理relay_log(中继日志)时,你需要确保主从复制没有延迟且数据同步正常。以下是几个步骤来安全地清理relay log:步骤1:检查复制状态首先,通过运行以下命令确认从库是否与主库保持同步:

SHOW SLAVE STATUS;

检查Seconds_Behind_Master字段,如果值为0或者很小,并且没有任何未解决的错误,说明从库是同步的。步骤2:自动清理MySQL从5.6版本开始,通常会自动清理不再需要的relay log文件。确认服务器配置参数relay_log_purge和relay_log_recovery已设置为启用状态:

SHOW VARIABLES LIKE 'relay_log_purge';
SHOW VARIABLES LIKE 'relay_log_recovery';

如果relay_log_purge为ON,MySQL会在应用完 relay log 中的数据后自动删除它们。

在这里插入图片描述

解决方法(2)手动清理

手动清理(仅在必要时)尽管MySQL应该自动管理relay log,但在某些情况下可能需要手动干预。为了安全起见,在执行这些操作之前,请确保你了解可能的风险并备份相关数据。方法A: 停止slave服务以释放磁盘空间(这将清除当前的relay log):

STOP SLAVE;
PURGE MASTER LOGS TO 'mysql-relay-bin.000001'; # 替换为你想保留的第一个relay log文件名
START SLAVE;

这个命令会删除所有旧于指定名称的relay log文件,并重新创建新的relay log。
方法B: 如果你想要只移除一部分relay log而不是全部,可以尝试更细致的方法:

PURGE RELAY LOGS BEFORE 'YYYY-MM-DD HH:MM:SS'; # 替换为想要保留的最早时间点

这将会清理在指定时间点之前的relay log。请注意,无论采用哪种方法,都应在清理之后再次检查复制状态以确保其继续正常工作。

SHOW SLAVE STATUS;

预防措施最后,始终建议根据官方文档指导以及实际环境进行操作,并在进行任何清理操作前,充分理解风险和影响。

笔者尝试上述的方法遇到了另个报错

mysql Replica failed to initialize applier metadata structure from the repository

(3)终极解决方法重置当前主从,数据重新同步!

在从库上执行的操作

1. 停止从库的复制服务:

STOP SLAVE;

2. 重置从库的复制状态:

RESET SLAVE ALL;

如果需要重新配置从库指向新的主库,或者重新开始同步,则需执行以下命令(假设新主库的IP为new_master_ip,端口为new_master_port,用户名为replication_user,密码为password):

CHANGE MASTER TO 
MASTER_HOST='new_master_ip', 
MASTER_USER='replication_user', 
MASTER_PASSWORD='password',
MASTER_PORT=new_master_port,
MASTER_LOG_FILE='mysql-bin.00000X',  -- 替换为从主库SHOW MASTER STATUS得到的实际日志文件名
MASTER_LOG_POS=X;                     -- 替换为主库SHOW MASTER STATUS得到的日志位置

4. 启动从库复制:

START SLAVE;

5.确定rely-log最大值的配置是否真正启用

SHOW VARIABLES LIKE 'relay_log_purge';
SHOW VARIABLES LIKE 'relay_log_space_limit';

从而最终解决问题!

总结

MySQL主从集群中Relay Log日志过多过大的可能原因有以下几点:

(1)主库写入操作频繁:

如果主数据库有大量的INSERT、UPDATE和DELETE等写操作,这些操作会被记录到二进制日志(Binary Log)中,并传输给从库。从库会将这些事件记录在自己的Relay Log中,然后执行这些事件以保持与主库的数据同步。

(2) 主从延迟:

在主从复制过程中,如果从库由于性能问题或其他原因无法及时处理并删除Relay Log中的事务,则可能导致Relay Log堆积。例如,SQL线程在从库上运行较慢,或者网络延迟导致数据传输速度低于主库产生新事务的速度。

(3)relay_log_purge设置不当:

MySQL的relay_log_purge参数默认为ON,这意味着一旦SQL线程已经应用了Relay Log中的事务,系统就会自动清理这些已使用的Relay Log文件。但如果该参数被错误地设置为OFF,或者由于某些异常情况导致自动清理机制失效,Relay Log就可能持续增长而不被清理。
从库长时间未重启或主从断开连接后未正确恢复:
当主从之间出现故障导致复制暂停时,如果未及时发现并恢复正常复制,Relay Log将持续接收但不处理新的事务,进而积累大量未执行的日志。

(4)MHA等高可用解决方案禁用自动清理:

在一些高级的MySQL高可用性解决方案如MHA(MySQL Master High Availability)中,为了保证滞后从库能够通过其他节点的Relay Log进行补救性恢复,有时会选择暂时禁用Relay Log的自动清理功能,待所有从库都追赶上主库之后再进行清理。

(5)relay_log_space_limit配置不足:

如果relay_log_space_limit参数设置得过小,而实际产生的Relay Log超过了这个限制值,理论上MySQL应该会自动删除旧的Relay Log来释放空间,但如果这个参数设置不合理,可能会导致Relay Log清理不及时。要解决Relay Log过大过多的问题,通常需要根据实际情况调整上述配置参数,优化复制性能,确保SQL线程能跟上主库的更新速率,并定期检查和合理清理Relay Log。同时,也可以考虑增加从库资源以提高其处理能力。在必要时,可以手动清理Relay Log,但必须确保不会影响数据一致性及复制状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Kotlin】Kotlin流程控制

1 选择结构 Kotlin 中选择结构主要包含 if -else、when 语句,并且可以返回结果。 1.1 if-else 1.1. 条件选择 fun main() {var score 85if (score > 90) {println("优秀")} else if (score > 80) {println("良好")} else if (score &…

信息安全法律法规体系

信息安全法律法规体系 我国信息安全法规体系可以分为4层。 法律层面具体对应的法律、法规一般性法律规定宪法、国家安全法、国家秘密法、治安管理处理条例等虽然没有专门针对信息安全的条款,但约束了信息安全相关的行为规范和惩罚信息网络犯罪的法律《中华人名共和国刑法》《…

MySQL篇之主从同步原理

一、原理 MySQL主从复制的核心就是二进制日志。 二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。…

19-树-填充每个节点的下一个右侧节点指针 II

这是树的第19篇算法,力扣链接。 给定一个二叉树: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。…

继ChatGPT后的又一王炸!Sora模型解析与体验通道

前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言OpenAI体验通道Spacetime Latent Patches 潜变量时空碎片, 建构视觉语言系统…

“薪”的一年程序员裁员潮技术变革情况下 程序员就业机会在哪里?

引言:一对来自中国的工程师夫妻在美国的不幸身亡,疑似与谷歌的裁员有关,这一事件再次引发了人们对技术变革下裁员对程序员影响的关注。 一、针对裁员潮的一些看法 在我看来,技术变革对程序员的影响是双面的。一方面,…

代码随想录算法训练营day16

题目:104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数 参考链接:代码随想录 104.二叉树的最大深度 思路:上次是用层序遍历的思路做过。这次想一点不一样的思路,对于一个二叉树的最大深度其实即为其两个…

【Python机器学习】详解Python机器学习进行时间序列预测

🔗 运行环境:Python 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 🔐#### 防伪水印——左手の明天 ####🔐 💗 大家…

C++:const关键字

一、const成员变量(常成员变量) 1、只能使用初始化列表对常成员变量进行初始化; 2、常成员变量可以被访问,但是不能被修改; 3、类中所有构造函数都必须在初始化列表对常成员函数进行初始化(包括拷贝构造,移动构造)。 声明&am…

加固平板电脑在无人机的应用|亿道三防onerugged

无人机技术的快速发展已经在许多领域展现出巨大潜力,而加固平板电脑的应用在无人机领域中扮演着重要角色。 首先,加固平板电脑在无人机探测设备中发挥着关键作用。无人机探测设备通常需要实时传输高清图像和数据,以支持各种监测、勘测和检测…

蓝桥杯DP算法——背包问题(C++)

目录 一、01背包问题 二、完全背包问题 三、多重背包问题 四、多重背包问题(优化版) 五、分组背包问题 一、01背包问题 01背包问题就是有N件物品,一个空间大小为V的背包,每个物品只能使用一次,使得背包中所装物品…

职场数据分析必备|数据库入门之可视化工具Navicat

1、下载 Navicat (1)官网下载:https://navicatformysql.en.softonic.com/download 下载图示: 数据库入门(二)可视化工具Navicat​mp.weixin.qq.com/s?__bizMzU3Mzk0OTIzNA&mid100001258&idx1&…

el-table实现嵌套表格的展示

需求 一个表单中存在子表 列表返回格式 实现 实现思路 el-table中在嵌套一个el-table&#xff0c;这样数据格式就没问题了&#xff0c;主要就是样式 将共同的列放到一列中&#xff0c;通过渲染自定义表头render-header&#xff0c;将表头按照合适的宽度渲染出来 <el-…

品牌如何做好话题营销?这三点很关键

从“野性消费”到“疯四文学”&#xff0c;这些品牌让人记住的并不是某个内容&#xff0c;而是一个社交谈资&#xff0c;这些都算是成功的品牌话题&#xff0c;品牌话题的优势在于激活品牌&#xff0c;始终保持品牌活力&#xff0c;今天媒介盒子就来和大家聊聊&#xff1a;品牌…

免费3D模型网站大盘点,你推荐哪一个?

越来越多的设计师开始使用3D模型来提高效率、降低成本、提升效果和用户体验等。然而&#xff0c;寻找高质量的免费3D模型网站并不是一件容易的事情。今天&#xff0c;我们就来为大家介绍一些优秀的免费3D模型网站。 一、建e网 建e网是一个专业的室内设计资源平台&#xff0c;为…

Java的Lock(二)

自旋锁 VS 适应性自旋锁 堵塞或者notify一个Java线程需要操作系统切换CPU状态来完成(详情请参考11408)。这种状态切换需要耗费CPU时间。如果同步代码块种的内容过于简单。状态切换消耗的时间可能比用户代码执行的时间还要长。 在许多场景中,同步资源的锁定时间很短,为了这一…

初识aurora

高速接口 传输速率达到Gbit/s 硬件上的高速接口 SFP VPX FMC等 软件上的高速接口 高速接口的IP核 &#xff0c;起到串并转换等作用 &#xff0c;一般高速接口就调用IP核 auroraIP核 将有效数据打包成aurora帧格式再通过gt收发器传输出去 &#xff0c;一般用在两个fpga之…

电子防潮柜如何应对潮湿问题?

智能化时代的到来&#xff0c;让电子产品成为人们生活中的必需品&#xff0c;电子产品对存储环境的要求非常高。潮湿会产生发霉、生锈、氧化、腐蚀、变形等现象&#xff0c;缩短了电子产品的寿命。绝大部分电子产品都要求在清洁低湿干燥的环境中存放&#xff0c;环境中的温湿度…

【每周AI简讯】OpenAI推出王炸文生视频模型Sora

ChatGPT中文版https://ai7.pro OpenAI推出王炸文生视频模型Sora OpenAI 宣布推出名为 Sora 的新型文本到视频模型。Sora 能根据用户的文本提示&#xff0c;生成长达一分钟的逼真视频。它可以创造出细节丰富的场景、复杂的摄影机运动以及表情丰富的多个角色。Sora 是一种扩散模…

提取游戏音频文件.bnk

提取游戏音频文件.bnk 什么是.bnk准备Wwise-Unpacker工具使用Wwise-Unpacker工具总结 什么是.bnk .bnk其实是一种对音频的加密方式&#xff0c;一个.bnk文件中通常包含了多个语音文件&#xff0c;一般可以使用Wwise-Unpacker来解码.bnk格式文件 准备Wwise-Unpacker工具 Wwis…