RDBMS in the Cloud: Oracle Database on AWS メモ (5) 〜バックアップとリストア〜

cloudpackエバンジェリストの吉田真吾@yoshidashingo)です。


AWS クラウドコンピューティング ホワイトペーパー に、AWS で Oracle Database を利用する際のホワイトペーパー「RDBMS in the Cloud: Oracle Database on AWS」が公開されてます。

以下、第5章「Backup and Restore」の訳です。

バックアップとリストア

Oracleデータベースのデプロイ方法に応じて、複数のバックアップ戦略が利用可能である。

Amazon RDS のバックアップとリストア

Amazon RDS の重要なメリットの一つは、バックアップやリカバリのプロセスを自動化できることや、追加のpoint-in-timeリカバリに使えるスナップショットを取得できる点である。バックアップやリカバリに精通しなくてもよく、AWS側にタスクを行わせることができる。

バックアップの自動化

DBインスタンスの自動バックアップがオンになっている場合、Amazon RDS は(バックアップ・ウィンドウ設定時間内に)自動的にデータのフルの日次スナップショットを取得し、DBインスタンスに更新が行えるようにトランザクションログをキャプチャする。自動バックアップは最大35日まで繰り返し設定できる。バックアップ・ウィンドウの間、データのバックアップが完了するまでストレージのI/Oは保留される。このI/Oサスペンション機能はたいていの場合は数分である。Multi-AZのDB配備であればバックアップがスタンバイ・インスタンスから取得されるため、このI/Oサスペンションは発生しない。

Point-in-Timeリカバリーの自動化

バックアップを喪失した場合にデータベースを修復することもできるが、オンプレミスでは複雑になりがちだ。Amazon RDS の自動バックアップ機能では、AWS Management Console や API を通じて point-in-timeリカバリーが可能である。Amazon RDS はデータベースのログ、トランザクションログをバックアップし、ユーザーの指定した保存期間にわたり格納する。これにより保存期間内の特定時点、最短で5分前にDBインスタンスをリストアできる。自動バックアップ保存期間は最大35日間まで設定可能である。

データベース・スナップショット

DBスナップショットはユーザー自身が行うDBインスタンスのバックアップである。これらのフル・データベース・バックアップは明示的に削除するまでは Amazon RDS によって保持され続ける。たとえば必要に応じて、本番データベースと同じ開発環境やテスト環境用のデータベースを作ったり、本番データベースのアップグレードのために、DBスナップショットから新しいDBインスタンスを作成できる。point-in-timeやDBスナップショットからのリストアを行う場合、新しいDBインスタンスは新しいエンドポイントとして作成される点に注意されたい。

Amazon EC2 のバックアップとリストア

Amazon EC2 インスタンス上に Oracle データベースをデプロイする場合、オンプレミスで扱うのと同様にあなた自身でデータベースのバックアップに関する責任を持つ必要がある。

Oracle Recovery Manager (RMAN)

Oracle RMAN(Recovery Manager)はOracle製のバックアップ&リカバリ管理ツールだ。コマンドラインやGUIから操作できる。大半のOracleユーザーはOracle RMANをデータベースのバックアップに利用する。AWSではバックアップの格納場所としていくつかのオプションを提供している。

Amazon S3 へのバックアップ

Amazon Simple Storage Service (Amazon S3) は Amazonのクラウドストレージである。簡潔で権限管理されたWebサービスインタッフェースを用いて、どんな量のデータでも、いつでも、格納、取り出しができる。Amazon S3 は 99.999999999% の耐障害性で設計されており、バックアップの格納先に最適である。格納したAmazon S3のオブジェクトはデータベースと同一リージョン内の複数のアベイラビリティゾーンをまたいだ複数のデバイスに冗長化されて格納される。アベイラビリティゾーンは同一リージョン内で他のアベイラビリティゾーンの障害による影響を受けないようにファシリティが完全に分離された状態で構築されており、それはつまりバックアップを格納しているリージョン内の単一のアベイラビリティゾーンに障害が発生しても、バックアップにはアクセスすることができるということである。格納されたオブジェクトは複数箇所にコピーされることに加え、Amazon S3は定期的にチエックサムを用いて、格納されたデータの整合性を検証する。データの破損が検出された場合は冗長化されたデータを用いて修復がなされる。

