バックアップの基礎
ファイル形式の種類
バックアップファイルの出力形式には、スクリプト形式とアーカイブ形式の2種類存在する。
-
プレーンテキスト形式
- テキスト形式で作成されるので生データが見える
- 拡張子はdumpでもsqlでもよい
- リストアする時はpsqlコマンドを利用する(pg_restoreコマンドは利用できない)
- データ件数が多いとファイル容量が大きくなる
- 異なるデータベースにデータ移行する時にも利用できる
-
カスタムアーカイブ形式
- バイナリ形式で出力される
- リストアする時はpg_restoreコマンドを利用する
- 実運用ではこの形式がよく使われる
-
TARアーカイブ形式
- バイナリ形式で出力される(カスタム形式とは圧縮形式が異なる)
- リストアする時はpg_restoreコマンドを利用する
バックアップの種類
-
論理バックアップ
1データベース単位でバックアップする場合はpg_dumpコマンドを使うが、全てのデータベースに対して一括でバックアップを取る場合はpg_dumpallコマンドを使う。バックアップされるのはデータだけでなく、リストアする時に利用されるcreate tableのSQL文も一緒に作られてバックアップファイルが作成される。また、データベースのサービスを停止する事なく利用できる。(逆にいうとpostgreSQLが起動中でないとコマンドは使えない)日次のバックアップを取るときは基本的に論理バックアップを取る。定期的にバックアップを取る場合は、pg_dumpコマンドを埋め込んだシェルスクリプトを作って、cronコマンドでスケジューリングすることになる。バックアップを行うユーザーはスーパーユーザーとなる。 -
物理バックアップ
postgreSQLのサービスを停止させて、cpコマンドでデータベースファイルそのものを、ファイル単位でバックアップを取る方法。DB稼働中は排他がかかるためコピーはできない。基本的にデータ移行などの用途で利用する。
バックアップの取り方
psqlコマンドでPostgreSQLにログインしてから、pg_dumpコマンドでバックアップを取ることもできるが、pg_dumpコマンドだけでPostgreSQLへのログインとバックアップを同時に実行することもできる。
psqlコマンドでPostgreSQLにログインする。
psql -h 192.168.19.xx -d test_db -p 5432 -U postgres
psql -h IPアドレス -d データベース名 -p ポート番号 -U PostgreSQLのユーザーID
PostgreSQLへのログインとバックアップを同時に実行する。
オプション-tはテーブル名。usersテーブルのみバックアップを取っている。
オプション-fは作成されるバックアップファイル名。
pg_dump -h 192.168.19.xx -p 5432 -U postgres -t users -f /home/tanaka/users.dump
pg_dump -h IPアドレス -p ポート番号 -U PostgreSQLのユーザーID -t テーブル名 -f 出力先ファイル名
オプション-Fpをつけると、テキスト形式でバックアップがとれます。
オプション-cをつけると、リストアするときにデータベースを削除するコマンドがバックアップファイルに含まれます。
オプション-dはデータベース名。
pg_dump -Fp -c -h 192.168.33.xx -d test_db -p 5432 -U vagrant -f /vagrant/test_db.sql
pg_dump -Fp -c -h IPアドレス -d データベース名 -p ポート番号 -U ユーザーID -f 出力先ファイル名