Mysqld safe - MySQL服务器启动脚本

来自泡泡学习笔记
跳到导航 跳到搜索

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


注意

对于某些Linux平台,从RPM或Debian包安装MySQL包括对管理MySQL服务器启动和关闭的支持。在这些平台上,mysqld_safe未安装,因为它是不必要的。


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

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


mysqld_safe的许多选项与mysqld的选项相同。

未知于mysqld_safe的选项将在命令行上指定时传递给mysqld,但如果在选项文件的[mysqld_safe]组中指定,则会被忽略。


mysqld_safe从选项文件中的[mysqld]、[server]和[mysqld_safe]部分读取所有选项。例如,如果您指定了一个[mysqld]部分,如下所示,mysqld_safe找到并使用–log-error选项:

[mysqld]
log-error=error.log


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


如果你使用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的源或二进制分发安装的服务器,尽管这些类型的分发通常会以略有不同的位置安装服务器。mysqld_safe期望以下条件之一为真:

  • 服务器和数据库可以找到相对于工作目录(调用mysqld_safe的目录)。对于二进制分发,mysqld_safe在其工作目录中查找bin和data目录。对于源代码分发,它查找libexec和var目录。如果执行mysqld_safe来自MySQL安装目录(例如,对于二进制分发,/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尝试使用sleep和date系统实用程序来确定每秒尝试启动多少次。如果这些实用程序存在且每秒尝试启动的次数大于5,mysqld_safe在再次启动之前等待1秒。这是为了防止在重复失败的情况下过度使用CPU。


当你使用mysqld_safe启动mysqld时,mysqld_safe安排自己和mysqld的错误(和通知)消息去同一个目的地。

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

  • –log-error=file_name:将错误消息写入指定的错误文件。
  • –syslog:在支持logger程序的系统上将错误消息写入syslog。
  • –skip-syslog:不将错误消息写入syslog。如果给定了–log-error选项,则消息将写入默认的错误日志文件(数据目录中的host_name.err),否则将写入指定的文件。

如果没有给出这些选项中的任何一个,则默认为–skip-syslog。


当mysqld_safe写入一条消息时,通知将发送到日志目标(syslog或错误日志文件)和stdout。错误将发送到日志目标和stderr。

注意

从mysqld_safe控制mysqld日志已被弃用。请使用服务器的本地syslog支持代替。

选项

选项名称 描述
–basedir MySQL安装目录的路径
–core-file-size mysqld应该能够创建的核心文件的大小
–datadir 数据目录的路径
–defaults-extra-file 除了常规选项文件之外,读取指定的选项文件
–defaults-file 只读取指定的选项文件
–help 显示帮助信息并退出
–ledir 服务器所在的目录的路径
–log-error 将错误日志写入指定的文件
–malloc-lib 用于mysqld的替代malloc库
–mysqld 要启动的服务器程序的名称(在ledir目录中)
–mysqld-safe-log-timestamps 日志的时间戳格式
–mysqld-version 服务器程序名称的后缀
–nice 使用nice程序设置服务器调度优先级
–no-defaults 不读取任何选项文件
–open-files-limit mysqld应该能够打开的文件数量
–pid-file 服务器进程ID文件的文件名路径
–plugin-dir 插件安装的目录
–port 监听TCP/IP连接的端口号
–skip-kill-mysqld 不要尝试杀死迷失的mysqld进程
–skip-syslog 不要将错误消息写入syslog;使用错误日志文件
–socket 监听Unix套接字连接的套接字文件
–syslog 将错误消息写入syslog
–syslog-tag 写入syslog的消息的标签后缀
–timezone 将TZ时区环境变量设置为指定值
–user 以名为user_name的用户或数字用户ID user_id运行mysqld