目的:
データベースを復元する01、ダイレクト・ポイント・ベースのバックアップ
特定の時点に後続の増分バックアップポイントWALログの回復に基づいて02、
実験環境:
centos7
postgresql9.5
01、インストール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:古いログのアーカイブポイントをクリーンアップ