如何通过 mysqld_safe 启动 mysqld

如何通过 mysqld_safe 启动 mysqld

规格:

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.dmysqld_safemysqld

所以

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。不过,如果你速度很快,你会看到它。

相关内容