PostgreSQLのポイント・イン・タイム・リカバリ(PITR)ベース


データベースのPITRは、一般的なデータベースで満たされなければならない技術です.従来の物理バックアップファイルにwalのプリライトログモードバックアップを加えたリカバリが原理です.このテクニカルサポート8.*以上のバージョン.以下ではPITRの準備と復元プロセスについて主に概説する.テスト環境
OS  :CentOS 6.2
  :PostgreSQL 9.1.3
pg_home=/home/postgres/
pg_data=/database/pgdata/

一、前期の仕事は回復しなければならないし、バックアップの基礎が必要になるに違いない.そうしないと、どんなに器用な女性でも米のない炊事は難しい.1.データベースのパラメータを変更し、postgresqlを変更する.conf:
archive_mode = on
archive_timeout = 300   -- , 5 , 
archive_command = 'cp -i %p /home/postgres/archive/%f'
wal_level = archive 

再起動後のreload,DB 2を修正する.ファイルレベルに基づく継続的なバックアップ、a.ベースバックアップpostgres=#select pg_start_backup('backup_2012_05_20_14:22:10'); b.パッケージバックアップpg_data # cd/database # tar -cvzf pgdata.tar ./pgdata c.ベースバックアップを終了し、アーカイブを切り替える
postgres=# select pg_stop_backup();

postgres=# select pg_switch_xlog();
 pg_switch_xlog 
----------------
 0/C000020
(1 row)

postgres=# select pg_current_xlog_location();
 pg_current_xlog_location 
--------------------------
 0/C000020
(1 row)

postgres=# create table test_1(id int,name varchar(50));
postgres=# insert into test_1 values (1,'kenyon');
INSERT 0 1

ここでpg_Dataパスの下にlabelが生成され、checkpoint時間、ベースバックアップの開始時間と終了時間、ラベル名などが表示されます.以前にarchiveの3つのパラメータが設定されていたので、archiveのバックアップパスpg_home/archiveの下でアーカイブされたファイルがタイミングよく届きます.二、リカバリプロセス停止データベース#pg_stopは、データベースのクラッシュシーンを想定、pgdataデータを削除#rm-rf/database/pgdata復元前にバックアップしたtarファイル#tar xvf pgdata.tar削除pg_xlogフォルダを再構築#rm-rf pg_xlog # mkdir -p pg_xlog/archive_コピーconfファイルと#cp$PG_の変更HOME/recovery.conf.sample/database/pgdata/ # vi/database/pgdata/recovery.conf--新しいコンテンツ、リカバリファイルとパスを指定します.%f,%pは、restore_を参照してください.command='cp/home/postgres/archive/%f'%p'データベースの起動
# pg_start
[postgres@localhost archive]$ psql
spsql (9.1.3)
Type "help" for help.

postgres=# select * from test_1;
 id |  name  
----+--------
  1 | kenyon
(1 rows)
--リカバリに成功し、以前に受信した最後のアーカイブにリカバリされます.他にもconfは名前を変えてrecoveryになります.done
ログの内容:
LOG:  shutting down
LOG:  database system is shut down
LOG:  database system was interrupted; last known up at 2012-05-20 22:23:15 CST
LOG:  starting archive recovery
LOG:  restored log file "000000010000000000000002" from archive
LOG:  redo starts at 0/8000078
LOG:  consistent recovery state reached at 0/C000000
LOG:  restored log file "000000010000000000000003" from archive
LOG:  restored log file "000000010000000000000004" from archive
LOG:  restored log file "000000010000000000000005" from archive
LOG:  restored log file "000000010000000000000006" from archive
LOG:  restored log file "000000010000000000000007" from archive
cp: cannot stat `/home/postgres/archive/000000010000000000000008': No such file or directory
LOG:  could not open file "pg_xlog/000000010000000000000008" (log file 0, segment 8): No such file or directory
LOG:  redo done at 0/1C000078
LOG:  last completed transaction was at log time 2012-05-20 23:01:22.960591+08
LOG:  restored log file "000000010000000000000007" from archive
cp: cannot stat `/home/postgres/archive/00000002.history': No such file or directory
LOG:  selected new timeline ID: 2
cp: cannot stat `/home/postgres/archive/00000001.history': No such file or directory
LOG:  archive recovery complete
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started

PS:指定された時間まで復元するには、recoveryが必要です.confでrecovrey_を設定するtarget_time,recovery_target_timelineなどのパラメータ
まとめ:pitrテクノロジーは7*24時間のサポートに重要ですが、データベースが非常に小さい場合はpg_を大きくします.dumpバックアップの頻度はもっと便利かもしれませんが、大きなデータベースには必要です.