Linux文件目录变只读(Read-only file system)导致mysql启动失败
背景
今天准备调试一个很久没打开的项目时,页面无法展示信息,经排查是因为数据库停止,查看运行状态发现以下异常。
1 2 3 4 5 6 | 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 |
分析
1 | rm : cannot remove ‘ /d1/Mysql_kits/dbdata/sccprocduat10 .pid’: Read-only file system |
通过这一句我们可以得知,因为该文件目录是只读状态,mysql无法删除sccprocduat10.pid文件,导致冲突无法启动
解决方案
1.查看当前挂载信息
1 | more /etc/fstab |
1 | cat /proc/mounts |
可以看到当前 /d1 目录挂载的分区,状态是ro,需要重新挂载 。
2.重新挂载
取消挂载
1 | umount /dev/mapper/vgdata-lv_d1 |
如果发现有提示“device is busy”,使用如下命令找到占用它的那个进程并kill掉
1 2 | fuser -m /dev/mapper/vgdata-lv_d1 ##将会显示使用这个模块的pid fuser -mk /dev/mapper/vgdata-lv_d1 ##将会直接kill那个pid |
如果这里使用fuser命令报错,解决方案
1 2 | - bash : fuser: command not found yum install psmisc |
再次挂载
1 | mount /dev/mapper/vgdata-lv_d1 /d1 |
3.测试
挂载成功之后重新启动mysql,查看状态,如下表示启动成功。
参考:
本博客文章均已测试验证,欢迎评论、交流、点赞。
部分文章来源于网络,如有侵权请联系删除。
转载请注明原文链接:https://www.cnblogs.com/sueyyyy/p/13141160.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix