规格:
MySQL 服务器版本:5.5.43-0ubuntu0.14.04.1(Ubuntu)
Ubuntu 服务器 14.04 LTS
默认 MySQL 配置文件
问题:
即使花了很长时间我还是无法弄清楚为什么我不能通过 mysqld_safe 启动 mysqld。
MySQL文档指出:
mysqld_safe 是在 Unix 和 NetWare 上启动 mysqld 服务器的推荐方法。mysqld_safe 增加一些安全功能,如在发生错误时重新启动服务器以及将运行时信息记录到错误日志文件。
此外,我了解到 mysqld_safe 是 mysqld 的某种包装器。调用 mysqld_safe 时,它将尝试启动 mysqld。
如何调用 mysqld_safe?
没有名为 的init-script
。只有一个名为 的脚本。/etc/init.d
mysqld_safe
mysqld
所以
sudo service mysqld start
直接将 start 传递到/etc/init.d/mysqld
。其中/etc/init.d/mysqld
将跳转到case start
执行:
# Start MySQL!
/usr/bin/mysqld_safe > /dev/null 2>&1 &
但mysqld_safe 现在是否正在运行?
ps -aux | grep my
给出以下输出:
mysql 31168 0.0 4.2 318348 43648 ? Ssl 14:35 0:03 /usr/sbin/mysqld
并不是
mysql 31168 0.0 4.2 318348 43648 ? Ssl 14:35 0:03 /usr/sbin/mysqld_safe
为什么?
我怎样才能通过 mysqld_safe 启动 mysqld,因为我想以正确的方式进行,而不是以像“啊,忘记它。。至少它正在工作”这样的懒惰方式。
我想学一些东西......
答案1
mysqld_safe
是“天使”进程,它监视 MySQL 并在其出现故障时重新启动它。
最初就是这么实现的。现在有些发行版会自行管理进程,而不是启动mysqld_safe
。
在 Ubuntu 14.04 中您可能能够运行sudo /etc/init.d/mysql start
而不是sudo service mysql start
让一些 mysql fork 运行 mysqld_safe。(即某些选项,例如 jemalloc 使用 mysqld_safe)。
答案2
mysqld_safe
只是一个启动mysqld
守护进程的脚本。守护进程启动并运行后,它就会退出,这就是为什么你看不到 mysqld_safe 正在运行ps
。不过,如果你速度很快,你会看到它。