pgBackRest:PostgreSQL S3 备份
本教程介绍如何使用 pgBackRest 和 S3 备份 PostgreSQL 数据库。
简介
pgBackRest 是一款现代的 PostgreSQL 备份和还原解决方案,它拥有您可能需要的所有功能
- 并行备份和还原。
- 完整、差异和增量备份。
- 增量还原。
- ZSTD 压缩。
- 加密。
- 以及 更多功能。
安装
Ubuntu 为 pgbackrest 提供预编译的软件包
sudo apt install pgbackrest
术语
节 是 PostgreSQL 数据库集群的 pgBackRest 配置。大多数数据库服务器只有一个数据库集群,因此只有一个节。
存储库 是 pgBackRest 存储备份和存档 WAL 段的位置。
配置
让我们为配置和日志创建一个基本目录结构
mkdir -m 770 /var/log/pgbackrest
chown postgres:postgres /var/log/pgbackrest
mkdir /etc/pgbackrest
并将以下配置保存到 /etc/pgbackrest/pgbackrest.conf
中
[demo]
pg1-path=/var/lib/postgresql/14/main
[global]
repo1-retention-full=3 # keep last 3 backups
repo1-type=s3
repo1-path=/s3-path
repo1-s3-region=us-east-1
repo1-s3-endpoint=s3.amazonaws.com
repo1-s3-bucket=s3_bucket_name
repo1-s3-key=$AWS_ACCESS_KEY
repo1-s3-key-secret=$AWS_SECRET_KEY
# Force a checkpoint to start backup immediately.
start-fast=y
# Use delta restore.
delta=y
# Enable ZSTD compression.
compress-type=zst
compress-level=6
log-level-console=info
log-level-file=debug
对于 时间点恢复,您还需要配置 PostgreSQL 将 WAL 文件上传到 S3
archive_mode = on
archive_command = 'pgbackrest --stanza=demo archive-push %p'
archive_timeout = 300
完整备份
完整备份会复制数据库集群中的所有文件。
sudo -u postgres pgbackrest --type=full --stanza=demo backup
差异备份
差异备份仅复制自上次完整备份以来已更改的文件。它比完整备份更小,但要还原它,您需要基础完整备份。
sudo -u postgres pgbackrest --type=diff --stanza=demo backup
增量备份
增量备份仅复制自上次备份(完整、差异或增量)以来已更改的文件。它比完整或差异备份更小,但要还原它,您需要所有依赖备份。
sudo -u postgres pgbackrest --type=incr --stanza=demo backup
备份还原
要从上次备份还原集群
sudo -u postgres pgbackrest --stanza=demo --delta restore
要查看所有可用备份
sudo -u postgres pgbackrest --stanza=demo info
PostgreSQL 监控
要 监控 PostgreSQL,您可以使用 OpenTelemetry PostgreSQL 接收器,它随 OpenTelemetry 收集器一起提供。
OpenTelemetry 收集器 旨在从多个来源收集、处理和导出遥测数据。它充当一个集中式和灵活的数据管道,简化了分布式系统中遥测数据的管理。
Uptrace 是一款 OpenTelemetry 后端,它支持分布式跟踪、指标和日志。您可以使用它来监控应用程序并排查问题。
Uptrace 带有一个直观的查询构建器、丰富的仪表板、带有通知的警报规则以及大多数语言和框架的集成。
Uptrace 可以在一台服务器上处理数十亿个跨度和指标,并允许您以 10 倍的成本监控您的应用程序。
只需几分钟,您就可以通过访问 云演示 (无需登录)或使用 Docker 在本地运行它。源代码可在 GitHub 上获得。
结论
pgBackRest 是一款可靠的备份工具,需要最少的配置。为了在备份大小和还原时间之间取得良好的平衡,您可以每周创建一个完整备份,每天创建一个差异/增量备份。