PostgreSQLのバックアップ&リストア手法その1
pg_dumpの出力形式
出力形式はスクリプト形式とアーカイブ形式が選択できます。デフォルトはスクリプト形式で、バックアップ時のデータベースを復元するために必要なSQL文の羅列がプレーンテキストの形で出力されます。リストアはpsql コマンドを使用します。
スクリプト形式の利点は、なんといってもプレーンテキストという点です。例えば、リストアの際にエラーが発生した場合、ファイルの中身を見てエラーの原因を探ることができますし、PostgreSQL固有のSQL文を多少編集すれば、ほかのデータベース製品にもリストアすることができます。
一方、アーカイブ形式はバイナリの形で出力されます。リストアはpsqlではなく、pg_restore というリストア用のコマンドを使用します。アーカイブ形式の利点は、指定したテーブルのみといったように、データベースを部分的にリストアするなど、柔軟なリストアが可能になっている点です。そのかわり、バイナリのためファイルの中身を直接見たり編集したりすることはできません。また、アーカイブ形式には、custom形式とtar形式の2種類があり、custom形式はデフォルトで圧縮されるためファイルサイズが小さくなります。
なお、pg_dump によって作成したバックアップファイルは、CPUアーキテクチャが異なるほかのマシンや、より新しいバージョンのPostgreSQLにもリストアすることができます。
pg_dump の基本的な使用方法は次のとおりです。
$ pg_dump データベース名 > バックアップファイル名
また、pg_dump はローカル環境だけでなくリモート環境でも実行できます。
$ pg_dump -h ホスト名 -p ポート番号 データベース名 > バックアップファイル名
リストアは次のように行います。
$ createdb データベース名 $ psql -f バックアップファイル名 データベース名
上記はスクリプト形式でのバックアップ、リストアですが、アーカイブ形式でバックアップを行う場合は、-F オプションを指定して実行します。
$ pg_dump -Fc データベース名 バックアップファイル名
上の例で、c オプションはcustom形式を表し、代わりにt を指定するとtar形式になります。
アーカイブ形式のリストアは、pg_restore を使用します。
$ pg_restore -C -d postgres バックアップファイル名
-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という名前で配置しておいてください。そうすることで、パスワードはそのファイルに書かれているものが自動的に適用されるようになります。
ホスト名:ポート番号:データベース名:ユーザー名:パスワード
ただし、pg_dump 、pg_dumpall では、postgresql.confやpg_hba.confなどの設定ファイルはバックアップされないので注意が必要です。これらのファイルについては別途コピーする必要があります。これ以外のpg_dump、pg_dumpall 、pg_restore のオプションや詳細については、下記マニュアルをご参照ください。
バックアップコマンドのそのほかのオプションや詳細な使い方については下記日本語ドキュメントを参照ください(いずれも、NPO法人 PostgreSQLユーザ会Webサイト内掲載のオンラインマニュアル)。
| 2/3 |
PostgreSQLのバックアップ&リストア手法その1
・(1)PostgreSQLのダンプツールを利用したバックアップ
データベースのバックアップを作成:pg_dump
pg_dumpの内部動作
pg_dumpの出力形式
pg_dumpallの内部動作と出力
pg_dump、pg_dumpallをcronで使う際の注意点
rsyncによる差分バックアップ
| 使えば分かるPostgreSQL運用&チューニング |
TechTargetジャパン
- やはりSELECT文は永遠のテーマです (2012/2/7)
Database Expertフォーラムの2012年1月のアクセスランキングをお届けします。定番の記事を一気に追い抜いてあの記事が…… - SELECT文で取り出したデータを加工して表示する (2012/1/25)
SELECT文で取り出したデータを対象に四則演算する方法など、データを見やすくする方法を解説します - 2012年は私たちが勉強会を盛り上げる! (2012/1/23)
2011年12月、データベース業界初の女子会が発足しました。そこで、女子会を盛り上げていってくれそうな2人にお話を伺いました - 複数の条件を指定してSELECT文を実行する (2012/1/13)
複数の条件を指定してSELECT文を実行する方法と、条件指定に必要な論理演算子、比較演算子の役割を解説します
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
