サービスが実行中の場合、STOP SERVICE コマンドを使用してサービスを一時停止できます。
制限事項
サービス名に基づいて作成されたセッション内で STOP SERVICE コマンドを実行することは許可されていません。
前提条件
STOP SERVICEコマンドを実行するには、ユーザーにALTER SYSTEM権限が付与されている必要があります。サービスを一時停止する際、テナントのユニット内に一時的にオフラインになっているマシンがないことが求められます。
テナントのユニット内に一時的にオフラインになっているマシンがあるかどうかを確認する詳細な手順については、サービスの作成 の 前提条件 を参照してください。
確認結果に基づき、オフラインになっているマシンが一時的ではなく永続的なものである場合、そのマシンがダウンによってオフラインになっていることを保証する必要があります。そうでない場合、サービスの状態は停止されていることを示しているものの、実際には引き続きサービスが提供されている可能性があります。
操作手順
テナント管理者は、クラスタのユーザーテナントまたは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;
サービスを一時停止すると、元々サービス名に基づいて作成されたセッションは接続が切断され、そのサービス名に基づいて新しいセッションを作成することはできなくなります。