PostgreSQLのベースのバックアップポイントPITR復旧postgresql9.5コンパイルと経験をインストール

目的:

  データベースを復元する01、ダイレクト・ポイント・ベースのバックアップ

  特定の時点に後続の増分バックアップポイントWALログの回復に基づいて02、

実験環境:

  centos7

  postgresql9.5

01、インストールpostgresql9.5

postgresql9.5コンパイルと経験をインストール 

注:ソース・コンパイラは運用強化し、あなたはまた、RPMをインストールすることができます

02、データベースを初期化し、アーカイブディレクトリを作成します

SU - postgresの

[ラボ-210〜@のpostgres] $ ます。mkdirでarchiveDir

[ラボ-210〜@のpostgres] $ initdbの-D DATA1の-EのUTF-8

03、コンフィギュレーションにpostgresqlを変更

オープンアーカイブ

ティー<< - 'EOF' >> DATA1 / postgresql.auto.conf
のlisten_addresses = '*'
ポート= 5432
wal_level = hot_standby
max_wal_senders = 2
にarchive_mode =上
にarchive_command = 'CP%P /ホーム/ postgresの/でarchiveDir /%F'
logging_collector =上の
EOF

 ホスト認証を追加

ティー<< - 'EOF' >> DATA1 / pg_hba.confの
ローカル複製REPLの信頼
ホスト複製REPL 172.24.0.0/16信頼
EOF

04、アカウントのREPLを追加し、データを開始

$ [ラボ-210〜@のpostgres] にpg_ctl -D DATA1 /起動
開始サーバーを
ログ収集プロセスへのログ出力をリダイレクトします。$ LOG [ラボ-210〜@のpostgres]
ヒントを:未来のログ出力は、ディレクトリ"pg_log"に表示されます。

[ラボ-210〜@のpostgres] $
の$ [ラボ-210〜@のpostgres] のSS -lnt | grepを5432は、
0〜128 *をLISTEN:5432 *:*
0 128 ::: 5432をLISTEN ::: *

postgresの=#パスワード「123123」複製ログインでユーザーのREPLを作成します。
ROLEのCREATE
のpostgresを=#1
のpostgres =#\デュ
役割のリスト
役割名| 属性| メンバー
----------- + ------------------------------------ ------------------------ + -----------
のpostgres | スーパーユーザー、DB、複製、バイパスRLSを作成し、ロールを作成します| {}
REPL | レプリケーション| {}

05、ベースラインバックアップを作成

postgresの=#、表tab1(UUIDのint)を作成します。
表CREATE
のPostgres = TAB1値に#インサート(1)、(100)。
0 2 INSERT
のpostgresを=#SELECT * FROM tab1のから。
UUID
------
1
100
(2行)

mkdir DATA2 //プレーンな形

[ラボ-210〜@のpostgres] $ pg_basebackup -h 172.24.0.210 -p 5432 -U REPL -Fp -Xs -pv -D DATA2 /

mkdirベース//圧縮形式

[ラボ-210〜@のpostgres] $ pg_basebackup -h 172.24.0.210 -p 5432 -U REPL -Ft -pv -Dベース/

06、新しいデータ

Postgresは=#1 \ dtのの
関係のリスト
スキーマ| 名前| タイプ| 所有者
-------- + ------ + ------- + ----------
公共| TAB1 | 表| Postgresの
(1行)

postgresの=#表tab2(UUIDのint)を作成します。
CREATE TABLEを

Postgresの= TAB2選択generate_series(1100)に#インサート。
0 100 INSERT
のPostgres =#1
TAB2からのPostgres =#SELECT COUNT(1)。
カウント
-------
100
(1行)

postgresの=#選択pg_switch_xlog();
pg_switch_xlog
----------------
0 / A018090
(1行)

$ pg_ctlは-D DATA1 /停止[ラボ-210〜@のpostgres]
シャットダウンするようにサーバを待っている....行われ
、サーバーが停止

直接リカバリポイントの作成に基づいて07、

[ラボ-210ベース@のpostgres] $猫backup_label //が記録バックアップポイントのタイムスタンプ作成
0/9000028(ファイル000000010000000000000009):START WALのLOCATION
CHECKPOINTのLOCATION:0/9000060
BACKUP METHODを:ストリーミング
マスター:からバックアップを
START TIMEを:2019-午後07時11分40秒UTC 11-02
LABEL:pg_basebackupベースバックアップ

[postgresのラボ-210 @ベース] $猫のrecovery.confの//恢复
行うrestore_command = 'CP /ホーム/ postgresの/でarchiveDir /%F "%pを"'
recovery_target_time = '2019年11月2日午前19時11分40秒UTC'

[ラボ-210ベース@のpostgres] $ LL pg_xlog内/ // pg_basearchive xlogのは、処理されてベースのバックアップ
合計0  
drwxを------。2 PostgresのPostgresの2. 6 - 11月19:11 archive_status

$ chmodの700ベース[ラボ-210〜@のpostgres]

[postgresのラボ-210〜@] $のにpg_ctl -Dベース開始
サーバー開始

$猫ベース/ pg_log / postgresqlの-2019-11-02_192416.log [ラボ-210〜@のpostgres]
LOG:データベースシステムが中断されました。最後の2019年11月2日午前19時11分40秒UTCの時まで知ら
LOG:11:40 + 00 2019年11月2日19へのPoint-in-Timeリカバリを開始
LOG:アーカイブから復元されたログファイル"000000010000000000000009"
LOG:やり直し0/9000028で開始
LOG:一貫性の回復状態が0/9000130に到達した
アーカイブから復元されたログファイル「00000001000000000000000A」:LOG
LOG:回復トランザクション1833のコミット前に停止時間2019年11月2日19:13:24.96014 + 00
LOG: 0 / A013C20で行われたREDO
CP: '/home/postgres/archivedir/00000002.history'をstatことはできません:そのようなファイルやディレクトリの
LOGを:選択した新しいタイムラインID:2 //创建新的时间线、开天地
LOGを:アーカイブ回復コンプリート
CPは:「/home/postgres/archivedir/00000001.history」をstatことはできません:そのようなファイルやディレクトリの
LOGを:MultiXactメンバーのラップアラウンドの保護が有効になりました
LOG:データベース・システムは、接続が受け入れるように準備ができている
LOG:自動バキュームランチャが起動しました

[Postgresのラボ-210〜@] $ LLベース
合計64
-rw -------。PostgresのPostgresの206-11月1日午前19時11分2 backup_label.old //バックアップポイントファイル

......
-rw-R --- RW。PostgresのPostgresの105-11月1日午前19時24分2 //プロファイルrecovery.doneを復元

 回復を確認してください

[Postgresはラボ-210〜@] $ psqlとの
psqlの(9.5.19)
ヘルプは、 "ヘルプ"と入力します。

Postgresは=#1 \ dtのの
関係のリスト
スキーマ| 名前| タイプ| 所有者
-------- + ------ + ------- + ----------
公共| TAB1 | 表| Postgresの
(1行)

 

postgresの= tab1のから#を選択*;
UUID
------
1
100
(2行)

完全な回復を達成するためのベースライン量に基づいて08、

 注意:バックアップポイントの場合は、新しいアーカイブログがまだあります

[postgresのラボ-210〜@] $のは、mkdir DATA3
$タールXF base.tar -C DATA3 [postgresのラボ-210〜@]

[ラボ-210 DATA3 @のpostgres] $猫のrecovery.confの### デフォルトのアーカイブ・ストレージ・メモリ復元するために
行うrestore_commandを= 'CP /ホーム/ postgresの  /でarchiveDir /%F "%pを"'

$の[ラボ-210〜@のpostgres] のchmod 700 DATA3
[postgresのラボ-210〜@] $にpg_ctl -D DATA3 /スタート

[Postgresはラボ-210〜@] $ psqlとの
psqlの(9.5.19)
ヘルプは、 "ヘルプ"と入力します。

Postgresは=#1 \ dtのの
関係のリスト
スキーマ| 名前| タイプ| 所有者
-------- + ------ + ------- + ----------
公共| TAB1 | 表| Postgresの
公共| TAB2 | 表| Postgresの
(2行)

[Postgresはラボ-210 pg_log @] $ PostgreSQLのCAT-2019-11-02_193834.log
LOG:データベースシステム中断された。最終は2019年11月2日午前19時11分40秒UTC //バックアップ時点作成に時間を既知の
LOG:アーカイブリカバリの開始
ログは:ログ・ファイルを復元「000000010000000000000009は、」アーカイブから
ログ:0/9000028 ATソーホーが開始やり直し
一貫した状態の回復が0/9000130で到達:ログを
アーカイブから復元したログファイル「00000001000000000000000A」:LOG
LOG:復元されたログファイル「00000001000000000000000B」からアーカイブ
CP:STATすることはできません'/ホーム/ Postgresの/ ARCHIVEDIR / 00000001000000000000000C':そのようなファイルやディレクトリの
ログ:0 / B000060で行われたREDO
ログ:最後に完了したトランザクションログの時間にあった2019年11月2日19:14:49.458612 + 00トランザクションが発生した//最後の時間、リカバリポイント目標
LOG:アーカイブから復元されたログファイル「00000001000000000000000B」
LOG:復元されたログファイル「00000002.history」のアーカイブから
CP:「/home/postgres/archivedir/00000003.history」をstatことはできません:そのようなファイルやディレクトリの
LOGを:選択した新しいタイムラインID :3
LOG:アーカイブ回復完全//恢复完毕
CP:「/home/postgres/archivedir/00000001.history」をstatことはできません:そのようなファイルやディレクトリの
LOG:MultiXactメンバーのラップアラウンドの保護が有効になりました
LOG:データベース・システムは、受け入れる準備ができているが接続は、
LOG:自動バキュームランチャが起動しました

 PS:古いログのアーカイブポイントをクリーンアップ

おすすめ

転載: www.cnblogs.com/xiaochina/p/11783576.html