RESTART
此陳述式會停止並重新啟動 MySQL 伺服器。它需要 SHUTDOWN
權限。
當無法或不方便從伺服器主機取得 MySQL 伺服器的命令列存取權以重新啟動它時,可以使用 RESTART
。例如,可以在執行階段使用 SET PERSIST_ONLY
對只能在伺服器啟動時設定的系統變數進行組態變更,但仍然必須重新啟動伺服器,這些變更才會生效。RESTART
陳述式提供了一種從用戶端連線執行此操作的方式,而無需伺服器主機上的命令列存取權。
執行 RESTART
陳述式後,用戶端可以預期目前的連線會遺失。如果啟用自動重新連線,則伺服器重新啟動後會重新建立連線。否則,必須手動重新建立連線。
成功的 RESTART
操作要求 mysqld 在具有監控程序的環境中執行,該程序可偵測為重新啟動目的而執行的伺服器關閉
這些平台為 RESTART
陳述式提供必要的監控支援
當 mysqld 作為 Windows 服務或獨立程式啟動時的 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
陳述式但失敗,則可以為非零值。