このドキュメントは、OceanBaseデータベースの物理バックアップとリストアを初めて使用するユーザーに向けて、極めてシンプルなテナントレベルのバックアップとリストアの例を通じて、最小限の操作手順を提供することを目的としています。主に以下の3つのステップで構成されています:
- ログアーカイブの開始
- データバックアップの開始
- 物理リストアの開始
注意事項
- 本記事では、1つのテナントをバックアップする例を用いて説明します。複数のテナントをバックアップする場合は、バックアップ出力先およびアーカイブ出力先の設定時に、各テナントのバックアップパスとアーカイブパスを独立した空ディレクトリとして設定する必要があります。異なるテナント間で同じパスを設定することはできません。
- OceanBaseデータベースは、同一クラスタ内でのリストアも、異なるクラスタ間でのリストアもサポートしています。
前提条件
この例では、バックアップ媒体としてNFSを使用する例を挙げています。物理バックアップとリストアを体験する前に、NFSのデプロイが完了していることを確認してください。NFSの関連操作については、NFSのデプロイを参照してください。
背景
本記事では、非暗号化テナント oracle_test を例に、物理バックアップ機能を使用して当該テナントをバックアップし、その後バックアップデータを使用して新しいテナント oracle_backup を復元する方法を紹介します。
この例の重要な情報は以下の通りです:
ソーステナントのログアーカイブパスは
/data/nfs/backup/archiveです。アーカイブはデフォルトのビジネス優先モード (Optional) を選択し、1日ごとに1つのログピースに分割します。
ソーステナントのデータバックアップパスは
/data/nfs/backup/dataです。復元対象のターゲットテナント
oracle_backupのリソースプールはrestore_pool、レプリカLocalityはF@z1とし、テナントを最新の時点に復元します。テナントが存在するクラスタがマルチレプリカクラスタの場合は、データの復元の章を参照し、手順に従って復元してください。
手順
ステップ1:ログアーカイブの開始
oracle_testテナントのテナント管理者がデータベースにログインします。以下のコマンドを実行して、アーカイブ出力先を設定します。
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive';ログアーカイブモードを有効にします。
obclient> ALTER SYSTEM ARCHIVELOG;ログアーカイブの状態が
DOINGであることを確認します。データバックアップを開始できるのは、ログアーカイブの状態がDOINGの場合のみです。obclient> SELECT * FROM DBA_OB_ARCHIVELOG\Gクエリ結果は次のとおりです:
*************************** 1. row *************************** DEST_ID: 1001 ROUND_ID: 1 INCARNATION: 1 DEST_NO: 0 STATUS: DOING START_SCN: 1706670992366131000 START_SCN_DISPLAY: 2024-01-31 11:16:32.366131 CHECKPOINT_SCN: 1706670992366131001 CHECKPOINT_SCN_DISPLAY: 2024-01-31 11:16:32.366131 COMPATIBLE: 1 BASE_PIECE_ID: 1 USED_PIECE_ID: 1 PIECE_SWITCH_INTERVAL: 86400000000 UNIT_SIZE: 1 COMPRESSION: none INPUT_BYTES: 54533925 INPUT_BYTES_DISPLAY: 52.01MB OUTPUT_BYTES: 54533925 OUTPUT_BYTES_DISPLAY: 52.01MB COMPRESSION_RATIO: 1.00 DELETED_INPUT_BYTES: 0 DELETED_INPUT_BYTES_DISPLAY: 0.00MB DELETED_OUTPUT_BYTES: 0 DELETED_OUTPUT_BYTES_DISPLAY: 0.00MB COMMENT: PATH: file:///data/nfs/backup/archive 1 row in setクエリ結果から、ログアーカイブの状態
STATUSがDOINGであることがわかります。
ログアーカイブの詳細な操作手順および説明については、ログアーカイブの章を参照してください。
ステップ2:データバックアップの開始
ログアーカイブの状態が DOING であることを確認したら、データバックアップを開始できます。
oracle_testテナントのテナント管理者としてデータベースにログインします。以下のコマンドを実行し、バックアップ先を設定します。
obclient> ALTER SYSTEM SET DATA_BACKUP_DEST='file:///data/nfs/backup/data';フルデータバックアップを開始します。
obclient> ALTER SYSTEM BACKUP DATABASE;データバックアップの終了を待ちます。
ビュー
DBA_OB_BACKUP_TASKSをクエリすることができます。クエリ結果のタスクリストが空の場合、データバックアップは終了しています。obclient> SELECT * FROM DBA_OB_BACKUP_TASKS;データバックアップの結果を確認します。
obclient> SELECT * FROM DBA_OB_BACKUP_JOB_HISTORY;クエリ結果は次のとおりです:
*************************** 1. row *************************** JOB_ID: 1 INCARNATION: 1 BACKUP_SET_ID: 1 INITIATOR_TENANT_ID: 1002 INITIATOR_JOB_ID: 0 EXECUTOR_TENANT_ID: 1002 PLUS_ARCHIVELOG: OFF BACKUP_TYPE: FULL JOB_LEVEL: USER_TENANT ENCRYPTION_MODE: NONE PASSWD: START_TIMESTAMP: 2024-01-31 11:20:59.804836 END_TIMESTAMP: 2024-01-31 11:23:08.773566 STATUS: COMPLETED RESULT: 0 COMMENT: DESCRIPTION: PATH: file:///data/nfs/backup/data 1 row in set
データバックアップの詳細な操作手順および説明については、データバックアップの章を参照してください。
ステップ3:物理復元の実行
rootユーザーとして、対象テナントが存在するクラスタのsysテナントにログインします。対象テナントに必要なリソースを作成します。
リソースユニット
unit_backupを作成します。obclient> CREATE RESOURCE UNIT unit_backup MAX_CPU 8, MEMORY_SIZE = '16G', MAX_IOPS 10240, MIN_IOPS=10240;ターゲットテナントが使用するリソースプールを作成します。可能であれば、ソーステナントと同型に保つことを推奨します。つまり、リソースプール内の
UNIT_NUMの数をソーステナントと同じにします。obclient> CREATE RESOURCE POOL restore_pool UNIT = 'unit_backup', UNIT_NUM = 1, ZONE_LIST = ('z1');
物理復元を実行し、新しいテナント
oracle_backupを復元します。obclient> ALTER SYSTEM RESTORE oracle_backup FROM 'file:///data/nfs/backup/data,file:///data/nfs/backup/archive' WITH 'pool_list=restore_pool&locality=F@z1';
物理復元の詳細な操作手順および説明については、データの復元 の章を参照してください。