我在 CentOS 版本 6.5(最终版)虚拟机上运行 MySQL。它用于测试 Joomla。
物理主机经常重启,这很好。但是,VM 不会执行干净关闭。当它重新启动时,这里会出现一个锁定文件:/var/lib/mysql/mysql.sock
我构建了一个 shell 脚本,它将为我删除当前手动执行的它。这工作得很好,但需要我运行它。
#!/bin/bash
sudo mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak
sudo service mysqld restart
有人建议我编辑 /etc/init.d/mysql 以自动删除锁定文件。虽然这似乎是一个好主意,但锁定文件确实执行了一个有价值的目的,并且篡改该 im mysqld 可能弊大于利。
如何在重启后自动删除锁定文件?
答案1
套接字文件是进程与正在运行的服务器进行通信的一种方式。当服务器死机时,就不需要套接字了。正如您所说,如果服务器有机会正常关闭,它就会被删除。如果套接字已经存在,MySQL 将无法启动;因此出现错误消息。当服务器不运行时删除它就可以了。
编辑/etc/init.d/mysql
并找到该行:
start(){
在其下方插入以下内容:
if [ -S /var/lib/mysql/mysql.sock ] ; then
rm /var/lib/mysql/mysql.sock
fi
使其看起来像下面这样:
start(){
if [ -S /var/lib/mysql/mysql.sock ] ; then
rm /var/lib/mysql/mysql.sock
fi
答案2
我会将这些行添加到 /etc/inittab
该文件在每次启动时运行。
你可以放弃 sudo 并重新启动。
“非常确定”/etc/inittab 返回 0