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
ステートメントが有効になるように監視環境を構成するには:
mysqld を起動する前に、
MYSQLD_PARENT_PID
環境変数を、mysqld を起動するプロセスのプロセス ID の値に設定します。RESTART
ステートメントを使用して mysqld が停止を実行すると、終了コード 16 が返されます。モニタリングプロセスは、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
ステートメントが実行されたが失敗した場合はゼロ以外にすることができます。