PostgreSQLのバックアップ&リストア手法その1:使えば分かるPostgreSQL運用&チューニング(4)(2/3 ページ)
データベースの運用において、まず考えなければいけないのはバックアップです。ハードウェアに障害が発生したときはもちろんですが、マシンを変更する場合やPostgreSQLのメジャーバージョンアップを行う場合にもバックアップ、リストアは必要になります。そこで本稿では、バックアップとリストア方法について説明します。
pg_dumpの出力形式
出力形式はスクリプト形式とアーカイブ形式が選択できます。デフォルトはスクリプト形式で、バックアップ時のデータベースを復元するために必要なSQL文の羅列がプレーンテキストの形で出力されます。リストアはpsql コマンドを使用します。
スクリプト形式の利点は、なんといってもプレーンテキストという点です。例えば、リストアの際にエラーが発生した場合、ファイルの中身を見てエラーの原因を探ることができますし、PostgreSQL固有のSQL文を多少編集すれば、ほかのデータベース製品にもリストアすることができます。
一方、アーカイブ形式はバイナリの形で出力されます。リストアはpsqlではなく、pg_restore というリストア用のコマンドを使用します。アーカイブ形式の利点は、指定したテーブルのみといったように、データベースを部分的にリストアするなど、柔軟なリストアが可能になっている点です。そのかわり、バイナリのためファイルの中身を直接見たり編集したりすることはできません。また、アーカイブ形式には、custom形式とtar形式の2種類があり、custom形式はデフォルトで圧縮されるためファイルサイズが小さくなります。
なお、pg_dump によって作成したバックアップファイルは、CPUアーキテクチャが異なるほかのマシンや、より新しいバージョンのPostgreSQLにもリストアすることができます。
pg_dump の基本的な使用方法は次のとおりです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
また、pg_dump はローカル環境だけでなくリモート環境でも実行できます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
リストアは次のように行います。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
上記はスクリプト形式でのバックアップ、リストアですが、アーカイブ形式でバックアップを行う場合は、-F オプションを指定して実行します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
上の例で、c オプションはcustom形式を表し、代わりにt を指定するとtar形式になります。
アーカイブ形式のリストアは、pg_restore を使用します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
-C オプションを付けるとリストア前にデータベースを作成し、-d オプションは、その際に接続するデータベース名を指定します。そのため、-C オプションと併用する場合は、接続さえできればどのデータベースでもかまいません。
以上が、pg_dump を利用したバックアップ、リストア方法です。
pg_dump は、データベース単位でバックアップを取得するコマンドですので、グローバルデータと呼ばれるロールやテーブルスペースなどの情報はバックアップされないことに注意してください。
データベースクラスタ全体のバックアップを作成:pg_dumpall
前述のように、pg_dump コマンドではロールやテーブルスペースなどの情報はバックアップされません。これらの情報も含めてデータベースクラスタ全体をバックアップしたい場合は、pg_dumpall という便利なコマンドが用意されています。このコマンドは、-g オプションを指定して実行することで、グローバルデータのみをバックアップすることも可能です。
pg_dumpallの内部動作と出力
pg_dumpall は、内部動作としてはpg_dump を呼び出しているため、ほぼ同じオプションを指定できます。ただし、出力形式を指定する-F オプションは使えません。出力は常にスクリプト形式です。
pg_dumpall を使用すると、PostgreSQLを運用しているマシンの変更やPostgreSQLのバージョンアップを容易に行うことができます。
pg_dump、pg_dumpallをcronで使う際の注意点
pg_dump、pg_dumpall は、cronなどを利用して定期的に実行されることが多いですが、その際、接続時にパスワードを設定していると、それらは実行時にパスワードの入力待ち状態になってしまいます。
これを防ぐには、コマンドを実行するユーザーのホームディレクトリに、以下の書式に従ってパスワードを記述したファイルを.pgpass という名前で配置しておいてください。そうすることで、パスワードはそのファイルに書かれているものが自動的に適用されるようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ただし、pg_dump 、pg_dumpall では、postgresql.confやpg_hba.confなどの設定ファイルはバックアップされないので注意が必要です。これらのファイルについては別途コピーする必要があります。これ以外のpg_dump、pg_dumpall 、pg_restore のオプションや詳細については、下記マニュアルをご参照ください。
●バックアップコマンドのマニュアル
バックアップコマンドのそのほかのオプションや詳細な使い方については下記日本語ドキュメントを参照ください(いずれも、NPO法人 PostgreSQLユーザ会Webサイト内掲載のオンラインマニュアル)。
Copyright © ITmedia, Inc. All Rights Reserved.