PG-使用pgBackRest備份恢復工具實驗


pgBackRest

pgBackRest是一款開源的備份還原工具,目標旨在為備份和還原提供可靠易用的備份。

特性

  • 支持並行備份和恢復

    • pgBackRest 通過並行處理解決了壓縮瓶頸,利用多個內核進行壓縮
  • 支持本地或遠程備份恢復操作

    • 自定義協議允許 pgBackRest 以最少的配置通過 SSH 在本地或遠程備份、恢復和存檔數據
  • 支持多個存儲庫

    • 多個存儲庫允許本地存儲庫具有最少保留時間以實現快速恢復,而遠程存儲庫具有更長保留時間以實現整個企業的冗余和訪問。
  • 支持全量,增量和差異備份

  • 備份輪換和存檔到期

    • 可以為完整備份和差異備份設置保留策略,以創建任何時間范圍的覆蓋范圍。可以為所有備份或嚴格為最近的備份維護 WAL 存檔。在后一種情況下,使舊備份保持一致所需的 WAL 將保留在存檔中。
  • 檢查備份完整性

    • 為備份中的每個文件計算校驗和,並在恢復期間重新檢查。
  • 頁校驗和

    • PostgreSQL 9.3開始支持頁面級校驗和,如果啟用了頁面校驗和,pgBackRest 將驗證備份期間復制的每個文件的校驗和
  • Backup Resume

    • 可以從停止的點恢復中止的備份。
  • 流壓縮和校驗和

    • 壓縮和校驗和計算在文件被復制到存儲庫時以流方式執行,無論存儲庫位於本地還是遠程。
  • 增量還原

  • 並行、異步 WAL 推送和獲取

  • 表空間和鏈接支持

  • 支持S3、Azure 和 GCS 兼容對象存儲

    • pgBackRest 存儲庫可以位於 S3、Azure 和 GCS 兼容的對象存儲中,以允許幾乎無限的容量和保留。
  • 加密

  • 與 PostgreSQL >= 8.3 兼容

安裝配置

創建目錄

mkdir -p /ups/app/postgresql/pgbackrest/{conf,log}
mkdir -p /ups/data/pgdata/repos
chown -R postgres:postgres /ups/app/postgresql/pgbackrest
chown -R postgres:postgres /ups/data/pgdata/repos
chmod -R 750 /ups/data/pgdata/repos
chmod -R 755 /ups/app/postgresql/pgbackrest

解壓

tar -xf pgbackrest-release-2.35.tar.gz

編譯

cd pgbackrest-release-2.35/src
./configure --prefix=/ups/app/postgresql/pgbackrest/
make -j2
make install -j2

配置環境變量

echo "export PATH=/ups/app/postgresql/pgbackrest/bin:\$PATH" >> ~/.bash_profile
. ~/.bash_profile

配置PostgreSQL數據庫數據存儲目錄

cat >/ups/app/postgresql/pgbackrest/conf/pgbackrest.conf <<EOF
[demo]
pgl-path=/ups/data/pgdata/pgbackrest

# 倉庫路徑加載在pgBackRest配置文件
[global]
repol-path=/ups/data/pgdata/repos
EOF

檢查確認數據庫已配置歸檔(可選)

vi $PGDATA/postgresql.auto.conf
archive_mode = 'on'
archive_command = 'pgbackrest --stanza=demo archive-push %p'
log_line_prefix = ''
max_wal_senders = '3'
wal_level = 'replica'

配置歸檔保留策略

vi /ups/app/postgresql/pgbackrest/conf/pgbackrest.conf
[demo]
pg1-path=/ups/data/pgdata/pgbackrest
pg1-host-config-path=/ups/data/pgdata/pgbackrest
pg1-host-port=22
pg1-host-user=postgres
pg1-host=progs
pg1-port=5432
pg1-user=postgres
  
[global]
repo1-path=/ups/data/pgdata/repos
repo1-retention-full=2
  
[global:archive_push]
compress-level=3

創建存儲空間並檢查配置

# 創建存儲空間
pgbackrest --stanza=demo --log-level-console=info stanza-create
# 檢查配置
pgbackrest --stanza=demo --log-level-console=info check

使用

語法

Usage:
 pgbackrest [options] [command]
  
Commands:
 archive-get Get a WAL segment from the archive.
 archive-push Push a WAL segment to the archive.
 backup Backup a database cluster.
 check Check the configuration.
 expire Expire backups that exceed retention.
 help Get help.
 info Retrieve information about backups.
 restore Restore a database cluster.
 stanza-create Create the required stanza data.
 stanza-delete Delete a stanza.
 stanza-upgrade Upgrade a stanza.
 start Allow pgBackRest processes to run.
 stop Stop pgBackRest processes from running.
 version Get version.
  
Use 'pgbackrest help [command]' for more information.

備份

# 執行全量備份
pgbackrest --stanza=demo --log-level-console=info backup

# --type參數指定備份的類型為增量還是差異備份
## 差異備份
pgbackrest --stanza=demo --log-level-console=info --type=diff backup

## 增量備份
pgbackrest --stanza=demo --log-level-console=info --type=incr backup

查看備份信息

pgbackrest info

恢復

# 模擬數據庫損壞
rm -rf $PGDATA/*

pgbackrest --stanza=demo restore --delta --log-level-console=detail

啟動數據庫檢查確認

pg_ctl start -D $PGDATA


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM