TOP
>
比較データ
> コールド・バックアップ
徹底比較!! Oracle & PostgreSQL
第9回:PostgreSQLの適用範囲を考える 〜 管理・運用編
著者:
ミラクル・リナックス 高橋 強
2005/12/1
前のページ
1
2
3
4
次のページ
コールド・バックアップ
コールド・バックアップとは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のジョブを実行する方法を紹介します。
前のページ
1
2
3
4
次のページ
著者プロフィール
ミラクル・リナックス株式会社 高橋 強
1993年某SIベンダへ入社後、Oracle、DB関連のコンサルティング、チューニング、社内案件の技術支援などを10年ほど担当。2004年ミラクル・リナックス株式会社へ入社。
INDEX
第9回:PostgreSQLの適用範囲を考える 〜 管理・運用編
データベース管理作業項目
コールド・バックアップ
OEM dbconsoleを用いたRMANバックアップ実行の例
OEM dbconsoleを用いたリストア(リカバリ)実行の例