EDB-Point In Time Recovery

EnterpriseDB 成功案例 – ABN AMRO Clearing
2016-07-21
2017.07.26 企業 IT 轉型:新一代巨量資料分析架構大躍進
2017-07-26

EDB_Point In Time Recovery

Point In Time Recovery

資料庫的備份還原機制是必須的,但是總不可能在每個時段做全備份的動作,所以當資料庫必須回復到某一個時間點時,就必須借助PITR(Point-In-Time-Recovery)功能,PITR在PostgreSQL或EDB都是內建功能,以下就來驗證PITR功能:

  1. 設定環境變數(使用root建立database需要的資料夾)

#mkdir -p /tmp/backup

#mkdir -p /tmp/archive

#chown -R enterprisedb.enterprisedb /tmp/backup

#chown -R enterprisedb.enterprisedb /tmp/archive

  1. 更改資料庫設定檔(postgresql.conf),啟動 archive mode。

wal_level = archive

archive_mode = on

archive_command = ‘test ! -f /tmp/archive/%f && cp %p /tmp/archive/%f’

  1. 重新啟動資料庫服務

#service ppas-9.4 restart

  1. 建立測試資料表

#edb-psql -U labuser test

edb=#create table lab_table(id number,col varchar2(100));

edb=#\q

  1. 資料庫完整備份(fullybackup)

$pg_basebackup -D /tmp/backup -Ft -z -U enterprisedb -p 5444

  1. 確認完整備份時間(T1)

edb=#select now();

  1. 新增100筆資料

edb=#insert into lab_table values (generate_series(1,100),’###’);

  1. 確認異動時間(T2)

edb=#select now();

  1. 回復至T1時間的資料(此時只有建立好的資料表,無資料)
    • 資料庫crash
    • 將資料庫完整備份檔回復到database的目錄
    • 建立並設定conf檔,並可以指定回復時間點

restore_command = ‘cp /tmp/archive/%f %p’

recovery_target_time = ‘2015-01-01 00:00:00

  • 啟動資料庫服務
  • 確認lab_table資料為0筆
  • 若想回復至100筆資料,只需重複以上步驟並且在3的時間設定為100筆資料時間即可

10.完成