これまで、Oracleが稼働するインフラ環境に関する選択肢として、以下の3つを提示した。
- オンプレミスのサーバにOracle Databaseをインストールする、「Oracle Database on オンプレミスサーバ」
- AWSの仮想サーバ「EC2」上にOracle Databaseをインストールする、「Oracle Database on EC2」
- AWSのOracle Databaseのフルマネージドサービスを利用する、「RDS for Oracle」
今回は、この3つの環境に関して、Oracle Databaseのバックアップの方法をそれぞれ整理し、比較していきたいと思う。
Oracle Databaseを運用していくうえで最も重要なポイントはデータベースの「バックアップ」である。バックアップにも、export/importを利用する論理バックアップ、データベースを停止させてからバックアップを行うオフラインバックアップなどが存在するが、ここでは、データベース全体をデータベースの停止をすることなく物理バックアップを取得する「オンラインバックアップ」に言及し、3つの環境におけるポイントを比較していこう。
(1)Oracle Database on オンプレミスサーバ
オンプレミスでOracle Databaseを構築する場合、バックアップは自分で設計/構築する必要がある。バックアップの方法は大別して2つ。RMAN(Recovery Manager)を利用する方法と、SQLとストレージの機能やOSのコマンドなどを組み合わせて利用する方法である。オンプレミスサーバ上にOracle Databaseを構築する場合はもちろんどちらも可能である。
RMANはOracle Databaseに付属している標準のバックアップツールのため、オプションの追加での購入などは行わなくてよい。予算が少ないプロジェクトでも本格的なバックアップ運用を実現したいう場合におすすめなツールである。
(2)Oracle Database on EC2
次に、Oracle DatabaseをEC2上に構築するOracle Database on EC2の場合を考える。オンプレミスでOracle Databaseを構築する場合と同様に、RMANを利用する方法と、SQLとストレージ機能、OSのコマンドを組み合わせて利用する方法などにより、オンラインバックアップを自ら設計/構築する必要があることに変わりはない。
しかし、前回に説明したように、EC2上にOracle Databaseを構築する場合、永続的な記憶領域として、EC2用のディスクであるEBS(Elastic Block Store)を利用し、EBS上にOracle Databaseのデータファイルなどを配置することになる。実は、このEBSにはEBS Snapshotと呼ばれる、非常に強力なSnapshot機能が搭載されている。
EBS Snapshotはディスクイメージを取得するが、その容量はディスクサイズそのものではなく実使用量分をさらに圧縮した結果のサイズになるため、EBSのディスクサイズよりも非常に小さなサイズとなる。また、2回目以降は差分のみ取得されるため、実容量はとても小さい。さらに、EBS Snapshotのバックアップデータは、同じAWSのS3と呼ばれるサービス上に格納されるが、EBS Snapshotの料金はこのS3上に保存されている実データに対して課金されることになり、非常に安価に利用可能だ。
当社でも多くのお客さまでOracle DatabaseをEC2上へ構築する案件をこなしてきたが、当社がこうしたOracle Database on EC2でバックアップ設計/構築する多くの場合で、SQLコマンドとこのEBS Snapshotを利用したバックアップの設計/構築を行っている。
(3)RDS for Oracle
AWSのRDS for Oracleを利用する場合は、バックアップが自動で取得される「自動バックアップ」が標準で搭載されている。この自動バックアップはデータベースとトランザクションログを自動でバックアップしており、最大5分前まで、保持期間内の任意のタイミングにDBインスタンスを復元することができる非常に強力なものである(※自動バックアップの保存期間は最大35日間)。
また、RDS for OracleにはDBスナップショットと呼ばれる、ユーザー開始型のバックアップも存在するが、このDBスナップショットを取得することで、明示的にスナップショットを削除するまで、完全なバックアップとしてAmazon RDSに保存され、このDBスナップショットからいつでも新しいDBインスタンスを作成することも可能である。
まさに、データベースの運用、構築など面倒な作業はクラウド環境に任せてしまう、「クラウドネイティブ」な環境がRDS for Oracleを利用することにより可能となる。
RDS for Oracleの自動バックアップの設定はAWS Management ConsoleからGUIで設定可能。また、DBスナップショットに関しても同様にAWS Management ConsoleからGUIで取得可能 |
山口 正寛
1984年大阪府生まれ。データベースエンジニア、コンサルタントなどの活動経験が豊富。現在は株式会社システムサポートの東京支社 クラウドコンサルティング事業部 シニアマネージャーとして、主にDatabase(特にOracle、Redshift)領域を担当。Amazonの提供するリレーショナルデータベースのAuroraにも詳しい。クラウド工房 ブログでときどき関連情報を発信している。職場ではオフィスグリコを絶賛消費中。