重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛
标题:
PostgreSQL 16 + pgBackRest备份部署文档
[打印本页]
作者:
mahan
时间:
5 天前
标题:
PostgreSQL 16 + pgBackRest备份部署文档
PostgreSQL 16 + pgBackRest备份部署文档
1. 环境概述
操作系统: Anolis OS 8.9
网络环境: 纯离线/内网环境
数据库版本: PostgreSQL 16
核心目标: 解决单核 gzip 压缩过慢的问题,开启 8 线程并发及 ZSTD 高效压缩。
预设目录规划:
PG 数据目录:/home/postgres/16/data
备份存放目录:/home/postgres/16/pgbackrest
2. 安装 pgBackRest
由于断网环境,需要离线安装包
Bash
# 批量一键本地安装
dnf localinstall pgbackrest-2.59.0-1PGDG.rhel8.10.x86_64.rpm
3. 核心配置文件设定 (开启多核并发)
创建并编辑 pgBackRest 全局配置文件。该配置定义了备份的存放路径、保留策略、多核处理及压缩算法。
Bash
sudo vi /etc/pgbackrest.conf
写入以下配置内容(注意 zst 没有 d):
Ini, TOML
[global]
# 指定备份存储库路径
repo1-path=/home/postgres/16/pgbackrest
# 备份保留策略:保留最近的 2 份全量备份(防磁盘撑爆)
repo1-retention-full=2
# 日志设置
log-level-console=info
log-level-file=info
# ==========================================
# 🚀 高性能并发与压缩调优区
# ==========================================
# 开启多线程:根据服务器 CPU 核心数进行调整 (此处为 8 线程)
process-max=8
# 使用高效的 zstd 压缩算法 (语法必须为 zst)
compress-type=zst
compress-level=3
# ==========================================
# 数据库实例 (Stanza) 定义
# ==========================================
[regcost]
# 指定 PostgreSQL 16 的真实数据目录路径
pg1-path=/home/postgres/16/data
确保备份目录权限正确:
Bash
sudo chown -R postgres:postgres /home/postgres/16/pgbackrest
4. PostgreSQL 归档配置
必须让 PostgreSQL 将产生的 WAL 日志实时推送到 pgBackRest 的仓库中。
切换到 postgres 用户并编辑数据库配置文件:
Bash
su - postgres
vi /home/postgres/16/data/postgresql.conf
确保修改或添加以下两行:
archive_mode = on
archive_command = 'pgbackrest --stanza=regcost archive-push %p'
重新加载数据库配置使其生效:
Bash
psql -c "SELECT pg_reload_conf();"
5. 存储库初始化与连通性测试
在 postgres 用户下依次执行:
步骤 5.1:初始化 Stanza (仅首次部署需执行)
Bash
pgbackrest --stanza=regcost stanza-create
步骤 5.2:健康检查 (最关键的一步)
Bash
pgbackrest --stanza=regcost check
预期结果:日志末尾应输出 completed successfully。
6. 定时备份策略
策略:每周六凌晨 2:00 进行全量备份,周日到周五凌晨 2:00 进行增量备份。
Bash
crontab -e
# 每周六凌晨 2:00 执行全量备份,不产生定时任务日志
0 2 * * 6 /usr/bin/pgbackrest --stanza=regcost --type=full backup > /dev/null 2>&1
# 每周日到周五凌晨 2:00 执行增量备份,不产生定时任务日志
0 2 * * 0-5 /usr/bin/pgbackrest --stanza=regcost --type=incr backup > /dev/null 2>&1
欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2