PostgreSQL 增量備份詳解以及相關示例

2021-06-20 02:36:40 字數 2264 閱讀 8667

postgresql 沒有類似mysql 的二進位制日誌, 但是有和mysql 類似的redo log,並且有mysql 沒有的redo 歸檔功能。當然redo 的歸檔已經mariadb 和percona-mysql 已經實現。

那我們就利用pgsql的redo 歸檔,也叫wal來實現增量備份。  

假設我們已經做了乙個物理的全備,並且相應的引數都已經設定完畢,比如以下:

/home/full_backup 儲存全備的目錄。

/home/increment_log 儲存增備的目錄。

進入postgresql.conf

開啟wal.

wal_level = archive

wal_keep_segments=1

開啟wal 的歸檔模式.

archive_mode = on

archive_command = 'test ! -f /home/increment_log/%f && cp %p /home/increment_log/%f' (歸檔,也就是增量)

那麼關於wal歸檔日誌要注意的一點是,如果crash 掉了,那麼沒有歸檔的xlog也可能沒有提交到資料檔案,所以有可能這部分資料會丟失掉。所以在之後恢復的時候我們要把這部分xlog拷貝到全備的對應目錄。

恢復方法:

1. 確保沒有任何業務對pg服務進行訪問。(有可能這個時候pg已經crash掉了。)

2. 先停掉postgresql 服務。

3. cd /home/pgsql;

4. mv data data_old

6. cp -rfp /home/full_backup/* /home/pgsql (拷貝全備)

7. cp -rfp data_old/pg_xlog/000* data/pg_xlog/ (這裡是拷貝自從最後乙個增量和系統crash之間的xlog到對應的目錄。)

8. cd data

9. vi recovery.conf (新增recovery.conf檔案,讓pg認為這次是在恢復。)

restore_command='test ! -f /home/increment_log/%f && cp /home/increment_log/%f %p'

recovery_target_timeline = 'latest'

10. chown -r postgres.postgres recovery.conf

11. 啟動postgresql 服務即可。

如果正確恢復了,那麼recovery.conf 會自動更名為recovery.done.

以我的機器為例,我的版本是9.3,pg_xlog中看到的backup 資訊:

[root@postgresql-instance pg_xlog]# cat 000000010000000000000003.00000028.backup

start wal location: 0/3000028 (file 000000010000000000000003)

stop wal location: 0/30000b8 (file 000000010000000000000003)

checkpoint location: 0/3000028

backup method: pg_start_backup

backup from: master

start time: 2014-01-07 03:35:02 est

label: ytt

stop time: 2014-01-07 03:36:27 est

日誌中會看到恢復如下恢復資訊:

< 2014-01-07 05:02:47.361 est >log:  00000: starting archive recovery

< 2014-01-07 05:02:47.361 est >location: startupxlog, xlog.c:4983

< 2014-01-07 05:02:47.369 est >log: 00000: redo starts at 0/3000028

< 2014-01-07 05:02:47.369 est >location: startupxlog, xlog.c:5531

< 2014-01-07 05:02:47.371 est >log: 00000: consistent recovery state reached at 0/303fc88

增量備份 差異備份 增量備份的區別?

特點 占用空間大,備份速度慢,但恢復時一次恢復到位,恢復速度快。相當於機械人把地板打掃乾淨了,你踩過,就會有腳印 增加標記 下次機械人就把腳 印記錄下來,並且把腳印打掃乾淨 清除標記 始終保持地板乾淨。機械人每次記錄並打 掃的腳印就相當於每次增量備份的內容 以備份體積小,備份速度快,但是恢復的時候,...

全備份 增量備份 差異備份和永久增量備份

在本文中你將學到 全備份 增量備份和差異備份,以及一些新型的備份方式,例如合成備份和永久增量備份。你還將學習到如何為你公司的資料選擇最佳的資料備份型別。在相當長一段時間,主要有三種基本的備份方式 全備份,增量備份和差異備份。最近,儘管資料備份軟體廠商已經推出了一些新型別的備份方式,但是你可能對此不熟...

全備份 增量備份 差異備份和永久增量備份

在本文中你將學到 全備份 增量備份和差異備份,以及一些新型的備份方式,例如合成備份和永久增量備份。你還將學習到如何為你公司的資料選擇最佳的資料備份型別。在相當長一段時間,主要有三種基本的備份方式 全備份,增量備份和差異備份。最近,儘管資料備份軟體廠商已經推出了一些新型別的備份方式,但是你可能對此不熟...