Archive LogとPITR

  • 8.0系列の目玉機能の一つだし、前々から興味あったし、バックアップの多重化は実際意味があるので、一念発起してやってみた。
  • やってみたら、あっけないほど簡単に終わってしまったのがびっくりですが、しばらく様子見してみよう。
  • 16MB単位でトランザクションログがバックアップされるようですが、僕の使い方で16MBというと、月一回ローテートする程度何じゃないだろうかと思ってみたりする。
  • 適当なところで、RTIPの方も試しておかないとなりませんかも。

postgresql.conf

  • バックアップ先は、/home/backup/pgsql
  • chmod 777 /home/backup/pgsql
 archive_command = 'cp -i %p /home/backup/pgsql/%f </dev/null'
  • ちゃんと生成されている
 ls -l /home/backup/pgsql
 total 16400
 -rw-------  1 pgsql  wheel  16777216  8 21 15:44 00000001000000000000001D

ベースバックアップの作成

  • マニュアルによると、ラベルにはバックアップ先の完全パスを使うことがよいらしいので、そんな感じに。
 データベースにスーパーユーザとして接続し、以下のコマンドを発行してください。 
 
 SELECT pg_start_backup('label'); 
 ここでlabelは、バックアップ操作を一意に識別する時に使用したい任意の文字列です。(推
 奨方法は、格納先のバックアップダンプファイルの完全パスを使用することです。) 
 pg_start_backupは、バックアップ情報を持つbackup_labelという名前のバックアップラベル
 ファイルを、クラスタディレクトリ内に作成します。 
  • ベースバックアップ開始
 su pgsql
 psql template1
 SELECT pg_start_backup('/home/backup/pgsql/');
 
 pg_start_backup
 -----------------
 0/1EC47E48
 (1 row)
  • ベースバックアップ終了
 su pgsql
 psql template1
 template1=# SELECT pg_stop_backup();
  pg_stop_backup
 ----------------
  0/1EC47E84
 (1 row)
 
 template1=# LOG:  archived transaction log file "00000001000000000000001E.00C47E48.backup"
  • 確認
 ls -l /home/backup/pgsql
 total 16402
 -rw-------  1 pgsql  wheel  16777216  8 21 15:44 00000001000000000000001D
 -rw-------  1 pgsql  wheel       255  8 21 15:54 00000001000000000000001E.00C47E48.backup
  • コレで、後は放置しておけばアーカイブログがたまると言うことかな。