当MySQL实例启动时,会将自己的进程ID写入一个文件中-pid文件,该文件由参数pid_file控制,默认位于数据库目录下,文件名为主机名.pid

mysql> show variables like 'pid_file';

+---------------+--------------------------------+

| Variable_name | Value                          |

+---------------+--------------------------------+

| pid_file      | /opt/mysql/data/gfsunny105.pid | 

+---------------+--------------------------------+

1 row in set (0.02 sec)

[root@gfsunny105 data]# cat gfsunny105.pid 

4466

1、模拟pid文件丢失

[root@gfsunny105 data]# mv gfsunny105.pid gfsunny105.pid_bak

    pid文件丢失对于正在运行着的mysql没有影响,但是在数据库实例重启或者关闭时就会因为没有该文件而报错

2、停止mysql

[root@gfsunny105 data]# service mysqld stop

MySQL server PID file could not be found!                  [FAILED]

3、找回pid文件

3.1、查看mysql实例进程

[root@gfsunny105 data]# ps -ef|grep mysqld

root      4159     1  0 11:53 pts/2    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/opt/mysql/data --pid-file=/opt/mysql/data/gfsunny105.pid

mysql     4466  4159  5 11:53 pts/2    00:00:09 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/opt/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/opt/mysql/logs/alert.log --pid-file=/opt/mysql/data/gfsunny105.pid

root      4539  3601  0 11:56 pts/2    00:00:00 grep mysqld

3.2、重新构造pid文件

[root@gfsunny105 data]# ps -ef|grep mysqld|awk '{print $2}'|sed 1d |sed 2d > ${HOSTNAME}.pid

[root@gfsunny105 data]# ll

total 307652

......

-rw-r--r-- 1 root  root          5 Jan 19 12:23 gfsunny105.pid

-rw-rw---- 1 mysql mysql         5 Jan 19 11:53 gfsunny105.pid_bak

......

[root@gfsunny105 data]# cat gfsunny105.pid

4466

4、再次停止mysql并重新启动

[root@gfsunny105 data]# service mysqld stop

Shutting down MySQL...                                     [  OK  ]


[root@gfsunny105 data]# service mysqld start

Starting MySQL.......                                      [  OK  ]