徹底比較!! Oracle & PostgreSQL 9

コールド・バックアップ

コールド・バックアップ

   コールド・バックアップとはDBMSの停止状態でリストア、リストアに必要な構成ファイルのバックアップをOSレベルで取得することをいいます。 365日24時間常時運用されるシステムが多い中、バックアップ取得のために定期的な停止時間を作りだすことは難しくなってきています。

   そういった意味で実運用においては適用しにくくなっていますが、最も単純かつ確実なバックアップ方法であることは間違いないでしょう。

   バックアップの採取はOSコマンドを用いて行うため、実行するコマンドはOracleでもPostgreSQLにおいても同じものが使用できます。 Linuxではcp/tar/dump/rsyncなどがよく用いられます。対象とするファイルはそれぞれの構成ファイル(こちらも第3回を参照)すべてとなりますが、第3回で紹介したようにOracleとPostgreSQLではOS上のファイル構成がまったく異なります。

Oracleの場合


コントロールファイル、REDOログファイル、データファイルといった構成ファイルに、必要に応じて、アーカイブログ、パラメータファイルなどを追加します。

   PostgreSQLとは違い、データファイルなどの配置が自由に行えるため、ファイル位置はディクショナリなどからリスト化した上で実行すること をお勧めします。OMF(Oracle Managed Files)やASM(Automatic Storage Management)機能を使用している場合や、RAWデバイスを使用している場合などは通常ファイルの場合と違った手順が必要となるので更に注意が必 要でしょう。

PostgreSQLの場合


データベース・クラスタを構成するディレクトリ$PGDATA以下をひとまとめにしてバックアップを採取します。こちらはファイルシステム上の特定のディレクトリ以下にひとまとめになっていますので、採取はOracleに比べると容易です。

   リストアの手順はファイルを「元の位置に戻す」だけです。ただし一貫性の取れたファイルをすべて置き換える点に注意を払う必要がありますので、採取元が散在していると戻す場合にも手間がかかることがあります。

   コールド・バックアップについていえば、OracleとPostgreSQLの差はないといっていいでしょう。違うのはOracleの方がファイル 位置が煩雑であったり、機能的に面倒な場合があるという点、PostgreSQLはファイル数が多いものの一箇所にまとまっていて扱いやすいという点だけ です。

ホット・バックアップ

   バックアップをDBMS停止中に採取するコールド・バックアップに対して、DBMSの運用中に採取するバックアップをホット・バックアップといいま す。専用のツールを用い、SQLを介してデータを出し入れするバックアップ方法も、DBMS稼動中に採取するバックアップという意味ではホット・バック アップです。

   またPostgreSQLでは実装されていませんが、Oracleではベースとなる構成ファイル(もしくはその内部のデータ)をバックアップし、ト ランザクション・ログであるREDOログのバックアップであるアーカイブ・ログを組み合わせることで運用中のバックアップ方法を提供しています。

   では、専用のツールを使ったSQL的なバックアップとOracleでのバックアップ方法について説明します。

専用のツールを使ったSQL的なバックアップ

   これは実際にDBMS内のデータを専用ツールを用いて、別のファイルへ出力するタイプのバックアップ方法です。

PostgreSQLの場合


pg_dump、pg_dumpallというツールが用意されており、PostgreSQLのバックアップといえばこの方法を指します。稼動中のバックアップは読み取り一貫性であり、ツールの起動時の内容をファイルへ出力します。

Oracleの場合


export/importが該当します。専用のツールという意味ではRMAN(Recovery Manager)を用いる方法も当てはまりますが、PostgreSQLのpg_dumpに該当する内容としてはexport/importが妥当でしょう。

   データの抽出方法やバックアップされるファイルサイズなどの問題から一部抽出可能なデータタイプに制限がある場合がありますが、 PostgreSQL、Oracleともにバージョンやアーキテクチャに依存しない出力ファイルを作成できるツールが用意されています。基本的に読み取り 一貫性を保った状態の出力となるので、リストア時はその時点へピンポイントで戻ることしかできません。(この機能ではPITRは実現できない。)

PostgreSQLでのpg_dumpall実行例

[postgres@ML30]# pg_dumpall > db_200511xx.out

   pg_dumpallコマンドはpg_dumpコマンドで-Fpのオプションをつけた場合(ダンプのフォーマットタイプ指定)と同等となりますの で、常にSQLダンプが作成されます。出力ファイルはSQL文で抽出データを再作成する形式となるため、リストア時にはテンプレートのみの構成に対して、 出力ファイルを実行する形式となります。ラージオブジェクトを含むことはできません。

   Oracleのexport/importもイメージは似ています。出力ファイルがバイナリ形式であり、ファイル分割や増分バックアップの機能を備えるなどPostgreSQLに比べるとかなり多機能であるといえます。

 

Oracleのオンラインバックアップ

   Oracleではトランザクション・ログを順次アーカイブログとしてバックアップ、保存する機能(アーカイブログモード)があります。この機能を ベースとすることにより運用中にデータベース構成ファイルをバックアップすることも可能です。また、SCN(System Change Number)や時間指定によるPITRも実現しています。

   さらにRecovery Managerの機能を使えば、データを格納する最小単位であるデータベース・ブロックのレベルでの差分バックアップやリストアまでも可能です。

   この機能や実装について詳細な説明はここではできませんが、バックアップ設計やリストアの方法は柔軟に対応可能な機能を備えています。RMANは専 用のスクリプトを記述し発行することで、そのバックアップ操作やリストアなどを実施できます。その内容の詳細を理解するにはOracleの構造を理解する 必要があり、いきなりではかなり難解です。

   ここでは10gで最も簡単にRMANによるバックアップを採取する方法としてOracle Enterprise ManagerのDBconsoleからGUI(Webブラウザ)経由でRMANのジョブを実行する方法を紹介します。

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る