RESTART
此陳述式會停止並重新啟動 MySQL 伺服器。它需要 SHUTDOWN
權限。
RESTART
的一個用途是當無法或不方便在伺服器主機上取得 MySQL 伺服器的命令列存取權以重新啟動它時。例如,可以在執行階段使用 SET PERSIST_ONLY
,對只能在伺服器啟動時設定的系統變數進行組態變更,但仍必須重新啟動伺服器才能使這些變更生效。RESTART
陳述式提供了一種從用戶端連線內執行此操作的方式,而無需伺服器主機上的命令列存取權。
執行 RESTART
陳述式後,用戶端可以預期目前的連線將會遺失。如果啟用自動重新連線,則會在伺服器重新啟動後重新建立連線。否則,必須手動重新建立連線。
成功的 RESTART
操作需要 mysqld 在具有監控程序可用的環境中運行,以偵測為重新啟動目的而執行的伺服器關閉。
以下平台為 RESTART
陳述式提供必要的監控支援:
Windows,當 mysqld 作為 Windows 服務或獨立執行時。(mysqld 會進行 fork,其中一個進程充當另一個進程的監控器,而另一個進程則充當伺服器。)
使用 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
的 fork 操作使得更難以確定要附加除錯的伺服器進程。為了減輕這種情況,使用 --gdb
啟動伺服器除了執行其他設定除錯環境的操作外,還會抑制 fork 操作。在非除錯設定中,--no-monitor
可以僅用於抑制 fork 監控程序。對於使用 --gdb
或 --no-monitor
啟動的伺服器,執行 RESTART
會導致伺服器僅僅退出而不重新啟動。
Com_restart
狀態變數會追蹤 RESTART
陳述式的數量。由於狀態變數是在每次伺服器啟動時初始化,且不會在重新啟動時保留,Com_restart
通常的值為零,但如果執行了 RESTART
陳述式但失敗,則該值可能不為零。