rm -f删库?先别跑,pgbackrest备份还有救!

来源:这里教程网 时间:2026-03-14 21:28:02 作者:
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理
微信:jem_db
QQ交流群:587159446
公众号:IT邦德

文章目录

  • 前言
  • 1.pgbackrest介绍
  • 2.源码安装
  • 2.1 依赖安装
  • 2.2 编译安装
  • 2.3 创建目录
  • 3.设置环境变量
  • 4.确认安装
  • 5.参数配置
  • 5.1 配置pgbackrest参数
  • 5.2 配置postgres参数
  • 6.初始化备份
  • 7.备份校验
  • 8.备份与还原
  • 8.1 全量备份
  • 8.2 增量备份
  • 8.3 全量还原
  • 9.总结

    前言

    本文详细阐述了pgbackrest备份的详细过程以及注意要点

    1.pgbackrest介绍

    pgBackRest是PostgreSQL的可靠备份和恢复解决方案,
    可以无缝扩展到最大的数据库和工作负载,
    用于完整备份。它非常适合大小为TB级的postgres数据库。
    与pg_basebackup和pg_rman相比,具有以下优势:
    1、提供增量备份,增量备份一定程度上可以节省磁盘空间的使用并减少备份耗时
    2、可以通过全量备份+增量备份进行增量恢复
    3、无需通过实际的数据恢复操作即可验证备份文件是否有效
    4、提供备份压缩以节省磁盘空间
    5、可以对远程实例进行备份【远程备份要实现SSH互信】
    6、可以从STANDBY实例进行备份
    7、可以查看已备份数据备份以及归档的列表以及相关详细信息
    8、支持部分还原(还原部分数据库)
    9、支持对备份集的管理
    10、并行恢复

    2.源码安装

    2.1 依赖安装

    sudo curl -o /etc/yum.repos.d/CentOS-Base.repo \
    http://mirrors.aliyun.com/repo/Centos-7.repo
    yum install make gcc postgresql12-devel openssl-devel \
    libxml2-devel lz4-devel libzstd-devel bzip2-devel \
    libyaml-devel libssh2-devel

    2.2 编译安装

    1.解压安装包到/opt下
    wget -q -O - \
    https://github.com/pgbackrest/pgbackrest/archive/release/2.52.tar.gz | \
    tar zx -C /opt
    2.配置和编译pgBackRest
    cd /opt/pgbackrest-release-2.52/src && ./configure && make
    3.将创建一个名为pg primary的新主机,以包含演示集群并运行pgBackRest示例
    --安装依赖
    yum install postgresql-libs libssh2
    --从生成主机复制pgBackRest二进制文件
    scp /opt/pgbackrest-release-2.52/src/pgbackrest /usr/bin
    chmod 755 /usr/bin/pgbackrest
    2.进入到pgbackrest目录
    4.安装pgbackrest
    make -j4 && make install -j4

    2.3 创建目录

    mkdir -p -m 770 /var/log/pgbackrest
    chown postgres:postgres /var/log/pgbackrest
    mkdir -p /etc/pgbackrest
    mkdir -p /etc/pgbackrest/conf.d
    touch /etc/pgbackrest/pgbackrest.conf
    chmod 640 /etc/pgbackrest/pgbackrest.conf
    chown postgres:postgres /etc/pgbackrest/pgbackrest.conf

    3.设置环境变量

    vi /etc/profile.d/pgbackrest.sh
    export PGBACKREST_HOME=/usr/bin/pgbackrest
    export PATH=$PGBACKREST_HOME/bin:$PATH
    --环境变量生效
    source /etc/profile.d/pgbackrest.sh

    4.确认安装

    [root@centos79 ~]# sudo -u postgres pgbackrest
    pgBackRest 2.52 - General help
    Usage:
        pgbackrest [options] [command]
    Commands:
        annotate        Add or modify backup annotation.
        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.
        repo-get        Get a file from a repository.
        repo-ls         List files in a repository.
        restore         Restore a database cluster.
        server          pgBackRest server.
        server-ping     Ping pgBackRest server.
        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.
        verify          Verify contents of the repository.
        version         Get version.
    Use 'pgbackrest help [command]' for more information.

    5.参数配置

    5.1 配置pgbackrest参数

    --创建repository
    mkdir -p /var/lib/pgbackrest
    chmod 750 /var/lib/pgbackrest
    chown postgres:postgres /var/lib/pgbackrest
    --创建Encryption
    [root@centos79 ~]# openssl rand -base64 48
    vA6DTEeRNhgB80CkQY23m1hFhvWc7uyBMndxppklVkzLGXyD/eKObDsDkoXzaClV
    vi /etc/pgbackrest/pgbackrest.conf
    [global]
    log-level-file=detail
    log-path=/var/log/pgbackrest/
    repol-path=/var/lib/pgbackrest
    repo1-retention-full=2
    repo1-cipher-type=aes-256-cbc
    repo1-cipher-pass=vA6DTEeRNhgB80CkQY23m1hFhvWc7uyBMndxppklVkzLGXyD/eKObDsDkoXzaClV
    [demo]
    pg1-path=/pgccc/pgdata
    pg1-host-config-path=/etc/pgbackrest
    pg1-host=192.168.3.10
    pg1-port=5432
    pg1-user=postgres
    pg1-host-user=postgres
    [global:archive_push]
    compress-level=3
    密码文件登记
    vi ~/.pgpass
    localhost:5555:postgres:postgres:123456
    localhost:*:*:postgres:123456
    127.0.0.1:*:*:postgres:123456
    chmod 0600 ~/.pgpass

    5.2 配置postgres参数

    vi postgresql.auto.conf
    archive_command = 'pgbackrest --stanza=demo archive-push %p'
    archive_mode = on
    log_filename = 'postgresql.log'
    max_wal_senders = 3
    wal_level = replica

    6.初始化备份

    1.记得重启让以上修改的参数生效,确保PG数据库启动并连接
    sudo -u postgres pgbackrest --stanza=demo \
    --log-level-console=info stanza-create

    7.备份校验

    sudo -u postgres pgbackrest --stanza=demo \
    --log-level-console=info check

    8.备份与还原

    8.1 全量备份

    pgbackrest --stanza=demo --log-level-console=info --type=full \
    --start-fast backup --process-max=16 >demo_full_` date +%F_%T `.log &
    log-level-console - 日志部分定义了与日志记录相关的设置
    off - 完全不记录(不推荐)
    error - 仅记录错误
    warn - 记录警告和错误
    info - 记录信息、警告和错误
    detail - 记录详细信息、信息、警告和错误
    debug - 记录调试、详细信息、信息、警告和错误
    trace - 记录跟踪(非常详细的调试)、调试、信息、警告和错误
    process-max - 每个进程都会执行压缩和传输以使命令运行得更快,配置CPU核心数的一般。
    type - 全备份full、增量备份incr、差异备份diff
    compress - compress-level=0 关闭压缩备份,默认开启。
    start-fast - 强制在快速备份的时候使用检查点。否则,备份将在下一个常规检查点之后启动。

    8.2 增量备份

    pgbackrest --stanza=demo --log-level-console=info --type=incr  \
    backup --process-max=16 >demo_incr_` date +%F_%T `.log &

    8.3 全量还原

    需要先进行数据库停机
    [postgres@pgpcp ~]$pg_ctl stop
    删除数据库数据目录所有文件
    [postgres@pgpcp ~]$rm -rf /pgccc/pgdatata
    pgbackrest --stanza=demo \
    --log-level-console=info restore \
    --pg1-path=/pgccc/pgdata \
    --process-max=16 > demo_restore_` date +%F_%T `.log &

    9.总结

    pgbackrest为开源备份工具,生产环境使用非常方便

  • 相关推荐