• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • RESTART语句

    RESTART
    

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

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

    注意

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

    成功的RESTART操作需要mysqld在具有监视过程的环境中运行,该监视过程可用于检测出于重启目的而执行的服务器关闭:

    • 在存在监视进程的情况下,RESTART导致mysqld终止,以便监视进程可以确定它应该启动一个新的mysqld实例。
    • 如果没有监视过程,则RESTART失败并显示错误。

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

    • Windows,当mysqld作为Windows服务或独立启动时。(mysqld分叉,一个进程充当另一个进程的监控器,另一个进程充当服务器。)
    • 使用systemd或mysqld_safe管理mysqld的 Unix和类Unix系统。

    要配置监视环境以使mysqld启用以下RESTART语句:

    1. 在设置MYSQLD_PARENT_PID环境变量设置进程的进程ID的启动值的mysqld,启动前的mysqld
    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使确定要附加到服务器上进行调试的服务器进程更加困难。为了减轻这种情况,--gdb除了要执行其他用于设置调试环境的操作外,还要通过禁止派生启动服务器。在非调试设置中,仅--no-monitor可用于抑制监视进程的派生。对于以--gdb或开头的服务器--no-monitor,执行将RESTART导致服务器直接退出而无需重新启动。

    Com_restart状态变量的磁道数RESTART的语句。因为状态变量是为每次服务器启动而初始化的,并且不会在重启后持续存在,所以Com_restart通常其值为零,但是如果RESTART执行了语句但失败了,则该值可以为非零。