记一次mysql故障排除和硬盘扩容

问题发现

某天早上发现我的博客突然不能访问了。简单看了一下可能是数据库连接出了问题。这台服务器比较节约,网站和数据库都放在一个机器上。讲道理不该出现数据库连接问题的。

解决思路

首先需要熟悉mysql各个文件保存位置

项目位置
日志保存位置/var/log/mysqld.log
数据保存位置/var/lib/mysql

通过查看日志可以发现是一个很常见的问题,硬盘满了。顺便如下是查看硬盘使用情况的命令

df -h

如下的/dev/vda1 一度达到了0%可用

[root@ftc-it-portal log]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.7G     0  3.7G   0% /dev
tmpfs           3.7G     0  3.7G   0% /dev/shm
tmpfs           3.7G  656K  3.7G   1% /run
tmpfs           3.7G     0  3.7G   0% /sys/fs/cgroup
/dev/vda1        59G   50G  7.0G  88% /

清理空间

删除binlog,删除了一个binlog.00003.因为这个文件很大。同时也需要删除binlog_index中的这个0003。否则也就会报错找不到文件从而无法启动mysql。当然如果是生产环境不建议删除binlog哈,因为大公司所有东西都要留档的。

然后同时我发现,mysql的 log文件也特别大。我暂时清理了一下log文件,这样硬盘至少有几个G可以启动mysql服务了。

清除报警

进一步排查,发现mysql日志中有很多的重复报警如下:

2024-12-16T03:17:40.208208Z 89 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'

可能是因为这个报警,导致日志文件特别大。这是因为我跑在服务器上的一个Wordpress应用。

下面这种方式使用新模式连接mysql,这样可以从根本上解决报警。但是我用的老的NaviCat,就无法连接了。

解决方式,首先,在my.cnf中加入如下配置

default_authentication_plugin=caching_sha2_password

重启mysql后,运行如下语句

ALTER USER 'itdx'@'%' IDENTIFIED WITH caching_sha2_password BY 'Abc@1234';

所以推荐如下方式,也就是在配置文件中加入如下语句即可:

log_error_suppression_list='MY-013360

也可以在设置里加入日志过期时间

expire_logs_days=30

硬盘扩容

同时我在阿里云也进行了硬盘扩容,接下来的问题是,这个扩容的硬盘,要如何应用到系统中去呢?

事前准备,需要安装硬盘扩容工具

yum install cloud-utils-growpart yum install xfsprogs -y

首先,使用growpart命令

[root@ftc-it-portal ~]# growpart /dev/vda 1
CHANGED: partition=1 start=2048 old: size=125827039 end=125829087 new: size=419428319 end=419430367

然后,再使用resize2fs命令

[root@ftc-it-portal ~]# resize2fs /dev/vda1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 13
The filesystem on /dev/vda1 is now 52428539 blocks long.

最终,确认结果。可以看到/dev/vda1已经是200GB了。

