サービスの実行中に、STOP SERVICE コマンドを使用してサービスを一時停止できます。
使用上の制限
サービス名で作成されたセッション内では、STOP SERVICE コマンドを実行することはできません。
前提条件
STOP SERVICEコマンドの実行には、ユーザーがALTER SYSTEM権限を持っている必要があります。サービスを一時停止する際、テナントのUnit内に一時的にオフラインになっているマシンがないこと。
テナントのUnit内に一時的にオフラインになっているマシンがあるかどうかを確認する詳細な操作については、サービスの作成 の 前提条件 を参照してください。
確認結果に基づき、オフラインになっているマシンが一時的ではなく永久的なものである場合、その永久的にオフラインになったマシンがダウンによるものであることを保証する必要があります。そうでない場合、サービスの状態が「停止」されているにもかかわらず、サービスが引き続き提供されている可能性があります。
手順
テナント管理者がクラスタのユーザーテナントまたはsysテナントにログインします。
接続例は以下のとおりです。データベースへの接続時は、実際の環境に準じてください。
obclient -h10.xx.xx.xx -P2883 -uroot@sys#obdemo -p***** -A一時停止対象のサービスの状態が
STOPPEDであるかどうかを確認します。テナントのサービス状態を確認する詳細な操作については、サービス状態の確認 を参照してください。
テナントのサービス状態が
STOPPEDでない場合、現在のテナントのSWITCHOVER_STATUSがNORMALである必要があります。つまり、現在のテナントはプライマリ/スタンバイ切り替えの中間状態にあってはなりません。テナントのSWITCHOVER_STATUSを確認する方法は以下のとおりです:システムテナントから指定したテナントの
SWITCHOVER_STATUSを確認するobclient [oceanbase]> SELECT TENANT_ID, TENANT_NAME, SWITCHOVER_STATUS FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = mysql_tenant;ユーザーテナントから自身のテナントの
SWITCHOVER_STATUSを確認するMySQLモードOracleモードMySQLモードでのクエリステートメントは以下のとおりです:
obclient [oceanbase]> SELECT TENANT_ID, TENANT_NAME, SWITCHOVER_STATUS FROM oceanbase.DBA_OB_TENANTS;Oracleモードでのクエリステートメントは次のとおりです:
obclient [SYS]> SELECT TENANT_ID, TENANT_NAME, SWITCHOVER_STATUS FROM SYS.DBA_OB_TENANTS;
サービスを一時停止します。
ステートメントは次のとおりです:
ALTER SYSTEM STOP SERVICE service_name [TENANT [=] tenant_name];ステートメント内のパラメータ:
service_name:一時停止するサービス名を指定します。TENANT [=] tenant_name:一時停止するサービスのテナント名を指定します。テナントの指定はsysテナントのみ可能で、ユーザーテナントではできません。
例:
システムテナントがテナント
mysql_tenantに属するサービスs_hzを一時停止します。obclient [oceanbase]> ALTER SYSTEM STOP SERVICE s_hz TENANT = mysql_tenant;ユーザーテナントがサービス
s_hzを一時停止します。obclient > ALTER SYSTEM STOP SERVICE s_hz;
サービスを一時停止すると、サービス名によって既に確立されていたセッションは接続が切断され、そのサービス名で新しいセッションを確立することはできなくなります。