ベースバックアップ取得時の動作
ベースバックアップの動作
y 取得するバックアップは「非一貫性バックアップ」となるため、WAL(アーカイブ ログ)とセットで一貫性が維持される。
y バックアップ中の更新ブロック、および更新レコードは、WALに記録される(
full page writesが強制的に有効化される)。
y リカバリには、ベースバックアップとアーカイブWALが必要。
full page writes有効
WAL2
ベースバックアップの開始処理と終了処理
pg_start_backup(‘ backuplabel ’)
y WALセグメントの強制スイッチ(アーカイブ)
y full page writesを有効にする y チェックポイントを実行
y バックアップラベルファイルを作成
pg_stop_backup()
y full page writesの設定を戻す
y バックアップラベルファイルを読み込み、開始地点を取得 y バックアップラベルファイルを削除
y バックアップ開始点をXLOGに記録(バックアップ終了点となる)
y WALセグメントの強制スイッチ(アーカイブ)
y バックアップヒストリーファイルを作成
ベースバックアップ取得スクリプト(例)
手順
y pg_start_backupでベースバックアップを開始 y tarコマンドでベースバックアップを取得
y pg_stop_backupでベースバックアップを終了 y バックアップラベルファイルの内容を表示
#!/bin/sh psql<<__E__
SELECT pg_start_backup('backup test');
__E__
tar cvf /backups/basebackup.tar /var/lib/pgsql/9.0/data psql<<__E__
SELECT pg_stop_backup();
__E__
cat /var/lib/pgsql/9.0/data/pg_xlog/*.backup
ベースバックアップ取得(実行例)
$ sh /backups/basebackup.sh pg_start_backup
---4/4F00EA14
(1 row)
tar: Removing leading `/' from member names /var/lib/pgsql/9.0/data/
/var/lib/pgsql/9.0/data/postmaster.pid /var/lib/pgsql/9.0/data/pg_ident.conf /var/lib/pgsql/9.0/data/postgresql.conf /var/lib/pgsql/9.0/data/PG_VERSION (...snip...)
/var/lib/pgsql/9.0/data/pg_stat_tmp/pgstat.stat /var/lib/pgsql/9.0/data/pg_tblspc/
/var/lib/pgsql/9.0/data/backup_label /var/lib/pgsql/9.0/data/postmaster.opts
NOTICE: pg_stop_backup complete, all required WAL segments have been archived pg_stop_backup
---4/516F7068
(1 row)
START WAL LOCATION: 4/4F00EA14 (file 00000009000000040000004F) STOP WAL LOCATION: 4/516F7068 (file 000000090000000400000051) CHECKPOINT LOCATION: 4/5086B504
START TIME: 2011-12-12 04:37:20 JST LABEL: backup test
STOP TIME: 2011-12-12 04:37:32 JST
$