MySQL pid 文件记录的是当前 mysqld 进程的 pid,pid 亦即 Process ID。

未指定 pid 文件时,pid 文件默认名为 主机名.pid,存放的路径在默认 MySQL 的数据目录。通过 mysqld_safe 启动 MySQL 时,mysqld_safe 会检查 pid 文件,如果 pid 文件不存在,不做处理;如果文件存在,且 pid 已占用则报错 “A mysqld process already exists”,如果文件存在,但 pid 未占用,则删除 pid 文件。查看 MySQL 的源码可以知道,mysqld 启动后会通过 create_pid_file 函数新建 pid 文件,通过 getpid() 获取当前进程 pid 并将 pid 写入 pid 文件。因此,通过 mysqld_safe 启动时, MySQL pid 文件的作用是:在数据文件是同一份,但端口不同的情况下,防止同一个数据库被启动多次。

作者:温国兵
链接:http://www.zhihu.com/question/29397959/answer/44221750
来源:知乎

mysqld与mysqld_safe的区别
直接运行mysqld程序来启动MySQL服务的方法很少见,mysqld_safe脚本会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它。用mysqld_safe脚本来启动MySQL服务器的做法在BSD风格的unix系统上很常见,非BSD风格的UNIX系统中的 mysql.server脚本其实也是调用mysqld_safe脚本去启动MySQL服务器的。它通常做如下事情:

  1. 检查系统和选项。
  2. 检查MyISAM表。
  3. 保持MySQL服务器窗口。
  4. 启动并监视mysqld,如果因错误终止则重启。
  5. 将mysqld的错误消息发送到数据目录中的host_name.err 文件。
  6. 将mysqld_safe的屏幕输出发送到数据目录中的host_name.safe文件。
    转自:http://yunwei.blog.51cto.com/381136/421031

ps -ef是查看所有的进程的 根据 pid文件 可以找到mysql的启动信息

 501   436   291   0 11:48上午 ??         0:01.66 /usr/local/Cellar/mysql/5.6.27/bin/mysqld --basedir=/usr/local/Cellar/mysql/5.6.27 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/5.6.27/lib/plugin --bind-address=127.0.0.1 --log-error=/usr/local/var/mysql/xxxdeMBP.lan.err --pid-file=/usr/local/var/mysql/xxxdeMBP.lan.pid
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