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