PG数据库 备份还原工具pgbackrest

安装包:sudo apt-get install pgbackrest

修改配置文件:vim /etc/pgbackrest.conf

[global]
#备份文件存放地址
repo1-path=/mesdata/pgbackrest
#保留全备数量
repo1-retention-full=2
#保留差异备份数量
retention-diff=6
#快速启动
start-fast=y
#检测到有其它进程时,自动停止本次
stop-auto=y
#日志地址
log-path=/var/log/pgbackrest
#配置异步归档
archive-async=y
#保存当前wal的归档状态
spool-path=/var/spool/pgbackrest

repo1-retention-history=0

[MES2_DB]
pg1-path=/mesdata/pgdata/postgresql/16/main

修改文件夹权限,给postgres用户

sudo chmod 777 /var/log/pgbackrest
sudo chown postgres:postgres /var/log/pgbackrest
chown -Rf postgres:postgres  /tmp/pgbackrest/

修改 /etc/postgresql/16/main/postgresql.conf

archive_command = 'pgbackrest --config=/etc/pgbackrest.conf --stanza=MES2_DB archive-push %p'

修改后使用DBA用户执行生效配置:select pg_reload_conf();

使用postgres用户初始化pgbackrest

pgbackrest --stanza=MES2_DB --log-level-console=info stanza-create

pgbackrest --stanza=MES2_DB --log-level-console=info check

备份命令

完全备份
pgbackrest --stanza=test --log-level-console=info backup --type=full

增备
pgbackrest pgbackrest --stanza=test --log-level-console=info backup --type=incr

差异备份
pgbackrest pgbackrest --stanza=test --log-level-console=info backup --type=diff

恢复数据库:pgbackrest –stanza=mydb –type=immediate restore

定时任务cron

安装:apt install cron
配置:crontab -e
0 2 * * 0 pgbackrest backup --config=/etc/pgbackrest.conf --stanza=MES2_DB --type=full  --log-level-console=info --process-max=4  --start-fast
0 2 * * 1-2 pgbackrest backup --config=/etc/pgbackrest.conf --stanza=MES2_DB --type=diff  --log-level-console=info --process-max=4  --start-fast
0 2 * * 3 pgbackrest backup --config=/etc/pgbackrest.conf --stanza=MES2_DB --type=full  --log-level-console=info --process-max=4  --start-fast
0 2 * * 4-6 pgbackrest backup --config=/etc/pgbackrest.conf --stanza=MES2_DB --type=diff  --log-level-console=info --process-max=4  --start-fast
pgbackrest命令参数
log-level-console - 日志部分定义了与日志记录相关的设置
off - 完全不记录(不推荐)
error - 仅记录错误
warn - 记录警告和错误
info - 记录信息、警告和错误
detail - 记录详细信息、信息、警告和错误
debug - 记录调试、详细信息、信息、警告和错误
trace - 记录跟踪(非常详细的调试)、调试、信息、警告和错误
process-max - 每个进程都会执行压缩和传输以使命令运行得更快,配置CPU核心数的一般。
type - 全备份full、增量备份incr、差异备份diff
compress - compress-level=0 关闭压缩备份,默认开启。
start-fast - 强制在快速备份的时候使用检查点。否则,备份将在下一个常规检查点之后启动。

异机全备还原

需要拷贝全备目录,如/var/lib/pgbackrest/backup/MES2_DB
如文件太大,可以只拷贝最新全备,但要和 backup.history  backup.info  backup.info.copy一起拷贝,可能需要修改backup.info的backup:current、backrest-checksum;修改全备下的backup.manifest  backup.manifest.copy的backup-label、backup-reference、backrest-checksum

停止 systemctl stop postgresql
清空/var/lib/postgresql/13/main
postgres账户执行pgbackrest --stanza=MES2_DB --type=immediate restore
pgbackrest restore --config=/etc/pgbackrest.conf --stanza=MES2_DB --delta --type=time --target='2022-06-02 15:43:00' --log-level-console=info

删除recovery.signal 重命名back_label
命令路径export PATH=$PATH:/usr/lib/postgresql/13/bin
执行pg_resetwal -D /path/to/data/directory -f

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部