RMANのバックアップをS3からOCIに移行(OSSB Cloud Module for AWS S3からDB Cloud Backup Module for OCIへの移行) (2020/03/26)

RMANのバックアップをS3からOCIに移行(OSSB Cloud Module for AWS S3からDB Cloud Backup Module for OCIへの移行 (2020/03/26)

https://blogs.oracle.com/maa/migrating-rman-backups-from-aws-s3-to-oci
投稿者:Marco Calmasini | Sr. Principal Product Manager

本ブログシリーズのパート1では、AWS S3上に存在する既存のOracleデータベースのバックアップをOCIに移行する手順を概説します。

なぜOracle DatabaseバックアップをOCIに移行するのか?

OSB Cloud Module for AWS S3はGlacier(アーカイブストレージ)をサポートしていません。
バックアップはS3にしか保存できませんが、それに伴うコストがかかり、特に長期的には非常に高くなる可能性があります。

OCIのデータベースバックアップサービスは、Object Lifecycle Policiesをサポートしています。
バックアップは、定義された期間だけ標準のオブジェクト・ストレージに保存して迅速にリストアし、
その後、アーカイブ・ストレージに自動的に階層化して長期的に低コストで保持することができます。
RMANは、必要に応じてアーカイブ・ストレージからのバックアップの呼び出しと復元を自動的に管理します。

OCIのバックアップサービスでは、ストリーム単位のライセンスは必要ありません。
OCIのデータベースバックアップクラウドモジュールは、サービスの一部として含まれており、
パフォーマンス目標を達成するために必要なだけのストリームを、任意の数のデータベースにまたがって活用することができます。

OSB Cloud Module for AWS S3とDB Backup Cloud Module for OCIは、
バックアップデータをクラウドバケットに保存する際に同じフォーマットを使用しているため、
S3からOCIへのバックアップの移行は以下のように簡単に行えます。


RMANのバックアップセットをOCIオブジェクトにマッピングする方法

RMANはバックアップセットを複数のバックアップピースとしてクラウドバケットにアップロードし、
各バックアップピースはクラウドバケット内の1つ以上のオブジェクトにマップされます。
オブジェクトの数は、バックアップ ピースのサイズに依存します。デフォルトでは、
最大10GBのサイズのバックアップピースは1つのオブジェクトとしてOCIに保存され、それ以上のサイズのバックアップピースは複数のオブジェクトを使用します。

バックアップピース名はRMANのFORMATパラメータで制御されます。
各オブジェクト名が一意であることを確認するために、少なくとも「%d_%U」を含めることをお勧めします。

%d -> DB_NAME
%U -> system generated unique identifier

例えば、以下のようになります。ORCL_ctua720h_1_1_1は、'%d_%U'形式で作成されたバックアップ・ピース・ハンドルです。

このようなバックアップピースのクラウドバケット内のオブジェクトは以下のようになります。


sbt_catalog/ORCL_ctua720h_1_1/metadata.xml (metadata manifest file)
file_chunk/<DBID>/<DBNAME>/backuppiece/<DATE>/ORCL_ctua720h_1_1/<INCARNATION>/<CHUNK#>
file_chunk/<DBID>/<DBNAME>/backuppiece/<DATE>/ORCL_ctua720h_1_1/<INCARNATION>/metadata.xml (copy of metadata.xml file)

1. OCIへのデータのコピー

RMANがリストアできるようにするためには、特定のバックアップ・ピースに関連するすべてのオブジェクトをコピーする必要があります。
実際のバックアップデータがあるチャンクと、2つのmetadata.xmlファイルです。

AWS S3バケットからOCIにオブジェクトをコピーするには、http://rclone.org から入手可能な rclone を使用します。

これはAWS S3バケットとOCI Object Storageバケットの両方にアクセスできるシステムにインストールして使用することができます。


まずは取得する必要があります。

  • AWS S3ユーザーのS3 ACCESS KEYとSECRET ACCESS KEYの取得
    • 持っていない場合は、AWSコンソール→IAM→Users→Security Credentialsと進み、Create Keysをクリックします。
  • S3 バケットがあるリージョン
  • S3 BUCKET バックアップが置かれているバケットの名前
  • OCIストレージスペース
    • OCIコンソールの右上にあるProfileに移動し、Tenacy情報セクションでTenancy:<あなたのテナント名>を選択します。
      [Object Storage Settings] の下に、[Object Storage Namespace] が表示されます。
      名前空間の値は、テナシー名またはランダムに生成された文字列のいずれかになります。名前は変更できません。
  • OCI Amazon S3互換API指定コンパートメント
    • また、同じテナント情報セクションのオブジェクト保管設定には、OCI の目的地バケットが置かれているコンパートメントがあります。
      指定されたコンパートメントを変更したい場合は、ページ上部の「オブジェクト保管設定の編集」をクリックしてください。
  • OCI CUSTOMER ACCESS KEY と SECRET KEY
    • もし、シークレットキーを持っていない場合は、OCI コンソールの右上にあるプロファイルに移動し、
      ユーザー設定を選択し、画面の左下にあるリソースの下にあるカスタマーシークレットキーをクリックして、
      シークレットキーの生成をクリックします。シークレットキーは一度しか表示されないので、メモを取っておきましょう。
  • ターゲットバケットを配置したいOCI REGION

rcloneでコピーを開始する前に、上記の情報に基づいてソースとターゲットの場所を定義するために、いくつかの環境変数を設定しなければなりません。


# export RCLONE_CONFIG_S3_TYPE=s3
# export RCLONE_CONFIG_S3_ACCESS_KEY_ID=AKIRGGSJRV23S5AG4N
# export RCLONE_CONFIG_S3_SECRET_ACCESS_KEY=TLJkltRDASlSlhVRPsRuJse2FtWLnFD5
# export RCLONE_CONFIG_S3_REGION=<region> for example: us-east-1
# export SOURCE=s3:<bucket name>

# export RCLONE_CONFIG_OCI_TYPE=s3 rclone uses S3 compatibility APIs to access OCI Object Storge
# export RCLONE_CONFIG_OCI_ACCESS_KEY_ID=b8d65742ca7385eac091f1c0e86376d1e30eb4
# export RCLONE_CONFIG_OCI_SECRET_ACCESS_KEY=26TtH1CSSFgddsEPwDoBqPCsLVrapmerolAsDg=
# export RCLONE_CONFIG_OCI_REGION=<region> for example: us-ashburn-1
# export RCLONE_CONFIG_OCI_ENDPOINT=https:// <namespace>.compat.objectstorage.<region>.oraclecloud.com

すべての設定が完了したら、rcloneコピー処理を開始し、AWS S3バケットのすべてのコンテンツがOCIターゲットにコピーされます。
バケットが存在しない場合は作成されます。

# rclone --verbose --cache-workers 64 --transfers 64 --retries 32 copy $SOURCE oci:<bucketname>




2. DBバックアップクラウドモジュールのインストール

コピーが完了すると、指定したバケットにすべてのバックアップオブジェクトが入っています。
OCIからリストアできるようにするには、DB Backup Cloud Moduleをインストールし、新しいOCIバケットを指すように設定する必要があります。

DB Backup Cloud Module のインストーラは https://www.oracle.com/database/technologies/oracle-cloud-backup-downloads.html から入手できます。

インストーラの実行方法の詳細については、
https://docs.oracle.com/en/cloud/paas/db-backup-cloud/csdbb/installing-oracle-database-cloud-backup-module-oci.html にあるドキュメントに従ってください。

また、0日(データは24時間以内にアーカイブされる)から数年の間の期間が経過した後にバックアップをアーカイブストレージに移動させるために、
バケットにライフサイクルポリシーを設定するオプションもあります。
これは、-enableArchiving、-archiveAfterBackup、-retainAfterRestore パラメータを使用して行うことができます。

注:OCI コンソールを使用して手動でポリシーを作成しないでください。
代わりに、上記の適切なアーカイブ オプションを使用して DB Backup Cloud Module インストーラーのために、
.xml ファイルに対する適切な除外が追加されるようにします。

OCI用のDB Backup Cloud Moduleは、一定期間両方のバケットにアクセスできるようにしたい場合には、
OSSB Cloud Module for AWS S3と共存させることができます。



新しい libopc.so SBT ライブラリを参照し、インストーラで作成された新しい設定ファイルを使用して、
新しくインストールされたモジュールを使用するように RMAN を設定できるようになりました。

OCIバケット内のバックアップにアクセスできるようになり、
RMAN restore validate databaseコマンドを実行してプロセスが成功したことを確認できるようになりました。


3. アーカイブストレージからのリストア

アーカイブ・ストレージ層にあるデータは、RMAN クライアントからすぐにアクセスできないため、
まず、標準オブジェクト・ストレージにリストア(または、RMAN 用語ではリコール)する必要があります。
このプロセスは、データ量にもよりますが、1時間以上かかることもあります。
オブジェクトは「アーカイブ」状態から「リストア」状態になり、その後「リストア」されます。
オブジェクトが "Restored "になるということは、標準オブジェクトストレージにあり、RMANがアクセスできることを意味します。

RMANは、'restore database preview recall'コマンドを使用して、このリコール処理を開始することができます。

別の方法として、RMAN restore database preview コマンドは、
データベースのリストア操作に必要なバックアップピースが標準オブジェクトストレージですぐに利用可能かどうか、
またはアーカイブストレージ層からバックアップをリコールする必要があるかどうかを判断するためだけに使用することができます。
この例では、RMAN リストア データベース プレビュー コマンドの出力は、
特定のバックアップ ピースがアーカイブされており、リコールが必要であることを示しています。


List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
179 Full 256.00K SBT_TAPE 00:00:02 14-SEP-19
BP Key: 179 Status: AVAILABLE Compressed: NO Tag: TAG20190914T100406
Handle: 89ubntom_1_1 Media: objectstorage.us-ashburn-..ecloud.com/n/oradbclouducm/tdemoaug22
List of Datafiles in backup set 179
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
21 Full 4715399 14-SEP-19 NO /ade/b/3380669573/oracle/dbs/tbs_25.f
using channel ORA_SBT_TAPE_1
using channel ORA_DISK_1

archived logs generated after SCN 4715399 not found in repository
recovery will be done up to SCN 4715399
Media recovery start SCN is 4715399
Recovery must be done beyond SCN 4715399 to clear datafile fuzziness

List of remote backup files
============================
Handle: 89ubntom_1_1 Media: objectstorage.us-ashburn-..ecloud.com/n/oradbclouducm/tdemoaug22
validation succeeded for backup piece
Finished restore at 14-SEP-19|



1 つ以上のファイルが "リモート" としてリストアップされている場合は、
RMAN リストア データベース プレビュー リコール コマンドを発行するか、
単に RMAN リストア データベース コマンドを発行することができます。
restore database preview recall コマンドは、アーカイブ ストレージからの呼び出しを開始して終了しますが、
restore database コマンドは、アーカイブ プロセスからの呼び出しを開始し、
それが完了するのを待ってから実際のデータベース リストアに進みます。

次の例は、restore database プレビュー リコール コマンドの出力を示しています。


List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
179 Full 256.00K SBT_TAPE 00:00:02 14-SEP-19
BP Key: 179 Status: AVAILABLE Compressed: NO Tag: TAG20190914T100406
Handle: 89ubntom_1_1 Media: objectstorage.us-ashburn-..ecloud.com/n/oradbclouducm/tdemoaug22
List of Datafiles in backup set 179
File LV Type Ckp SCN Ckp Time Abs Fuz SCN Sparse Name
---- -- ---- ---------- --------- ----------- ------ ----
21 Full 4715399 14-SEP-19 NO /ade/b/3380669573/oracle/dbs/tbs_25.f
using channel ORA_SBT_TAPE_1
using channel ORA_DISK_1

archived logs generated after SCN 4715399 not found in repository
recovery will be done up to SCN 4715399
Media recovery start SCN is 4715399
Recovery must be done beyond SCN 4715399 to clear datafile fuzziness

Initiated recall for the following list of remote backup files
==========================================================
Handle: 89ubntom_1_1 Media: objectstorage.us-ashburn ..ecloud.com/n/oradbclouducm/tdemoaug22
validation succeeded for backup piece
Finished restore at 14-SEP-19|



このブログでは、Oracle Secure Backup Cloud Module for AWS S3を使用して取得したバックアップを、
Oracle Database Backup Cloud Moduleを使用してリストアするために、
S3バケットからOCI Object Storageバケットに移動する方法を紹介しました。
これらのバックアップは、AWS EC2のコンピュートインスタンスで稼働しているデータベース、
またはオンプレミスのデータベースから取得し、オンプレミスまたはOCIインスタンス
(コンピュート、DBaaSまたはExaCS)にリストアすることができます。
DBaaSやExaCSへのリストアについては、バージョンやDBアーキテクチャなどに制限があります。
詳細については、OCIのドキュメントを確認してください。 https://docs.cloud.oracle.com/en-us/iaas/Content/Database/Tasks/migrating.htm

次回のブログでは、AWS RDS OracleインスタンスからOCIにバックアップを移行する方法を紹介します。

コメント

このブログの人気の投稿

Oracle APEXのInteractive Gridで、Oracle Formsと比較して、重複行の検証を制御/通過させる方法 (2022/07/21)

Oracle APEX 24.1の一般提供の発表 (2024/06/17)

Oracle Cloudのデータベースをオブジェクト・ストレージにバックアップする3つの方法 (2021/12/13)