日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【原创】PostgreSQL 增量备份详解以及相关示例

發布時間:2025/3/20 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【原创】PostgreSQL 增量备份详解以及相关示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 = archivewal_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


總結

以上是生活随笔為你收集整理的【原创】PostgreSQL 增量备份详解以及相关示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。