データバックアップセット(backup_set)とログアーカイブ(archivelog_piece)が業務上の理由により他のパスに手動で移動した場合、対応するbackup_setとarchivelog_pieceをロードしてからリカバリコマンドを発行することでテナントを復旧できます。
前提条件
復元対象のbackup_setとarchivelog_pieceの保存パスが取得済みであることを確認する必要があります。
復元対象のbackup_setとarchivelog_pieceが同一テナントに属していることを確認する必要があります。現在、同一テナント内のbackup_setおよびarchivelog_pieceからのみ新しいテナントへの復元が許可されています。
復元前の準備が完了していることを確認する必要があります。具体的な操作については、復元前の準備を参照してください。
操作手順
rootユーザーで、復元対象のテナントが存在するクラスタのsysテナントにログインします。(オプション)
ALTER SYSTEM RESTORE...PREVIEWコマンドを実行し、元のデータバックアップパスとログアーカイブパス、および希望する復元時刻を指定します。ステートメントは次のとおりです:
ALTER SYSTEM RESTORE FROM 'uri' UNTIL { TIME='timestamp' | SCN=scn } PREVIEW;関連パラメータの説明は以下のとおりです:
uri:元のデータバックアップパスとログアーカイブパスを指定します。英語のカンマで区切ります。TIME='timestamp' | SCN=scn:希望する復元時刻のタイムスタンプまたはSCNを指定します。このステートメントを実行する際には、時間を明示的に指定する必要があります。
完全なパラメータの説明については、ALTER SYSTEM - RESTORE PREVIEWを参照してください。
例:
OSSNFS元のデータバックアップパスとログアーカイブパスを指定し、指定されたSCN
1712650554000909004に復元することを期待します。obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'oss://test_bucket/data?host=***&access_id=****&access_key=****, oss://test_bucket/archive?host=***&access_id=****&access_key=****' UNTIL SCN = 1712650554000909004 PREVIEW;元のデータバックアップパスとログアーカイブパスを指定し、指定されたタイムスタンプ
2024-04-09 16:15:54に復元することを期待します。obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'oss://test_bucket/data?host=***&access_id=****&access_key=****, oss://test_bucket/archive?host=***&access_id=****&access_key=****' UNTIL TIME = '2024-04-09 16:15:54' PREVIEW;
元のデータバックアップパスとログアーカイブパスを指定し、指定されたSCN
1712650554000909004に復元することを期待します。obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'file:///ob_backup/data, file:///ob_backup/archive' UNTIL SCN = 1712650554000909004 PREVIEW;元のデータバックアップパスとログアーカイブパスを指定し、指定されたタイムスタンプ
2024-04-09 16:15:54に復元することを期待します。obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'file:///ob_backup/data, file:///ob_backup/archive' UNTIL TIME = '2024-04-09 16:15:54' PREVIEW;
(オプション)
SHOW RESTORE PREVIEWコマンドを実行し、指定された時間に復元するために必要なbackup_setとarchivelog_pieceを表示します。注意
ALTER SYSTEM RESTORE...PREVIEWコマンドの実行が成功した後にのみ、SHOW RESTORE PREVIEWコマンドを実行する必要があります。そうしないと、必要な結果を取得できません。obclient [oceanbase]> SHOW RESTORE PREVIEW;例えば、結果は次のとおりです:
+--------------+-----------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | backup_type | backup_id | backup_dest | description | +--------------+-----------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | BACKUP_SET | 1 | file:///ob_backup/data/backup_set_1_full | | | BACKUP_PIECE | 1 | file:///ob_backup/archive/piece_d1002r1p1 | start_scn_display: 20240409T155954, checkpoint_scn_display: 20240409T160154. | | BACKUP_PIECE | 2 | file:///ob_backup/archive/piece_d1002r1p2 | start_scn_display: 20240409T160154, checkpoint_scn_display: 20240409T160353. | | BACKUP_PIECE | 3 | file:///ob_backup/archive/piece_d1002r1p3 | start_scn_display: 20240409T160354, checkpoint_scn_display: 20240409T160553. | | BACKUP_PIECE | 4 | file:///ob_backup/archive/piece_d1002r1p4 | start_scn_display: 20240409T160554, checkpoint_scn_display: 20240409T160754. | | BACKUP_PIECE | 5 | file:///ob_backup/archive/piece_d1002r1p5 | start_scn_display: 20240409T160754, checkpoint_scn_display: 20240409T160953. | | BACKUP_PIECE | 6 | file:///ob_backup/archive/piece_d1002r1p6 | start_scn_display: 20240409T160954, checkpoint_scn_display: 20240409T161154. | | BACKUP_PIECE | 7 | file:///ob_backup/archive/piece_d1002r1p7 | start_scn_display: 20240409T161154, checkpoint_scn_display: 20240409T161354. | | BACKUP_PIECE | 8 | file:///ob_backup/archive/piece_d1002r1p8 | start_scn_display: 20240409T161354, checkpoint_scn_display: 20240409T161554. | +--------------+-----------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------+ 9 rows in setクエリ結果には、指定された時間に復元するために必要なすべてのbackup_setとarchivelog_piece、およびこれらのファイルの元のデータバックアップおよびログアーカイブ宛先における保存パスが表示されます。業務上の必要により、ユーザーが一部またはすべてのファイルを手動で他のパスまたはストレージメディアに移動した場合、実際の状況に応じて、各backup_setとarchivelog_pieceの元のパスから現在のパスへのマッピング関係を自分で維持する必要があります。
例えば、上記のクエリ結果では、
BACKUP_PIECEが1のarchivelog_pieceを使用して復元する必要がありますが、そのファイルはすでに手動でoss://test_bucket/archive/piece_1に移動されています。そのため、ADD RESTORE SOURCEコマンドでバックアップパスを読み込む際には、新しい保存パスoss://test_bucket/archive/piece_1を選択する必要があります。ADD RESTORE SOURCEコマンドを実行し、復元に必要なbackup_setとarchivelog_pieceをそれぞれ読み込みます。ロードパスのステートメントは次のとおりです:
ALTER SYSTEM ADD RESTORE SOURCE 'restore_path';ステートメントの使用方法:
restore_path:読み込むbackup_setまたはarchivelog_pieceのパスを入力します。1つのパスでも複数のパスでも構いません。注意
読み込むbackup_setまたはarchivelog_pieceがオブジェクトストレージに保存されている場合、各backup_setまたはarchivelog_pieceのパスに含まれる
host、access_id、およびaccess_keyなどのパラメータ情報がすべて同じであることが求められます。このステートメントは、同一セッション内で連続して複数回実行できます。同一セッション内で複数回実行された場合、システムは復元ソースリストに増分的に追加します。
例:
復元対象のbackup_setを読み込みます。
obclient [oceanbase]> ALTER SYSTEM ADD RESTORE SOURCE 'file:///ob_backup/data/backup_set_1_full';復元対象のarchivelog_pieceを読み込みます。
obclient [oceanbase]> ALTER SYSTEM ADD RESTORE SOURCE 'file:///ob_backup/archive/piece_d1002r1p1,file:///ob_backup/archive/piece_d1002r1p2';obclient [oceanbase]> ALTER SYSTEM ADD RESTORE SOURCE 'oss://test_bucket/archive/piece_1?host=***&access_id=x****&access_key=****';
(オプション)backup_setまたはarchivelog_pieceの読み込み中に、誤ったパスが入力されたことが判明した場合、以下のステートメントを実行して以前の入力を取り消し、正しい復元パスを再度読み込むことができます。
obclient [oceanbase]> ALTER SYSTEM CLEAR RESTORE SOURCE;すべてのパスの読み込みが成功した後、復元コマンドを呼び出します。
注意
- 復元コマンドを実行する際には、
ADD RESTORE SOURCEコマンドを実行したセッションと同一のセッションである必要があります。同一ではないセッション(元のセッションが中断されたか、新しいセッションが使用された場合)では、以前に読み込んだ復元ソースリストがクリアされます。 ADD RESTORE SOURCEコマンドを実行した後、同一セッション内でバックアップ宛先を指定する復元コマンドを使用してテナントを復元することは許可されません。- 復元コマンドを実行した後、復元が成功したかどうかにかかわらず、以前に読み込んだ復元ソースリストはクリアされます。復元コマンドを再度呼び出す必要がある場合は、復元に必要なbackup_setとarchivelog_pieceを再度読み込む必要があります。
以下のステートメントを実行します:
ALTER SYSTEM RESTORE restore_tenant_name [UNTIL {TIME='timestamp' | SCN=scn} ] WITH 'restore_option';完全なパラメータの説明については、ALTER SYSTEM - RESTOREを参照してください。
各パラメータの詳細については、物理復元関連パラメータの紹介を参照してください。
復元コマンドを呼び出す例は次のとおりです:
指定されたパスからテナント
mysqlを指定されたSCN1658285759724047000まで復元し、リソースプールをrestore_poolと指定します。// フル復元 obclient [oceanbase]> ALTER SYSTEM RESTORE mysql UNTIL SCN = 1712650554000909004 WITH 'pool_list=restore_pool'; // クイック復元 obclient [oceanbase]> ALTER SYSTEM RESTORE mysql UNTIL SCN = 1712650554000909004 WITH 'pool_list=restore_pool&method=quick';指定されたパスからテナント
mysqlを指定されたタイムスタンプ2024-04-09 16:15:54まで復元し、リソースプールをrestore_poolと指定します。// フル復元 obclient [oceanbase]> ALTER SYSTEM RESTORE mysql UNTIL TIME = '2024-04-09 16:15:54' WITH 'pool_list=restore_pool'; // クイック復元 obclient [oceanbase]> ALTER SYSTEM RESTORE mysql UNTIL TIME = '2024-04-09 16:15:54' WITH 'pool_list=restore_pool&method=quick';
- 復元コマンドを実行する際には、
次のステップ
リカバリタスクを開始した後、ビューを通じてリカバリの進捗状況と結果を確認できます。具体的な操作については、リカバリの進捗状況を確認するを参照してください。
リカバリタスクが完了した場合、低バージョンのバックアップデータから高バージョンのクラスタに復元するシナリオでは、復元されたテナントをアップグレードする必要があります。具体的な操作については、リカバリ完了後のテナントのアップグレードを参照してください。
物理リカバリのプロセスはフィジカル・スタンバイ・データベースと統一されており、物理リカバリ後のテナントはスタンバイテナントとなります。その後、このテナントはスタンバイテナントとして関連サービスを提供することも、プライマリテナントとしてサービスを提供することも可能です。スタンバイテナントとして引き続きログアーカイブを行い、ソーステナントからログを再生する詳細な操作については、スタンバイテナントによるセグメントログ再生を参照してください。スタンバイテナントをプライマリテナントに変更する詳細な操作については、スタンバイテナントをプライマリテナントに変更するを参照してください。
関連ドキュメント
リカバリに関するその他の情報については、リカバリプロセスを参照してください。