没有不值得去解决的问题,也没有不值得去学习的技术!

MySQL 报错 Can’t connect to /var/lib/mysql/mysql.sock (2) 排查全过程

作者:

在

,

1、打开网站后台网址,报错:Unable to connect to database: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

2、修复 MySQL 连接报错问题,查看 ISC 框架(Interspire Shopping Cart,老牌电商系统)的配置文件,确认连接的是本机的数据库。如图1

修复 MySQL 连接报错问题,查看 ISC 框架(Interspire Shopping Cart,老牌电商系统)的配置文件,确认连接的是本机的数据库。

3、然后检查 MySQL 状态(确认是否启动成功),发现已经停止。启动 MySQL 失败

Plaintext

[root@li1269-60 jfc]# service mysqld status                                     |
mysqld is stopped
[root@li1269-60 jfc]# service mysqld start

Timeout error occurred trying to start MySQL Daemon.
Starting mysqld:  [FAILED]
[root@li1269-60 jfc]#


4、查看 MySQL 启动失败的关键日志(最核心的排查命令),从你给出的 MySQL 日志片段来看,核心错误是 Table ‘./jammerfromchina/cart_prodd’ 损坏—— 这是导致 MySQL 启动超时 / 失败的根本原因(数据表损坏会让 InnoDB/MyISAM 引擎加载失败,MySQL 启动流程卡住)。

Plaintext

[root@li1269-60 jfc]# grep -i "error|fail|timeout" /var/log/mysqld.log
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromchina/cart_prodd
130419  7:01:24 [ERROR] /usr/libexec/mysqld: Table './jammerfromc^C[ 3502.924666


5、确认磁盘资源是否充足是排查当前问题的关键前置步骤(磁盘满是导致 MySQL 启动失败、数据表损坏的核心诱因之一)。最终确认:磁盘 100% 满(根分区 /dev/sda 78G 已用尽)。如图2

确认磁盘资源是否充足是排查当前问题的关键前置步骤(磁盘满是导致 MySQL 启动失败、数据表损坏的核心诱因之一)。最终确认:磁盘 100% 满(根分区 /dev/sda 78G 已用尽)
Plaintext

[root@li1269-60 jfc]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda               78G   78G     0 100% /
tmpfs                 1.9G  116K  1.9G   1% /dev/shm


6、发现 Linode 实例可以调整大小了。发现当前 Linode 4 GB,存储是 80GB。可以调整为 Linode 8 GB ,存储是 160 GB。参考:Linode 实例升级配置失败的排查分析,升级配置为 160GB 配置。

7、再次查看磁盘占用情况,确认符合预期

Plaintext

[root@li1269-60 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda              148G   78G   68G  54% /
tmpfs                 3.9G  116K  3.9G   1% /dev/shm
[root@li1269-60 ~]#


8、现在打开后台,已经不再报错。可以正常登录。如图3

现在打开后台,已经不再报错。可以正常登录

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系