サービスの実行中に、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;
サービスを一時停止すると、既にサービス名で確立されたセッションは接続が切断され、そのサービス名で新しいセッションを確立することはできなくなります。