文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  RESTART 语句

15.7.8.8 RESTART 语句

RESTART

此语句停止并重新启动 MySQL 服务器。它需要 SHUTDOWN 权限。

使用 RESTART 的一种情况是,当无法或不便于在服务器主机上获得对 MySQL 服务器的命令行访问权限以重新启动它时。例如,SET PERSIST_ONLY 可用于在运行时对系统变量进行配置更改,这些更改只能在服务器启动时设置,但服务器仍需重新启动才能使这些更改生效。 RESTART 语句提供了一种从客户端会话中执行此操作的方法,而无需在服务器主机上进行命令行访问。

注意

执行 RESTART 语句后,客户端可以预期当前连接将断开。如果启用了自动重新连接,则在服务器重新启动后将重新建立连接。否则,必须手动重新建立连接。

成功的 RESTART 操作需要 mysqld 在具有可用的监控进程的环境中运行,以检测为重新启动目的而执行的服务器关闭

  • 在存在监控进程的情况下,RESTART 会导致 mysqld 终止,以便监控进程可以确定它应该启动一个新的 mysqld 实例。

  • 如果不存在监控进程,RESTART 会失败并返回错误。

这些平台为 RESTART 语句提供了必要的监控支持。

  • Windows,当 mysqld 以 Windows 服务或独立方式启动时。(mysqld 会进行 fork 操作,其中一个进程充当另一个进程(充当服务器)的监控器。)

  • 使用 systemd 或 mysqld_safe 来管理 mysqld 的 Unix 和类 Unix 系统。

要配置一个监控环境,以便 mysqld 启用 RESTART 语句。

  1. 在启动 mysqld 之前,将 MYSQLD_PARENT_PID 环境变量设置为启动 mysqld 的进程的进程 ID 值。

  2. mysqld 由于使用 RESTART 语句而执行关闭操作时,它会返回退出代码 16。

  3. 当监控进程检测到退出代码为 16 时,它会再次启动 mysqld。否则,它会退出。

以下是在 bash shell 中实现的最小示例

#!/bin/bash

export MYSQLD_PARENT_PID=$$

export MYSQLD_RESTART_EXIT=16

while true ; do
  bin/mysqld mysqld options here
  if [ $? -ne $MYSQLD_RESTART_EXIT ]; then
    break
  fi
done

在 Windows 上,用于实现 RESTART 的 fork 操作使得确定要附加到用于调试的服务器进程变得更加困难。为了缓解这种情况,使用 --gdb 启动服务器会抑制 fork 操作,除了它执行的其他操作来设置调试环境。在非调试设置中,--no-monitor 可以用于唯一目的,即抑制 fork 监控进程。对于使用 --gdb--no-monitor 启动的服务器,执行 RESTART 会导致服务器简单地退出,而不会重新启动。

状态变量 Com_restart 跟踪 RESTART 语句的数量。由于状态变量在每次服务器启动时都会初始化,并且不会跨重启持久化,因此 Com_restart 通常值为零,但如果 RESTART 语句执行失败,则可能为非零值。