RESTART
此语句停止并重启 MySQL 服务器。它需要 SHUTDOWN
权限。
使用 RESTART
的一种情况是,当无法或不方便在服务器主机上获取对 MySQL 服务器的命令行访问权限以重启它时。例如,SET PERSIST_ONLY
可以在运行时用于对只能在服务器启动时设置的系统变量进行配置更改,但服务器仍然必须重启才能使这些更改生效。RESTART
语句提供了一种从客户端会话内部执行此操作的方法,而无需在服务器主机上获取命令行访问权限。
执行 RESTART
语句后,客户端可能会发现当前连接已断开。如果启用了自动重新连接,则在服务器重启后会重新建立连接。否则,必须手动重新建立连接。
成功的 RESTART
操作需要 mysqld 在具有可用监控进程的环境中运行,以便检测为重启目的而执行的服务器关闭操作。
以下平台为 RESTART
语句提供必要的监控支持:
Windows,当 mysqld 作为 Windows 服务或独立程序启动时。(mysqld 会进行分叉,一个进程充当另一个进程的监视器,而另一个进程充当服务器。)
使用 systemd 或 mysqld_safe 管理 mysqld 的 Unix 和类 Unix 系统。
要配置监控环境以使 mysqld 启用 RESTART
语句,请执行以下操作:
以下是在 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
的分叉操作使得确定要附加到哪个服务器进程进行调试变得更加困难。为了缓解这种情况,使用 --gdb
启动服务器会禁止分叉,此外还会执行其他操作来设置调试环境。在非调试设置中,可以使用 --no-monitor
来专门禁止分叉监视器进程。对于使用 --gdb
或 --no-monitor
启动的服务器,执行 RESTART
会导致服务器直接退出而不重新启动。
Com_restart
状态变量跟踪 RESTART
语句的数量。由于状态变量在每次服务器启动时都会初始化,并且不会在重新启动后保留,因此 Com_restart
的值通常为零,但如果执行了 RESTART
语句但失败,则该值可能不为零。