[root@ftc-it-portal ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.7G     0  3.7G   0% /dev
tmpfs           3.7G     0  3.7G   0% /dev/shm
tmpfs           3.7G  512K  3.7G   1% /run
tmpfs           3.7G     0  3.7G   0% /sys/fs/cgroup
/dev/vda1       197G   50G  140G  27% /
tmpfs           756M     0  756M   0% /run/user/0

解决根本问题

过了几天我发现硬盘使用空间还在一直增大,通过如下方法,终于找到了罪魁祸首

# 查看硬盘使用情况
df -h# 查看当前目录,最大的文件夹
du -h --max-depth=1# 查看所有文件夹大小
du -sh *

原来是docker的日志文件,竟然有50个G那么大。通过如下方式,清理了日志

# docker中的日志文件清理,/var/lib/docker/containers/b0c9ed5
cat /dev/null > b0c9ed511b7042d75bb9b1aa4bf95f41419f4a202d23dc57482d63a4e58b29b7-json.log

同时重新运行了容器,指定了日志文件大小

docker run -it --name wordpress_new --log-opt max-size=10m --log-opt max-file=3 -p 9898:80 -v /opt/wordpress:/var/www/html -d wordpress

这下问题彻底解决了。

也可以在docker的配置文件/etc/docker/daemon.json中加入如下配置,这样新的容器就默认会限制日志大小了。

{"log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "3"}
}

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

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

相关文章

Qt网络通信、线程之间通信详解

一、 网络通信协议主要包括TCP和UDP,但更常用和可靠的是TCP协议。TCP是一种面向连接的、可靠的、面向流的传输协议,特别适合用于连续数据传输。在Qt中,网络通信主要通过QTcpSocket类和QTcpServer类来实现。 QTcpSocket类用于建立TCP客户端和…

【多模态】MiniCPM-V多模态大模型使用学习

MiniCPM-V模型使用 前言1. 模型文件下载和选择2. 环境安装配置3. 模型微调3.1 qlora微调minicpm-v-int43.2 lora微调minicpm-v3.3 merge_lora3.4 lora微调后量化int4 4. 模型推理4.1 huggingface API4.2 swift API(A) swift(不支持batch inference)(B) s…

C#多线程系列章节五

线程创建的几种写法 thread类 threadpool 线程池 task类 Thread t = new Thread(func); t.Start();//线程开始执行threadPool.QueueUserWorkItem(test)创建var t1 = new Task(() => test(“Task 1”));t.start();Task.Run(() => test(“Task 2”));Task.Factory.StartNew…

clickhouse-介绍、安装、数据类型、sql

1、介绍 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 OLAP(On-Line A…

Audition 2025 for Mac Au音频编辑软件

Mac分享吧 文章目录 Audition 2025 for Mac Au音频编辑软件 效果图展示一、Audition 2025 Au音频编辑软件 Mac电脑版——v25.0⚠️注意事项:1️⃣:下载软件2️⃣:安装软件2.1 安装AntiCC_5.9_简化版,操作步骤如下:2.2…

JAVA题目笔记(二十五)网络编程综合小练qa!3EF TG6U8.L;

一、多发多收 客户端: import java.io.*; import java.net.Socket; import java.util.Scanner;public class Test1_2 {public static void main(String[] args) throws IOException {//TCP发送端Scanner scnew Scanner(System.in);String b;//创建Socket对象Socket…

决策树的生成与剪枝

决策树的生成与剪枝 决策树的生成生成决策树的过程决策树的生成算法 决策树的剪枝决策树的损失函数决策树的剪枝算法 代码 决策树的生成 生成决策树的过程 为了方便分析描述,我们对上节课中的训练样本进行编号,每个样本加一个ID值,如图所示…

ES6中的map和set

Set ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成 Set 数据结构。 以下代码 const s new Set();[2, 3, 5, 4, 5, 2, 2].forEach(x > s.add(x));for (let i of s…

C# 用语句初始化数据库,创建库和表 MySQL示例

目录 简要说明 代码实现 简要说明 有时候项目中,在部署过程中,单独用工具去创建数据库和表,会消耗很多人力和时间,也不利于后期程序迭代去增加数据表, 那可以在程序启动的时候,去判断数据库和表是否存在…

基于SpringBoot的疫苗在线预约功能实现十二

一、前言介绍: 1.1 项目摘要 随着全球公共卫生事件的频发,如新冠疫情的爆发,疫苗成为了预防和控制传染病的重要手段。传统的疫苗预约方式,如人工挂号或电话预约,存在效率低、易出错、手续繁琐等问题,无法…

java技术点

1 mysql的索引下推: 就是从减少服务层的的回表操作,在引擎层实现联表查询 2 可重入锁: 就是当前:z线程可重复获取锁,比如递归函数里有锁,防止死锁 3 解决redis脑裂: 参数 持久化 优化网络和硬件 4 加密: MD5 不可解 对称算法…

MySQL基础 -----MySQL数据类型

目录 INT类型 tinyint类型 类型大小范围 测试tinyint类型数据 float类型 测试: 测试正常数据范围的数据 测试插入范围超过临界值的数据: 测试float类型的四舍五入 ​编辑 decimal类型 同样测试: 字符串类型 char类型 测试&…

代码开发相关操作

使用Vue项目管理器创建项目:(vue脚手架安装一次就可以全局使用) windowR打开命令窗口,输入vue ui,进入GUI页面,点击创建-> 设置项目名称,在初始化git下面输入:init project&…

Pandas系列|第一期:列值的前N码模糊匹配

背景:物料清单(BOM)在做关键器件筛选时,需要筛选出编码的前N码模糊匹配给定的前缀list的所有bom行 关键点:前N码模糊匹配 df[col].str.startswith(tuple(item_prefix_list)) 解决方法: impor…

如何在 Ubuntu 22.04 上安装和使用 Rust 编程语言环境

简介 Rust 是一门由 Mozilla 开发的系统编程语言,专注于性能、可靠性和内存安全。它在没有垃圾收集的情况下实现了内存安全,这使其成为构建对性能要求苛刻的应用程序(如操作系统、游戏引擎和嵌入式系统)的理想选择。 接下来&…

MybatisPlus-配置加密

配置加密 目前配置文件中的很多参数都是明文,如果开发人员发生流动,很容易导致敏感信息的泄露。所以MybatisPlus支持配置文件的加密和解密功能。 我们以数据库的用户名和密码为例。 生成秘钥 首先,我们利用AES工具生成一个随机秘钥&#…

记录:virt-manager配置Ubuntu arm虚拟机

virt-manager(Virtual Machine Manager)是一个图形用户界面应用程序,通过libvirt管理虚拟机(即作为libvirt的图形前端) 因为要在Linux arm环境做测试,记录下virt-manager配置arm虚拟机的过程 先在VMWare中…

艾体宝案例丨CircleCI 助力 ANA Systems 打造高效 CI/CD 模型

在现代软件开发领域,效率和可靠性是企业在竞争中取胜的关键。本文将深入探讨 ANA Systems 如何通过引入业界领先的 CI/CD 平台——CircleCI,克服传统开发流程的瓶颈,实现开发运营效率的全面提升。同时,本文还将详细解析 CircleCI …

Linux dd 命令详解:工作原理与实用指南(C/C++代码实现)

这段代码是一个模仿 Linux dd 命令的工具,它用于在不同文件之间复制数据。dd 是一个非常强大的命令行工具,可以用于数据备份、转换和复制。下面我将详细解释这段代码的原理、实现方式以及如何运行和测试。 Linux dd 命令的工作原理 dd 命令是 Unix 和 …

ChatGPT客户端安装教程(附下载链接)

用惯了各类AI的我们发现每天打开网页还挺不习惯和麻烦,突然发现客户端上架了,懂摸鱼的人都知道这里面的道行有多深,话不多说,开整! 以下是ChatGPT客户端的详细安装教程,适用于Windows和Mac系统&#xff1a…