MySQL 中Relay Log打满磁盘问题的排查方案

news2024/11/15 12:17:09

MySQL 中Relay Log打满磁盘问题的排查方案

引言:

MySQL Relay Log(中继日志)是MySQL复制过程中的一个重要组件,它用于将主数据库的二进制日志事件传递给从数据库。然而,当中继日志不断增长并最终占满磁盘空间时,可能导致数据库复制出现问题。本文将介绍一些常见的排查方案,帮助解决MySQL Relay Log打满磁盘的问题。

实际生产过程中出现的问题:在进行大量的数据同步过程中,主备库之间进行数据复制导致relay log打满磁盘。
relay_log打满

1. 检查复制延迟

首先,确认是否存在复制延迟。当数据库无法及时处理中继日志,中继日志会不断积累,从而导致磁盘空间被占满。通过执行以下查询语句,可以获取主数据库和从数据库之间的复制延迟情况:

SHOW SLAVE STATUS\G

在这里插入图片描述
从结果中可以看出是回访线程出错,导致中继日志不断累积,导致磁盘打满。那接下来的排查重点就是回放线程出错的原因,

select * from  performance_schema.replication_applier_status_by_worker limit 10\G

错误信息: Could not execute Delete rows event on table database dm rsznfxk.file job search entrepreneurshp_graduate 2023; Can’t find record in ‘file job search entrepreneurship graduate 2023’
在这里插入图片描述
导致回放失败的原因就是在执行delete操作时出现了问题,怀疑是slave删除了记录,然后回放时,尝试删除不存在的记录导致失败。排查思路是:

  • 先找到这条事务中delete语句。
  • 然后去slave的binlog中查找这条语句,确认是否有用户做了删除操作。

2.检查relay log大小

确定中继日志文件的大小,以及每个中继日志文件的数量。执行以下查询语句获取中继日志相关信息:

SHOW RELAYLOG EVENTS;

如果发现中继日志文件过大,可以考虑进行日志文件的轮转和清理。可以使用以下方法进行操作:

  • 执行PURGE BINARY LOGS TO <Relay_Log_File>; 清理旧的中继日志文件。
  • 配置MySQL参数relay_log_space_limit限制中继日志的总体积,防止无限制增长。

在上述问题中,slave是自动执行过purge操作的,导致slave上部分的中继日志被清理,影响后续的问题排查(事实是的确影响了最后的排查)

3. 检查从数据库的复制状态

确认从数据库是否正常复制主数据库的数据。可以通过以下方法进行检查:

  • 执行SHOW SLAVE STATUS\G,检查Slave_IO_Running和Slave_SQL_Running字段的值是否为Yes。
  • 检查从数据库的错误日志,查找任何与复制相关的错误信息。

在这里插入图片描述

4. 检查主数据库的二进制文件

确保主数据库的二进制日志状态正常,避免出现无法复制的情况。执行以下查询语句:

SHOW MASTER STATUS;

检查File和Position字段的值,并与从数据库的中继日志进行对比。如果从数据库无法追上主数据库的日志位置,可能会导致中继日志不断增长。

5. 优化中继日志的写入和读取

针对中继日志的写入和读取过程进行性能优化,可以采取以下措施:

  • 配置适当的硬件设备,如快速磁盘和RAID阵列,以提高IO性能。
  • 调整MySQL参数,如relay_log_buffer和relay_log_recovery等,以优化中继日志的写入和读取效率。

结论:

解决MySQL Relay Log打满磁盘的问题,可以通过检查复制延迟、中继日志大小、复制状态、二进制日志状态以及性能优化,保证数据库复制的顺利进行,并避免中继日志占满磁盘的情况发生。但是实际环境中的日志打满磁盘问题排查起来非常困难,主要是卡在找出引起回放线程出错的那条语句,很大可能是被purge了,最后的解决方案是不保留备库的数据,因为执行的是迁移任务,满足客户的需求为先。

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

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

相关文章