Oracle Secure Backup Cloud Module を用いた Amazon S3 へのバックアップ

RMANのメディア管理ライブラリ(MML)であるOracle Secure Backup (OSB) Cloud Module を用いてOracleデータベースを直接Amazon S3にバックアップすることができる。OSB Cloud ModuleはOracle Enterprise Manager Database Control と Grid Control(“Monitoring and Management” の章で後述する)や RMAN CLI を統合してRMANスクリプトのカスタマイズを記述できる。OSB Cloud Module は Oracle Database 11g を含む Oracle Database 9i R2 以降でサポートされている。

Amazon EC2 でデータベースを稼働する際にこの機能を用いる利点は以下である:

  • OSB Cloud Module で Amazon S3 に格納されたバックアップはEC2からアクセスしやすい。バックアップに即座にアクセスできることでデータベースのリストア時間を短縮できる。
  • OSBを利用すると、データのセキュリティのためのバックアップデータの暗号化ができる、またRMANの圧縮機能も使える。
  • Amazon S3を利用することで、非常に手頃な値段で、データベースバックアップのための地理的に冗長化された耐久性の高いストレージを使えることになる。
  • Amazon S3 で事実上無制限の容量を利用できる。

注意:Oracleが提供するAmazon Machine ImagesにはすでにOracle Secure Backup Cloud モジュールがインストールされている。データベースのベースにこのAMIを用いた場合、/home/oracle/scripts/osbws ディレクトリにツールがインストールされている。もし入ってなくても、Oracle Technology Network (OTN) のウェブサイトからダウンロードできる。

EBSボリュームへのバックアップ

“Performance Management”の章で記載したように、Amazon EBSボリュームはインスタンスのライフサイクルから独立して存在できるインスタンスとは別のブロックデバイスであり、直接インスタンスに接続することができる。EBSボリュームにデータベースをバックアップするRMANの使用方法は、オンプレミス環境のディスクバックアップと非常に似ており、前の章で述べた Cloud Backup モジュールを使う方法の代わりにも使える。もう一つの利点はEBSボリュームのバックアップが完了したら AWS Management ConsoleやCLI、APIを用いてスナップショットを作成できる。EBSボリュームのスナップショットは高い耐久性と信頼性の高いデータの格納先として提供されているAmazon S3 に格納される。

EBSスナップショット

データベースがEBSボリュームに格納されている場合は、RMANのバックアップに加え、ほっとバックアップモードに表領域を切替え、基底のAmazon EBSボリュームのスナップショットを取得するとよい。EBSスナップショットは AWS Management Console やCLImAPIから利用可能である。

Amazon Glacier を用いた長期間に渡るアーカイブ

Amazon Glacierは、データのアーカイブやバックアップのための非常にセキュアで高耐久性の高い、非常に低コストなストレージサービスである。Amazon S3 と Glacier には2つの重要な違いがある。

  • Amazon Glacier はS3に比べ非常に安価である。
  • Amazon Glacier はアクセスが頻繁ではなく、取り出しに数時間かかっても構わないデータのために最適化されている。


Amazon S3 と Amazon Glacier は、Amazon S3 にバックアップを格納した一定期間後に、長期間アーカイブ化するたびにAmazon Glacierに自動的に移動するような方法に代表されるように統合がされている。また、Glacier内でどのくらい保管しておくか有効期限を定義しておくこともできる。たとえばS3に15日間(任意で決められるデータベースの復元に使う可能性の最も高い期間)など。15日後、自動的に Amazon Glacierに移動し、1年経過後、Amazon Glacierからも削除する、など。これなら最小限のコストで、古いバックアップを必要に応じて数時間以内に取得できる状態で保管できる。