リストアが成功すると、そのテナントはスタンバイテナントになります。その後、RECOVERコマンドを実行することで、リストア時に指定したログアーカイブのソースから、引き続きログをリプレイすることができます。
背景情報
物理リストアのプロセスは、フィジカル・スタンバイ・データベースの仕組みと共通しています。物理リストア完了後のテナントはスタンバイテナントとなります。その後、このテナントはスタンバイテナントとしてサービスを提供することも、プライマリテナントに切り替えてサービスを提供することも可能です。
前提条件
リストア操作が成功したことを確認してください。リストア結果の確認については、リストア結果の確認を参照してください。
システムテナントによるスタンバイテナントのログリプレイ
rootユーザーを使用して、クラスタのsysテナントにログインします。以下のステートメントを実行して、ログリプレイ操作を実行します。
ステートメントは以下のとおりです:
指定されたタイムスタンプまでログをリプレイし、そのタイムスタンプのポイントを含める。
obclient [(none)]> ALTER SYSTEM RECOVER STANDBY TENANT tenant_name UNTIL TIME='timestamp';指定されたSCNまでログをリプレイし、そのSCNのポイントを含める。
obclient [(none)]> ALTER SYSTEM RECOVER STANDBY TENANT tenant_name UNTIL SCN=scn;終了点なしで、アーカイブソースのログを継続的にリプレイする。
obclient [(none)]> ALTER SYSTEM RECOVER STANDBY TENANT tenant_name UNTIL UNLIMITED;説明
このコマンドでは一度に1つのスタンバイテナントのみを指定できます。複数のテナントを指定する場合は、このコマンドを繰り返し実行する必要があります。
ステートメントが正常に実行された後、スタンバイテナントのログリプレイをキャンセルする場合は、以下のステートメントを実行できます。
obclient [(none)]> ALTER SYSTEM RECOVER STANDBY TENANT tenant_name CANCEL;スタンバイテナントのログリプレイの進捗状況を確認します。
obclient(root@sys)[oceanbase]> SELECT TENANT_ID, LS_ID, STATUS, READABLE_SCN FROM oceanbase.CDB_OB_LS WHERE TENANT_ID=xxx;ログがリプレイされたタイムスタンプを確認するには、
SCN_TO_TIMESTAMP関数を使用して変換できます。ステートメントは以下のとおりです。obclient(root@sys)[oceanbase]> SELECT TENANT_ID, LS_ID, STATUS, SCN_TO_TIMESTAMP(READABLE_SCN) FROM oceanbase.CDB_OB_LS WHERE TENANT_ID=xxx;
スタンバイテナントによる自身のログリプレイ
スタンバイテナントは、自身のログリプレイを開始することもできます。
ユーザーテナントのテナント管理者でデータベースにログインします。
説明
MySQLモードの管理者ユーザーは
rootユーザーで、Oracleモードの管理者ユーザーはSYSユーザーです。以下のステートメントを実行して、ログリプレイ操作を実行します。
ステートメントは以下のとおりです:
指定されたタイムスタンプまでログをリプレイし、そのタイムスタンプのポイントを含める。
obclient [(none)]> ALTER SYSTEM RECOVER STANDBY UNTIL TIME='timestamp';指定されたSCNまでログをリプレイし、そのSCNのポイントを含める。
obclient [(none)]> ALTER SYSTEM RECOVER STANDBY UNTIL SCN=scn;終了点なしで、アーカイブソースのログを継続的にリプレイする。
obclient [(none)]> ALTER SYSTEM RECOVER STANDBY UNTIL UNLIMITED;説明
このコマンドでは一度に1つのスタンバイテナントのみを指定できます。複数のテナントを指定する場合は、このコマンドを繰り返し実行する必要があります。
ステートメントが正常に実行された後、スタンバイテナントのログリプレイをキャンセルする場合は、以下のステートメントを実行できます。
obclient> ALTER SYSTEM RECOVER STANDBY CANCEL;スタンバイテナントのログリプレイの進捗状況を確認します。
obclient> SELECT LS_ID, STATUS, READABLE_SCN FROM oceanbase.DBA_OB_LS;ログがリプレイされたタイムスタンプを確認するには、
SCN_TO_TIMESTAMP関数を使用して変換できます。ステートメントは以下のとおりです。obclient> SELECT LS_ID, STATUS, SCN_TO_TIMESTAMP(READABLE_SCN) FROM oceanbase.DBA_OB_LS;