踩坑了,MySQL数据库生成大量奇怪的大文件

作者:田逸(formyz)

一大早就收到某个数据库服务器磁盘满的报警信息,其中数据盘使用率超过90%,如下图所示。

这是一台刚上线不久的MySQL从库服务器,数据盘的总容量是300G。先登录系统,查看主从同步是否正常,幸运的是主从同步正常;再看看磁盘空间的使用情况,执行的命令及输出如下。

[root@MySQL-S-200-169 mysql_db]# df -h

Filesystem           Size  Used Avail Use% Mounted on

devtmpfs             4.0M     0  4.0M   0% /dev

tmpfs                 16G     0   16G   0% /dev/shm

tmpfs                6.3G  8.6M  6.3G   1% /run

/dev/mapper/rl-root   33G  3.4G   30G  11% /

/dev/sda1           1014M  220M  795M  22% /boot

/dev/sdb1            300G  271G   29G  91% /data

tmpfs                3.2G     0  3.2G   0% /run/user/0

分区“/data”为MySQL数据库用户数据存储的空间,初步判定多半是日志文件之类的给塞满了。进入用户数据目录(选项文件”/etc/my.cnf”设定的数据目录为”/data/mysql_db”),发现大量以“OFF”为前缀的文件(如下图所示),感觉莫名其妙呢!

这些文件大小在1G左右,从经验上感觉可能是日志文件。不确定是“OFF”做前缀(眼神不好),还是“0FF”做前缀?可用如下命令进行鉴别。

[root@MySQL-S-200-169 mysql_db]# ls -al 0FF*|more

ls: cannot access '0FF*': No such file or directory

[root@MySQL-S-200-169 mysql_db]# ls -al 0FF*

ls: cannot access '0FF*': No such file or directory

[root@MySQL-S-200-169 mysql_db]# ls -al OFF*|more

-rw-r----- 1 mysql mysql 1073743407 Feb  3 14:13 OFF.000001

-rw-r----- 1 mysql mysql 1073742872 Feb  3 14:16 OFF.000002

-rw-r----- 1 mysql mysql 1073741885 Feb  3 14:20 OFF.000003

………………省略………………………………………………..

从输出可知,是大写字母“O”而不是数字“0”。对比其它运行正常的MySQL数据库,都没有这样的文件存在,问题在哪里呢?

因为这个数据库系统上线不久,做了哪些操作应该还有些印象。回顾一下最近所做的操作,突然想起上周主从不同步,延迟特别大(4万多秒),为了处理这个主从不同步的麻烦,对MySQL的选项文件“/etc/my.cnf”做了修改,因为是从库,就决定将数据库的二进制日志记录给关闭,将文本行“log-bin = mysql-bin”变更成“log-bin = OFF”(还增加了其它的项,这里不做展开)。修改完毕,MySQL主从同步的延迟问题得以解决。

当MySQL数据库二进制日志设定为“log-bin=mysql-bin”时,启动MySQL服务以后,会在数据目录下生成以“mysql-bin.”为前缀,后紧跟一串数字结尾的二进制日志文件,并且按数字顺序生成,形如“mysql-bin.000001、mysql-bin.0000012”。通过对比,发现这些以“OFF.”为前缀的大文件,也是同样的规律。排查到这里,我幡然醒悟:“MySQL选项文件my.cnf设定的log-bin=OFF并不能关闭二进制日志的生成,而是生成以OFF为前缀的二进制文件而已”。

通过查询资料,MySQL 8这个版本要关闭“binlog”二进制日志记录,需在选项文件(注意,不要认为是配置文件)“/etc/my.cnf”中设置文本行“disable-log-bin”或者“skip-log-bin”。更改好选项文件之后,重启MySQL服务,确保主从复制正常的情况下,检查二进制日志生成的状况,具体的操作是,MySQL客户端登录MySQL,执行下列操作进行验证。

mysql> show variables like'log_%';

+----------------------------------------+----------------------------------------+

| Variable_name                          | Value                                  |

+----------------------------------------+----------------------------------------+

| log_bin                                | OFF                                    |

| log_bin_basename                       |                                        |

| log_bin_index                          |                                        |

| log_bin_trust_function_creators        | OFF                                    |

| log_bin_use_v1_row_events              | OFF                                    |

| log_error                              | /data/mysql_db/error.log               |

| log_error_services                     | log_filter_internal; log_sink_internal |

| log_slave_updates                      | OFF                                    |

| log_slow_admin_statements              | OFF                                    |

| log_slow_extra                         | OFF                                    |

| log_slow_replica_statements            | OFF                                    |

| log_slow_slave_statements              | OFF                                    |

| log_statements_unsafe_for_binlog       | ON                                     |

| log_throttle_queries_not_using_indexes | 0                                      |

| log_timestamps                         | UTC                                    |

+----------------------------------------+----------------------------------------+

21 rows in set (0.01 sec)

mysql> show binary logs;

ERROR 1381 (HY000): You are not using binary logging

为确保手动删除MySQL从数据库服务器占用大量磁盘空间的二进制文件不引起新的风险,在操作前必须对数据库进行全量备份或者整个操作系统备份(Proxmox VE虚拟机的优势所在,操作如下图所示),停止MySQL服务,删除所有以“OFF.”为前缀的大文件,然后重启MySQL服务。

经验证,磁盘空间释放,MySQL服务运行正常,主从复制也正常。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一般系统的请求认证授权思路【gateway网关+jwt+redis+请求头httpheader】

gateway:网关,我们都知道网关的作用就是对系统的所有请求,网关都会进行拦截,然后做一些操作(例如:设置每个请求的请求头httpHeader,身份认证等等)此时一般会使用到网关过滤器&#x…

