今回は、Silverの「S2 運用管理 - S2.4 バックアップ方法」からの出題です。
データベース稼働中に取得するバックアップをホットバックアップ、データベース停止中に取得するバックアップをコールドバックアップという。
取得したコールドバックアップを、同じ構成の別のマシンにコピーして、データベースを稼動させることができる。
ポイントインタイムリカバリ(PITR)の機能を使うときは、ホットバックアップを取得する。
pg_dump コマンドでバックアップを取得するときは、データベースを停止させる必要がある。
コールドバックアップを取得するには、pg_backup という専用のコマンドを使用する必要がある。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2011年7月29日
答えは、DとEです。
データベースでは重要なデータを管理しています。万一のシステムダウンやディスク故障に備えて、データのバックアップを取得しておくことは非常に重要です。また、バックアップからデータを復元しても、バックアップ取得後に更新されたデータについては、その変更分が失われてしまいますから、データの更新頻度や重要度に合わせて、適切なバックアップ戦略をとる必要があります。
データベースのバックアップにおいて最も難しいのは、最新のデータはキャッシュメモリ上にある、ディスク上のデータファイルには必ずしもキャッシュ上の変更が反映されているとは限らない、従って、ディスク上のファイルをコピーしても、それがバックアップにはならない、ということです。
データベースを停止すれば、ディスク上のデータファイルは最新の更新が確実に反映された状態になりますから、ファイルをコピーすることでバックアップを取ることができます。これをコールドバックアップと呼びます。コールド(cold)は「冷たい」という意味です。
コールドバックアップでは、tar, cpio, zipなどといったOSコマンドを使ってファイルをコピーします。また、そのバックアップを別の環境に移して、そこでデータベースのコピーを起動させることもできます。
これに対し、データベースが稼動したままの状態で取得するバックアップをホットバックアップと呼びます。ホット(hot)は「熱い」という意味です。上にも書いたとおり、ディスク上のファイルをコピーしてもバックアップにはなりませんから、キャッシュメモリ上のデータも含めてバックアップするための特別な手段が必要になります。
PostgreSQLではpg_dumpというコマンドを使って、データベースごとのホットバックアップを取得することができます。
ポイントインタイムリカバリ(PITR)という、システムダウン直前の状態にデータベースを復元するための手段もあります。
データベースでは、データの変更履歴をトランザクションログに出力しています。
PostgreSQLではこれをログ先行書き込み(WAL)と呼んでいます。最後のバックアップデータを復元し、それにバックアップ後のすべてのWALを適用すれば、データベースを最新の状態に復元できる、というのがPITRの原理です。
このバックアップでは、コールドバックアップと同様にOSコマンドを使ってファイルシステムをコピーしますが、データベースは停止しません。従って、バックアップされたファイル自体は整合性の保証されない状態になりますが、バックアップの取得前後に、pg_start_backup(), pg_stop_backup()というコマンドをデータベースサーバに発行することで、WALとの整合性を確保するようになっています。
PITRの手順は少し複雑ですが、その原理と手順については理解しておきましょう。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.