データバックアップセット(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:元のデータバックアップパスbackup_data_destとログアーカイブパスlog_archive_destを指定します。この値には少なくとも1つのデータバックアップパスと1つのログアーカイブパスが含まれ、パスは半角カンマ(,)で区切られます。バックアップ中にアーカイブログバックアップが実行された場合(BACKUP_ARCHIVE_DESTが設定されている場合)、uriにはアーカイブバックアップの出力先パスbackup_archive_destを追加して指定する必要があります。形式はbackup_data_dest,log_archive_dest,backup_archive_destで、複数のパスはこの順序で並べる必要があります。- データバックアップ時に
TO構文を使用してバックアップ先パスを指定した場合(例:指定ディレクトリAへのバックアップ)、uri内のデータバックアップパスには、バックアップ時に指定したバックアップ先パス(A)を記入する必要があります。システムパラメータdata_backup_destで設定されたデフォルトパスではありません。形式は引き続きA,log_archive_destです。 - テナントが
DELETE INPUTパラメータを使用したアーカイブバックアップを実行した場合、形式はA,log_archive_dest,backup_archive_destです。
説明
V4.4.2系では、V4.4.2 BP3以降、
uriでアーカイブバックアップの出力先パスbackup_archive_destを指定できるようになりました。BACKUP_ARCHIVE_DESTが設定されている限り、常にuriにアーカイブバックアップパスを含めることができ、システムは必要に応じて対応するPieceを読み取ります。古いPieceがアーカイブバックアップの出力先にあり、対応するログアーカイブの出力先にあるコピーがクリーンアップされ、新しいPieceがまだログアーカイブの出力先にある場合、リストアタスクは2つの出力先から同時にログを読み取ることができます。- データバックアップ時に
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;元のデータバックアップパス、ログアーカイブパス、アーカイブバックアップの出力先パスを指定し、リストア先のタイムスタンプとして
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=****, oss://test_bucket/backup_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;元のデータバックアップパス、ログアーカイブパス、およびアーカイブバックアップの出力先パスを指定し、リストア先のタイムスタンプとして
2024-04-09 16:15:54を指定します。obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'file:///ob_backup/data, file:///ob_backup/archive, file:///ob_backup/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、またはアーカイブバックアップデータがオブジェクトストレージに保存されている場合、各パス内の
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_ARCHIVE_DESTが設定されている場合)、アーカイブバックアップの出力先パスもロードする必要があります。obclient [oceanbase]> ALTER SYSTEM ADD RESTORE SOURCE 'file:///ob_backup/backup_archive';obclient [oceanbase]> ALTER SYSTEM ADD RESTORE SOURCE 'oss://test_bucket/backup_archive?host=***&access_id=****&access_key=****';
(オプション)backup_set、archivelog_piece、またはアーカイブバックアップパスのロード中に誤ったパスを入力した場合、以下のステートメントを実行して前回の入力を取り消し、正しいリストアパスを再ロードできます。
obclient [oceanbase]> ALTER SYSTEM CLEAR RESTORE SOURCE;すべてのパスのロードが成功した後、リストアコマンドを呼び出します。
注意
- リストアコマンドを実行する際には、
ADD RESTORE SOURCEコマンドを実行したセッションと同じセッションである必要があります。異なるセッション(元のセッションが中断された場合や新しいセッションを使用した場合)の場合、以前にロードされたリストアソースリストはクリアされます。 ADD RESTORE SOURCEコマンドを実行した後、同一セッション内でバックアップの出力先を指定するリストアコマンドを使用してテナントをリストアすることはできません。- リストアコマンドを実行した後、リストアが成功したかどうかにかかわらず、以前にロードされたリストアソースリストはクリアされます。リストアコマンドを再度実行する必要がある場合は、リストアに必要なbackup_set、archivelog_piece、およびアーカイブバックアップパスを再ロードする必要があります。
- アーカイブバックアップの出力先には、フリーズ済み(FROZEN)のPieceのみが保存されます。より新しい時点までリストアする場合、通常は新しいPieceとACTIVE状態の末尾部分を含むログアーカイブパスも提供する必要があります。ログアーカイブパスとアーカイブバックアップパスの両方を同時にロードすることを推奨します。リストア中、必要なPieceが1つでもログアーカイブパスとアーカイブバックアップパスのどちらにも存在しない場合、リストアは失敗します。
以下のステートメントを実行します:
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';
- リストアコマンドを実行する際には、
次のステップ
リストアタスクの開始後、ビューを通じてリストアの進捗状況と結果を確認できます。詳細な操作については、リストアの進捗状況を確認するを参照してください。
リストアタスク完了後、低いバージョンのバックアップデータから高いバージョンのクラスタにリストアするシナリオの場合、リストアされたテナントのアップグレードも行う必要があります。詳細な操作については、リストア完了後のテナントのアップグレードを参照してください。
物理リストアのプロセスはフィジカルスタンバイ・データベースと統一されており、物理リストア後のテナントはスタンバイテナントとなります。その後、このテナントはスタンバイテナントとして関連サービスを提供することも、プライマリテナントに切り替えてサービスを提供することもできます。スタンバイテナントとしてログアーカイブを利用し、ソーステナントのログを継続してリプレイする詳細な操作については、スタンバイテナントによるログのセグメントリプレイを参照してください。スタンバイテナントをプライマリテナントに切り替える詳細な操作については、スタンバイテナントをプライマリテナントに切り替えるを参照してください。
関連ドキュメント
リストアに関する詳細は、リストアプロセスを参照してください。