暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

4.3.2 mysqld_safe -MySQL服务器启动脚本

原创 由迪 2020-11-15
2045

推荐使用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

如果使用 或 选项执行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安装目录中运行mysqld_safe,就可以在任何地方安装MySQL的二进制发行版:

shell> cd mysql_installation_directory
shell> bin/mysqld_safe &
复制

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

mysqld_safe尝试使用 sleepdate系统实用程序来确定每秒尝试启动多少次。如果存在这些实用程序,并且每秒尝试启动的次数大于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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论