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