PostgreSQLのポイント・イン・タイム・リカバリ(PITR)ベース
3650 ワード
データベースのPITRは、一般的なデータベースで満たされなければならない技術です.従来の物理バックアップファイルにwalのプリライトログモードバックアップを加えたリカバリが原理です.このテクニカルサポート8.*以上のバージョン.以下ではPITRの準備と復元プロセスについて主に概説する.テスト環境
一、前期の仕事は回復しなければならないし、バックアップの基礎が必要になるに違いない.そうしないと、どんなに器用な女性でも米のない炊事は難しい.1.データベースのパラメータを変更し、postgresqlを変更する.conf:
再起動後の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.ベースバックアップを終了し、アーカイブを切り替える
ここで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'データベースの起動
ログの内容:
PS:指定された時間まで復元するには、recoveryが必要です.confでrecovrey_を設定するtarget_time,recovery_target_timelineなどのパラメータ
まとめ:pitrテクノロジーは7*24時間のサポートに重要ですが、データベースが非常に小さい場合はpg_を大きくします.dumpバックアップの頻度はもっと便利かもしれませんが、大きなデータベースには必要です.
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バックアップの頻度はもっと便利かもしれませんが、大きなデータベースには必要です.