zoukankan      html  css  js  c++  java
  • Linux文件目录变只读(Read-only file system)导致mysql启动失败

    背景

    今天准备调试一个很久没打开的项目时,页面无法展示信息,经排查是因为数据库停止,查看运行状态发现以下异常。

    Jun 15 15:30:58 sccprocduat10 systemd[1]: Started LSB: start and stop MySQL.
    Jun 15 15:30:59 sccprocduat10 mysqld[52940]: rm: cannot remove ‘/d1/Mysql_kits/dbdata/sccprocduat10.pid’: Read-only file system
    Jun 15 15:30:59 sccprocduat10 mysqld[52940]: 2020-06-15T07:30:59.014993Z mysqld_safe Fatal error: Can't remove the pid file:
    Jun 15 15:30:59 sccprocduat10 mysqld[52940]: /d1/Mysql_kits/dbdata/sccprocduat10.pid.
    Jun 15 15:30:59 sccprocduat10 mysqld[52940]: Please remove the file manually and start /usr/local/mysql/bin/mysqld_safe again;
    Jun 15 15:30:59 sccprocduat10 mysqld[52940]: mysqld daemon not started

    分析

    rm: cannot remove ‘/d1/Mysql_kits/dbdata/sccprocduat10.pid’: Read-only file system

    通过这一句我们可以得知,因为该文件目录是只读状态,mysql无法删除sccprocduat10.pid文件,导致冲突无法启动

    解决方案

    1.查看当前挂载信息

    more /etc/fstab

    cat /proc/mounts

     可以看到当前 /d1 目录挂载的分区,状态是ro,需要重新挂载 。

    2.重新挂载

    取消挂载

    umount /dev/mapper/vgdata-lv_d1
    

    如果发现有提示“device is busy”,使用如下命令找到占用它的那个进程并kill掉

    fuser -m /dev/mapper/vgdata-lv_d1 ##将会显示使用这个模块的pid
    fuser -mk /dev/mapper/vgdata-lv_d1 ##将会直接kill那个pid

     如果这里使用fuser命令报错,解决方案

    -bash: fuser: command not found 
    yum install psmisc 

    再次挂载

    mount /dev/mapper/vgdata-lv_d1 /d1

    3.测试

    挂载成功之后重新启动mysql,查看状态,如下表示启动成功。

    参考:

    linux常见故障:linux 文件系统变只读

    fuser命令详解

    Linux——常用命令(挂载)

  • 相关阅读:
    C# 接口
    C# 多态
    C# 继承
    C# 封装
    动态规划:从新手到专家
    hduoj题目分类
    4.2 最邻近规则分类(K-Nearest Neighbor)KNN算法应用
    警惕自增的陷阱(++)
    五大常用算法之四:回溯法
    算法java实现--回溯法--图的m着色问题
  • 原文地址:https://www.cnblogs.com/sueyyyy/p/13141160.html
Copyright © 2011-2022 走看看