データバックアップセット(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';
- 復元コマンドを実行する際は、
次のステップ
復元タスクを開始した後、ビューを使用して復元の進捗状況と結果を確認できます。具体的な操作については、復元進捗の確認を参照してください。
復元タスクが完了した後、低バージョンのバックアップデータから高バージョンのクラスタに復元する場合は、復元されたテナントをアップグレードする必要があります。具体的な操作については、復元完了後のテナントアップグレードを参照してください。
物理復元のプロセスは物理スタンバイデータベースと統一されており、物理復元後のテナントはスタンバイテナントとなります。その後、このテナントはスタンバイテナントとして関連サービスを提供することも、プライマリテナントに転換してサービスを提供することもできます。スタンバイテナントとしてソーステナントからのログ再生を継続する詳細な操作については、スタンバイテナントによるログのセグメント再生を参照してください。スタンバイテナントをプライマリテナントに転換する詳細な操作については、スタンバイテナントからプライマリテナントへの転換を参照してください。
関連ドキュメント
その他のリストアに関する情報については、リストアのプロセスを参照してください。