【openGauss数据库审计项配置审计日志维护】--略有小成

【openGauss数据库审计项配置&审计日志维护】--略有小成 &#x1f53b; 一、openGauss数据库审计&#x1f530; 1.1 关于openGauss审计功能&#x1f530; 1.2 openGauss审计功能开启&#x1f530; 1.3 配置具体的审计项 &#x1f53b; 二、查看审计结果&#x1f53b; 三、维…

day13_类中成员之一:构造器

由来 我们发现我们new完对象时&#xff0c;所有成员变量都是默认值&#xff0c;如果我们需要赋别的值&#xff0c;需要挨个为它们再赋值&#xff0c;太麻烦了。我们能不能在new对象时&#xff0c;直接为当前对象的某个或所有成员变量直接赋值呢。可以&#xff0c;Java给我们提…

详解c++---map和set的封装

目录标题 前言红黑树的基本代码map和set的封装红黑树迭代器红黑树迭代器- -begin和end函数代码测试const迭代器方括号的实现 前言 通过之前的学习我们知道set容器中存储的数据是k&#xff0c;map容器中存储的数据是k和v&#xff0c;但是这两个容器底层都是通过红黑树来进行实现…

blfs:为lfs虚拟机增加桌面01

vmware中克隆一份lfs&#xff0c;扩大硬盘分区再操作。 1、硬盘拓展容量&#xff0c;分区挂载到/home&#xff08;已有的大小在后面编译桌面系统会捉襟见肘&#xff09; 使用fdisk进行分区 fdisk /dev/sda 执行p w分区并保存 mkfs -v -t ext4 /dev/sda4 转ext4格式 让/…

uniapp中使用mixins(混入)

mixins 选项接收一个混入对象的数组。这些混入对象可以像正常的实例对象一样包含实例选项&#xff0c;这些选项将会被合并到最终的选项中&#xff0c;使用的是和 Vue.extend() 一样的选项合并逻辑。也就是说&#xff0c;如果你的混入包含一个 created 钩子&#xff0c;而创建组…

如何使用ffmpeg将BDMV(m2ts)转换成MKV、MP4等其他格式的文件

BDMV 是蓝光碟使用的格式。这种格式没有办法使用播放软件播放&#xff0c;必须要用硬盘播放器&#xff0c;也就是专门的设备。但是最经典的 ffmpeg 可以将其转换成其他格式&#xff0c;并且保持相同的码率和清晰度&#xff0c;这样就可以很方便的查看了。 本文使用 macOS 进行…

加速度计的原理与应用

什么是加速度计 加速度计是一种传感器&#xff0c;可以测量物体所受加速的大小和方向。 加速度计的工作原理 传统加速度计利用质量和弹簧的相互作用来感应加速度&#xff0c;当物体收到加速度时&#xff0c;弹簧会发生变形&#xff0c;通过衡量这种变形来测量加速度的大小。 …

postgresql | 数据库| 生成2000W条的简单测试表

前言&#xff1a; 数据库学习的过程中&#xff0c;很可能需要数据量比较大的表来进行模拟测试&#xff0c;那么&#xff0c;测试表的创建需要遵循的是贴近实际的生产环境&#xff0c;尽量的模仿实际的生产环境。 因此&#xff0c;学习数据库的时候&#xff0c;快速的创建一个…

chatgpt赋能python:Python求单词长度:基于字符串操作的简单实现

Python求单词长度&#xff1a;基于字符串操作的简单实现 Python作为一种广泛应用于各个领域的编程语言&#xff0c;其强大的字符串操作功能在文本处理中经常被使用。本篇文章将介绍基于Python的字符串操作实现单词长度的方法。 什么是单词长度 在文本处理中&#xff0c;单词…

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

目录 一、NoSQL 和 SQL 区别二、认识 Redis三、Redis 的数据结构介绍四、Redis 通用命令五、String 类型六、key 的格式七、Hash&#xff08;散列&#xff09;类型八、List 类型九、Set 类型十、SortedSet 类型&#xff08;可排序&#xff09; 一、NoSQL 和 SQL 区别 二、认识 …

macOS Sonoma编译OpenCV源码输出IOS平台库

1.macOS下载并编译OpenCV源码: 克隆源码: 主仓: git clone https://github.com/opencv/opencv.git 扩展仓: git clone https://github.com/opencv/opencv_contrib.git 编译xcode源码需要CMake与XCode命令行工具 确认已安装CMake 确认已安装XCode 安装xcode command l…

UNZIP

目录 搭建环境 做题开始 通过ln直接创建 通过mkdir 后进行ln 搭建环境 这次是在自己的靶机环境里面搭建 cd /var/www/html index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</ti…

罗技k380键盘教程

在智能手机和平板电脑上享受台式电脑般舒适便捷的输入体验。罗技蓝牙™ 多设备键盘 K380 是一款小巧独特的键盘&#xff0c;让您在家中任何地方都能使用个人设备进行沟通和创作。 借助便捷的易于切换™ 按钮&#xff0c;可以通过蓝牙™ 无线技术同时连接最多三台设备&#xff…

【LeetCode】动态规划 刷题训练(一)

文章目录 面试题 08.01. 三步问题题目解析状态转移方程完整代码 746. 使用最小花费爬楼梯题目解析状态转移方程完整代码 91. 解码方法题目解析状态转移方程情况1&#xff1a;让i位置的数&#xff0c;单独去解码情况2&#xff1a;让i位置的数 和i-1位置的数 结合 一起去解码 完整…

安全合规进入场景细分时代

2022年6月1日&#xff0c;《中华人民共和国网络安全法》&#xff08;以下简称《网络安全法》&#xff09;正式实施迎来5周年。 作为国家实施网络空间管辖的第一部法律&#xff0c;《网络安全法》标志着我国网络安全工作有了基础性的法律框架&#xff0c;意味着建设网络强国的制…

chatgpt赋能python:Python清空:如何在Python中使用清空来删除变量和数据结构中的所有元素

Python清空&#xff1a;如何在Python中使用清空来删除变量和数据结构中的所有元素 在Python编程中&#xff0c;我们常常需要删除变量和数据结构中的元素。Python提供了多种方法来实现这一点&#xff0c;其中最常用的方法之一就是使用清空功能。在本文中&#xff0c;我们将介绍…

【期末总复习】机器学习(公式推导与代码实现)鲁伟

【第一章】机器学习预备知识 1、了解机器学习的发展简史 2、复述出训练集、验证集和测试集的作用 训练集&#xff08;Training set&#xff09; 作用是用来拟合模型&#xff0c;通过设置分类器的参数&#xff0c;训练分类模型。后续结合验证集作用时&#xff0c;会选出同一参…

chatgpt赋能python:Python教程:求反向位置的字母

Python教程&#xff1a;求反向位置的字母 在这篇文章中&#xff0c;我们将介绍如何使用Python编程语言来找到给定字符串中的反向位置的字母。这是一个有趣的编程问题&#xff0c;特别是对于那些喜欢解决有趣问题的人来说&#xff0c;同时本文也将从SEO的角度来讲解如何优化文本…

LNMP搭建

一、编译安装nginx1.1 关闭防火墙&#xff0c;将安装nginx所需软件包传到/opt目录下并解压1.2 安装依赖包1.3 创建运行用户与组1.4 编译安装Nginx1.5 检查配置文件是否配置正确&#xff0c;并启动nginx服务 二、安装 MySQL 服务2.1 安装Mysql环境依赖包2.2 创建运行用户2.3 编译…

前端Vue自定义简单好用商品分类列表组件 侧边栏商品分类组件

前端Vue自定义简单好用商品分类列表组件 侧边栏商品分类组件 &#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13148 效果图如下&#xff1a; # cc-defineCateList #### 使用方法 使用方法 <!-- data:商品列表数组…