推荐使用mysqld_safe在Unix上启动 mysqld服务器。 mysqld_safe添加了一些安全功能,例如在发生错误时重新启动服务器,以及将运行时信息记录到错误日志中。错误记录的描述在本节后面给出。
注意
对于某些Linux平台,从RPM或Debian软件包安装的MySQL包括对管理MySQL服务器启动和关闭的系统支持。在这些平台上, 未安装mysqld_safe,因为它是不必要的。有关更多信息,请参见 第2.5.9节“使用systemd管理MySQL Server”。
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安装目录的路径 |
–core-file-size | mysqld应该能够创建的核心文件的大小 |
–datadir | 数据目录的路径 |
–defaults-extra-file | 除常规选项文件外,还读取命名的选项文件 |
–defaults-file | 只读命名的选项文件 |
–rescure | 显示帮助信息并退出 |
–ledir | 服务器所在目录的路径 |
–log-error | 将错误日志写入命名文件 |
–malloc-lib | 用于mysqld的备用malloc库 |
–mysqld | 要启动的服务器程序的名称(在ledir目录中) |
–mysqld-safe-log-timestamps | 日志记录的时间戳格式 |
–mysqld-version | 服务器程序名称的后缀 |
–nice | 使用漂亮的程序设置服务器调度优先级 |
–no-default | 不读取选项文件 |
–open-files-limit | mysqld应该可以打开的文件数 |
–pid文件 | 服务器进程标识文件的路径名 |
–plugin-dir | 安装插件的目录 |
–port | 侦听TCP / IP连接的端口号 |
–skip-kill-mysqld | 不要试图杀死流离失所的mysqld进程 |
–skip-syslog | 不要将错误消息写入syslog;使用错误日志文件 |
- socket | 侦听Unix套接字连接的套接字文件 |
–syslog | 将错误消息写入系统日志 |
–syslog-tag | 标记后缀,用于写入系统日志的消息 |
–timezone | 将TZ时区环境变量设置为命名值 |
–user | 以具有名称user_name或数字用户ID user_id的用户身份运行mysqld |
-
显示帮助消息并退出。
-
MySQL安装目录的路径。
-
mysqld 应该能够创建 的核心文件的大小。选项值传递到 ulimit -c。
注意
该
innodb_buffer_pool_in_core_file
变量可用于减少支持它的操作系统上核心文件的大小。有关更多信息,请参见第15.8.3.7节“从核心文件中排除缓冲池页面”。 -
数据目录的路径。
-
--defaults-extra-file=*
file_name*
除了通常的选项文件外,还请阅读此选项文件。如果文件不存在或无法访问,则服务器退出并出现错误。 *
file_name
*如果给出为相对路径名而不是完整路径名,则相对于当前目录解释。如果使用它,它必须是命令行上的第一个选项。有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节“影响选项文件处理的命令行选项”。
-
仅使用给定的选项文件。如果文件不存在或无法访问,则服务器退出并出现错误。*
file_name
*如果给出为相对路径名而不是完整路径名,则相对于当前目录解释。如果使用它,它必须是命令行上的第一个选项。有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节“影响选项文件处理的命令行选项”。
-
如果mysqld_safe无法找到服务器,请使用此选项指示服务器所在目录的路径名。
此选项仅在命令行上接受,而在选项文件中不接受。在使用systemd的平台上,可以在中指定值
MYSQLD_OPTS
。请参见第2.5.9节“使用systemd管理MySQL服务器”。 -
将错误日志写入给定文件。请参见 第5.4.2节“错误日志”。
-
该选项控制mysqld_safe生成的日志输出中时间戳的格式。以下列表描述了允许的值。对于任何其他值, mysqld_safe记录警告并使用
UTC
格式。-
UTC
,utc
ISO 8601 UTC格式(与
--log_timestamps=UTC
服务器相同 )。这是默认值。 -
SYSTEM
,system
ISO 8601本地时间格式(与
--log_timestamps=SYSTEM
服务器相同 )。 -
HYPHEN
,hyphen
*
YY-MM-DD h:mm:ss
*格式,如MySQL 5.6的mysqld_safe中所示。 -
LEGACY
,legacy
*
YYMMDD hh:mm:ss
*格式,如MySQL 5.6之前的mysqld_safe中的格式 。
-
-
用于内存分配的库的名称,而不是系统
malloc()
库的名称。该选项的值必须是一个目录中/usr/lib
,/usr/lib64
,/usr/lib/i386-linux-gnu
,或/usr/lib/x86_64-linux-gnu
。该
--malloc-lib
选项通过修改LD_PRELOAD
环境值来影响动态链接,从而使加载程序能够在mysqld运行时找到内存分配库 :-
如果没有给出选项,或者没有给出值(
--malloc-lib=
),LD_PRELOAD
则不会修改该选项, 也不会尝试使用tcmalloc
。 -
在MySQL 8.0.21之前,如果将该选项指定为
--malloc-lib=tcmalloc
,则 mysqld_safe在中寻找一个tcmalloc
库/usr/lib
。如果tmalloc
找到,则将 其路径名添加到mysqld的LD_PRELOAD
值 的开头 。如果 未找到,则 mysqld_safe中止并返回错误。tcmalloc
从MySQL 8.0.21开始,
tcmalloc
不是该--malloc-lib
选项的允许值 。 -
如果将选项指定为,则将 完整路径添加到值的开头 。如果完整路径指向不存在或不可读的文件,则 mysqld_safe将中止并返回错误。
--malloc-lib=*
/path/to/some/library*
LD_PRELOAD
-
对于mysqld_safe将路径名添加到的情况
LD_PRELOAD
,它将路径添加到变量已存在的任何现有值的开头。
注意
在使用systemd管理服务器的系统上, mysqld_safe不可用。而是通过
LD_PRELOAD
在中设置来 指定分配库/etc/sysconfig/mysql
。通过将以下行添加到文件中, Linux用户可以
libtcmalloc_minimal.so
在tcmalloc
安装了软件包的任何平台上使用该 库:/usr/lib``my.cnf
[mysqld_safe] malloc-lib=tcmalloc
复制要使用特定的
tcmalloc
库,请指定其完整路径名。例:[mysqld_safe] malloc-lib=/opt/lib/libtcmalloc_minimal.so
复制 -
-
ledir
您要启动 的服务器程序的名称(在 目录中)。如果使用MySQL二进制分发版,但数据目录不在二进制分发版中,则需要此选项。如果mysqld_safe 找不到服务器,请使用该--ledir
选项指示服务器所在目录的路径名。此选项仅在命令行上接受,而在选项文件中不接受。在使用systemd的平台上,可以在中指定值
MYSQLD_OPTS
。请参见第2.5.9节“使用systemd管理MySQL服务器”。 -
该选项类似于该
--mysqld
选项,但是您仅指定服务器程序名称的后缀。基本名称假定为mysqld。例如,如果使用--mysqld-version=debug
, mysqld_safe将在目录中启动 mysqld-debug程序ledir
。如果to的参数--mysqld-version
为空,则mysqld_safe在 目录中使用 mysqldledir
。此选项仅在命令行上接受,而在选项文件中不接受。在使用systemd的平台上,可以在中指定值
MYSQLD_OPTS
。请参见第2.5.9节“使用systemd管理MySQL服务器”。 -
使用该
nice
程序将服务器的调度优先级设置为给定值。 -
不要读取任何选项文件。如果由于从选项文件中读取未知选项而导致程序启动失败,
--no-defaults
则可以使用该选项 来防止读取它们。如果使用它,它必须是命令行上的第一个选项。有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节“影响选项文件处理的命令行选项”。
-
mysqld应该能够打开 的文件数。选项值传递给ulimit -n。
注意
您必须启动mysqld_safe的是
root
正确的这功能。 -
mysqld应该为其进程ID文件使用 的路径名。
-
插件目录的路径名。
-
服务器在侦听TCP / IP连接时应使用的端口号。除非服务器由
root
操作系统用户启动,否则端口号必须为1024或更高 。 -
不要试图在启动时杀死迷路的mysqld进程。此选项仅在Linux上有效。
-
服务器在侦听本地连接时应使用的Unix套接字文件。
-
--syslog
导致将错误消息发送到syslog
支持记录器程序的系统上。--skip-syslog
禁止使用syslog
; 消息被写入错误日志文件。当
syslog
用于错误日志记录时,daemon.err
设施/严重性用于所有日志消息。不建议使用这些选项来控制mysqld 日志记录。要将错误日志输出写入系统日志,请使用 第5.4.2.8节“将错误日志记录到系统日志”中的说明。要控制工具,请使用服务器
log_syslog_facility
系统变量。 -
用于登录到
syslog
,从消息 mysqld_safe的和mysqld的 写入用的识别符mysqld_safe
和mysqld
分别。要为标识符指定后缀,请使用 ,将标识符修改为 和 。--syslog-tag=*
tag*
mysqld_safe-*
tag*``mysqld-*
tag*
不建议使用此选项来控制mysqld 日志记录。请改用服务器
log_syslog_tag
系统变量。请参见第5.4.2.8节“错误记录到系统日志”。 -
将
TZ
时区环境变量设置为给定的选项值。请查阅操作系统文档,以获取合法的时区规范格式。 -
--user={*
user_name*|*
user_id*}
以具有名称或数字用户ID的用户身份运行mysqld服务器。(在此上下文中,“用户”是指系统登录帐户,而不是授权表中列出的MySQL用户。)
user_name
**user_id
如果使用 或 选项执行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在其工作目录下查找
bin
和data
目录。对于源分发,它将查找libexec
和var
目录。如果从MySQL安装目录执行mysqld_safe(例如,/usr/local/mysql
用于二进制分发), 则应满足此条件。 - 如果找不到相对于工作目录的服务器和数据库,则mysqld_safe尝试通过绝对路径名找到它们。典型的位置是
/usr/local/libexec
和/usr/local/var
。实际位置取决于在构建发行版时配置到分发中的值。如果将MySQL安装在配置时指定的位置,则它们应该是正确的。
因为mysqld_safe试图找到相对于其自己的工作目录的服务器和数据库,所以只要在MySQL安装目录中运行mysqld_safe,就可以在任何地方安装MySQL的二进制发行版:
shell> cd mysql_installation_directory shell> bin/mysqld_safe &
复制
如果mysqld_safe失败,即使从MySQL安装目录中调用了mysqld_safe,也请指定 --ledir
和 --datadir
选项以指示服务器和数据库在系统上所位于的目录。
mysqld_safe尝试使用 sleep和date系统实用程序来确定每秒尝试启动多少次。如果存在这些实用程序,并且每秒尝试启动的次数大于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