感悟笔记——2024年2月5日

今日阅读了一篇挺有深度的文章,主要阐述进入职场后的大部分人,是怎么逐渐沦为螺丝钉的?即使起点巨高的优等生,也不可避免。文章指路: 「优等生思维」正在将你变成「螺丝钉」和「老黄牛」从小到大,我一直都是那个「别…

随记-Java项目处理SQL注入问题

现象:http://10.xx.xx.xx:xx/services/xxService 存在SQL注入情况 加固意见: 需要对网站所有参数中提交的数据进行过滤,禁止输入“"、"xor"、"or"、”--“、”#“、”select“、”and“等特殊字符;所有…

专业排版设计软件:QuarkXPress 2024 for mac中文激活版

QuarkXPress 2024 for Mac是一款功能强大、易于使用、高质量输出的专业排版软件。无论您是出版业的专家还是初学者,都可以通过QuarkXPress 2024轻松创建出令人惊叹的出版物。 软件下载:QuarkXPress 2024 for mac中文激活版下载 QuarkXPress 2023 for Mac…

游戏后端如何实现服务器之间的负载均衡?

在当今的游戏行业中,随着游戏用户数量的不断增加,如何实现服务器之间的负载均衡成为了一个亟待解决的问题。游戏后端作为游戏的重要组成部分,承载着游戏逻辑处理和数据存储等功能,因此游戏后端的负载均衡问题尤为重要。本文将详细…

FINN: 使用神经网络对网络流进行指纹识别

文章信息 论文题目:FINN: Fingerprinting Network Flows using Neural Networks 期刊(会议):Annual Computer Security Applications Conference 时间:2021 级别:CCF B 文章链接:https://dl.ac…

centos7的git使用方法

下载git yum install git git克隆 git clone https...(图片中复制的内容) git提交到远程仓库 git add filename git commit -m "提交日志" git push git首次使用要配置邮箱和用户名 查看提交日志 git log 查看当前提交状态 git status

JAVASE进阶:一文精通Stream流+函数式编程

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:JAVASE进阶:源码精读——HashMap源码详细解析 📚订阅专栏:JAVASE进阶 希望文章对你们有所帮助…

【第三十五节】idea项目的创建以及setting和Project Structure的设置

项目创建 Project Structure的设置 点击file ~ Project Structure 进入

RBAC权限控制实现方案

上一文章讲述了利用RBAC实现访问控制的思路(RBAC实现思路),本文主要详细讲解利用vuex实现RBAC权限控制。 一、准备工作 从后台获取到权限对照表,如下: 1、添加/编辑楼宇 park:building:add_edit 2、楼宇管理 pa…

3. ⼤语⾔模型深度学习背景知识

1. LLM⼤语⾔模型⼀般训练过程 #mermaid-svg-8kci1fjEPiVolPue {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8kci1fjEPiVolPue .error-icon{fill:#552222;}#mermaid-svg-8kci1fjEPiVolPue .error-text{fill:#5522…

管理类联考-复试-全流程演练-导航页

文章目录 整体第一步:学校导师两手抓——知己知彼是关键学校校训历史 导师你对导师的研究方向有什么认知。 第二步:面试问题提前背——押题助沟通自我介绍——出现概率:100%为什么选择这个专业?今后如何打算?你认为自己…

最小覆盖子串[困难]

优质博文:IT-BLOG-CN 一、题目 给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串"" 。 对于t中重复字符,我们寻找的子字符串中该字符数量必须不少于t中该字符数量…

AI新工具(20240206) Qwen1.5;法唠;Boximator 是由字节跳动研究团队开发的创新视频生成工具;秒画 等

Qwen1.5 - Qwen1.5更新了六种尺寸的基础和聊天模型,并在Hugging Face转换器集成了其代码,以提升开发者体验,并支持多种语言和长上下文处理。 Qwen1.5是一个大规模语言模型的最新迭代,它由Qwen团队开发。这个更新在中国新年前夕发…

QT exec阻塞UI

connect必须放在exec前

尚硅谷 Java 基础实战—Bank 项目—实验题目 3

实验题目 修改 withdraw 方法以返回一个布尔值,指示交易是否成功。 实验目的 使用有返回值的方法。 提示 修改 Account 类 修改 deposit 方法返回 true(意味所有存款是成功的)。修改 withdraw 方法来检查提款数目是否大于余额。如果amt小…

idea2023创建spring项目无法选择Java8

idea2023创建spring项目无法选择Java8 今天下载了新版的idea 2023.3.2,但是在创建springboot项目的时候只能选择Java17和Java21,没法选择其他的版本。 使用下面阿里云的地址替换Server URL中的start.spring.io的地址即可 https://start.aliyun.com/替…

OnlyOffice:释放无限创意,打造高效协作新体验

Onlyoffice 💖前言一、💫开发者版本介绍二、💫开发者版本特点三、💫最新版重磅来袭,8.0版本介绍1.显示协作者头像2.插件 UI 界面更新 四、✨Windows部署ONLYOFFICE1.安装Erlang2.安装RabbitMQ3.安装Redis4.安装Postgre…

标准库 STM32+EC11编码器+I2C ssd1306多级菜单例程

标准库 STM32EC11编码器I2C ssd1306多级菜单例程 📌原创项目来源于:https://github.com/AdamLoong/Embedded_Menu_Simple📍相关功能演示观看:https://space.bilibili.com/74495335 单片机多级菜单v1.2 👉本次采用的是原…

Postman发送带登录信息的请求

环境:win10Postman10.17.7 假设有个请求是这样的: RequiresPermissions("tool:add") PostMapping(value"/predict") ResponseBody /** * xxx * param seqOrderJson json格式的参数 * return */ public String predictSampleIds(Req…