当前位置: 首页 > article >正文

mysql.sock.lock 导致mysql重启失败

背景

今天公司物业断电,导致机房服务器停电宕机,所有的服务都得重启。本着mysql实例都做了服务自启动,所以没有太担心影响开发的日常工作。但是今天一上班开发就找来,各种服务都没起来有问题,数据库连不上。马上登陆数据库服务器,发现有一个数据库实例没有起来,于是着手手动启动。

报错

1.jpg

如果只从上述的报错,得不到有效信息,因为有多种情况会引起这种报错,例如:
1)mysql进程已经存在;

  1. mysql相关目录文件读写权限问题;
    3)由于第二次安装,存在之前剩余的数据影响启动;
    4)等等... ...

寻错

查看mysql的错误日志找到准确的错误信息,下图可以看出,是因为有进程占用的socket文件,导致新的进程无法设置新的socket lock 文件。通过ps -ef | grep pid,发现错误日志中的进程不存在。所以转而去看当前的socket lock 文件。

3.jpg

发现当前新起实例mysqld_3347的socket lock 文件已经存在。属于不正常状态(socket lock)文件应该在mysql实例关闭时正常删除,mysql实例启动时重新生成写入运行实例的pid。所以果断删除(笔者是所在为测试环境,如果是生产环境,请进一步确认无误后谨慎删除)。


2.jpg

解决

在删除了相应的mysql实例的socket lock 文件后,实例启动成功。


4.jpg

mysql.sock.lock文件的作用

因为不同的mysql服务实例可以通过相同的mysql socket 文件启动(在同一个服务器,只需端口不同即可)。但是这样会出现一个问题:当时关闭一个mysql实例时,会随机选择这些使用相同的mysql socket文件启动的实例中的一个,这样就不导致关闭的mysql实例不是你所期望的那个实例。为了避免这个问题,mysql引进了socket lock文件(与socket 文件同名),当使用socket 启动时,如果socket lock文件存在,则不会启动新的实例。具体实例解析可以建连接:https://bugs.mysql.com/bug.php?id=37629



喜欢的朋友记得点赞、收藏、关注哦!!!


http://www.kler.cn/a/524769.html

相关文章:

  • 如何将 Windows 上的文件传递到 Mac 上
  • Spring Boot - 数据库集成05 - 集成MongoDB
  • HTML<kbd>标签
  • Greenplum临时表未清除导致库龄过高处理
  • 浅析百度AOI数据与高德AOI数据的差异性
  • 判断子序列
  • 《深度剖析Q-learning中的Q值:解锁智能决策的密码》
  • 前缀和——矩阵区域和
  • 【数据分享】1929-2024年全球站点的逐月平均能见度(Shp\Excel\免费获取)
  • 3.观察者模式(Observer)
  • 【memgpt】letta 课程1/2:从头实现一个自我编辑、记忆和多步骤推理的代理
  • 使用Redis生成全局唯一ID示例
  • vue框架技术相关概述以及前端框架整合
  • 2024 NIPS Spotlight Learning-Feedback
  • 攻克 AI 幻觉难题
  • python:求解偏微分方程(PDEs)
  • 高级RAG技术:提升LLMs复杂任务表现
  • 【MySQL】初始MySQL、库与表的操作
  • Java基础知识总结(三十)--泛型
  • 算法设计-插入排序(C++)
  • 幸运数字——蓝桥杯
  • 慕课:若鱼1919的视频课程:Java秒杀系统方案优化 高性能高并发实战,启动文档
  • 完美世界前端面试题及参考答案
  • CSS(快速入门)
  • 【Java基础-42】Java中的包装类与基本数据类型:深入理解它们的区别与应用场景
  • 【STL笔记】字符串