MySQL 8.0 参考手册  / 第 4 章 MySQL 程序  / 4.3 服务器和服务器启动程序  /  4.3.2 mysqld_safe — MySQL 服务器启动脚本

4.3.2 mysqld_safe — MySQL 服务器启动脚本

mysqld_safe是在 Unix 上 启动mysqld服务器的推荐方式 mysqld_safe添加了一些安全功能,例如在发生错误时重新启动服务器以及将运行时信息记录到错误日志中。错误记录的描述将在本节后面给出。

笔记

对于某些 Linux 平台,从 RPM 或 Debian 软件包安装 MySQL 包括用于管理 MySQL 服务器启动和关闭的 systemd 支持。在这些平台上, 没有安装mysqld_safe,因为它是不必要的。有关详细信息,请参阅 第 2.5.9 节,“使用 systemd 管理 MySQL 服务器”

在使用 systemd 进行服务器管理的平台上 不使用mysqld_safe 的一个含义 是不支持在选项文件中使用[mysqld_safe][safe_mysqld]部分,并且可能导致意外行为。

mysqld_safe尝试启动名为mysqld的可执行文件。要覆盖默认行为并明确指定要运行的服务器的名称,请为mysqld_safe--mysqld指定一个 或--mysqld-version选项。您还可以使用 指示mysqld_safe应在其中查找服务器的目录。 --ledir

mysqld_safe的 许多选项与mysqld的选项相同。请参阅 第 5.1.7 节,“服务器命令选项”

mysqld_safe 未知的选项如果在命令行上指定则传递给 mysqld,但如果它们在 [mysqld_safe]选项文件组中指定则忽略。请参见 第 4.2.2.2 节,“使用选项文件”

mysqld_safe[mysqld]从选项文件的、[server][mysqld_safe]部分读取所有选项 例如,如果您指定这样的[mysqld]部分, mysqld_safe会查找并使用该 --log-error选项:

[mysqld]
log-error=error.log

为了向后兼容,mysqld_safe也读取[safe_mysqld]部分,但为了保持最新,您应该将这些部分重命名为 [mysqld_safe].

mysqld_safe接受命令行和选项文件中的选项,如下表所述。有关 MySQL 程序使用的选项文件的信息,请参阅 第 4.2.2.2 节,“使用选项文件”

表 4.6 mysqld_safe 选项

选项名称 描述
--basedir MySQL安装目录路径
--核心文件大小 mysqld 应该能够创建的核心文件的大小
--数据目录 数据目录路径
--defaults-extra-file 除了通常的选项文件外,还读取命名的选项文件
--defaults-文件 只读命名选项文件
- 帮助 显示帮助信息并退出
--ledir 服务器所在目录路径
--日志错误 将错误日志写入命名文件
--malloc-lib 用于 mysqld 的替代 malloc 库
--mysqld 要启动的服务器程序的名称(在 ledir 目录中)
--mysqld-safe-log-timestamps 日志记录的时间戳格式
--mysqld-版本 服务器程序名称的后缀
- 好的 使用nice程序设置服务器调度优先级
--no-defaults 不读取选项文件
--打开文件限制 mysqld 应该能够打开的文件数
--pid 文件 服务器进程 ID 文件的路径名
--插件目录 安装插件的目录
- 港口 侦听 TCP/IP 连接的端口号
--skip-kill-mysqld 不要试图杀死杂散的 mysqld 进程
--skip-系统日志 不要将错误消息写入系统日志;使用错误日志文件
- 插座 侦听 Unix 套接字连接的套接字文件
--系统日志 将错误消息写入系统日志
--syslog-tag 写入系统日志的消息的标记后缀
- 时区 将 TZ 时区环境变量设置为命名值
- 用户 以具有名称 user_name 或数字用户 ID user_id 的用户身份运行 mysqld

如果使用 或 选项执行mysqld_safe来命名选项文件,则选项必须是命令行上给出的第一个选项,否则不使用选项文件。例如,此命令不使用命名选项文件: --defaults-file--defaults-extra-file

mysql> mysqld_safe --port=port_num --defaults-file=file_name

相反,请使用以下命令:

mysql> mysqld_safe --defaults-file=file_name --port=port_num

编写mysqld_safe脚本使其通常可以启动从 MySQL 的源代码或二进制分发版安装的服务器,即使这些类型的分发版通常将服务器安装在稍微不同的位置 。(参见 第 2.1.5 节,“安装布局”。) mysqld_safe期望以下条件之一为真:

  • 服务器和数据库可以相对于工作目录( 调用mysqld_safe的目录)找到。对于二进制发行版,mysqld_safe在其工作目录下查找bindata目录。对于源代码分发,它会查找libexecvar目录。如果从 MySQL 安装目录执行mysqld_safe(例如, /usr/local/mysql对于二进制分发) ,则应该满足此条件。

  • 如果找不到相对于工作目录的服务器和数据库,mysqld_safe会尝试通过绝对路径名来定位它们。典型位置是 /usr/local/libexec/usr/local/var。实际位置由构建时配置到分布中的值确定。如果 MySQL 安装在配置时指定的位置,它们应该是正确的。

因为mysqld_safe试图找到相对于它自己的工作目录的服务器和数据库,所以你可以在任何地方安装 MySQL 的二进制分发版,只要你从 MySQL 安装目录 运行mysqld_safe :

cd mysql_installation_directory
bin/mysqld_safe &

如果mysqld_safe失败,即使从 MySQL 安装目录调用,指定 --ledir--datadir选项以指示服务器和数据库在您的系统中所在的目录。

mysqld_safe尝试使用 睡眠日期系统实用程序来确定它每秒尝试启动的次数。如果存在这些实用程序并且每秒尝试启动的次数大于 5,则 mysqld_safe在再次启动之前等待 1 整秒。这是为了防止在重复出现故障时过度使用 CPU。(缺陷 #11761530,缺陷 #54035)

当您使用mysqld_safe启动 mysqld时,mysqld_safe 安排来自其自身和来自 mysqld的错误(和通知)消息到达相同的目的地。

有几个mysqld_safe选项用于控制这些消息的目的地:

  • --log-error=file_name: 将错误信息写入指定的错误文件。

  • --syslog:将错误消息写入syslog支持记录器程序的系统。

  • --skip-syslog: 不要将错误信息写入syslog. 消息被写入默认错误日志文件(host_name.err 在数据目录中),或者如果 --log-error给出选项则写入命名文件。

如果没有给出这些选项,则默认为 --skip-syslog.

mysqld_safe写入消息时,通知会转到日志记录目的地(syslog或错误日志文件)和stdout. 错误转到日志记录目标和stderr

笔记

mysqld_safe 控制mysqld日志记录已弃用。请改用服务器的本机支持。有关详细信息,请参阅第 5.4.2.8 节,“错误记录到系统日志”syslog