Halo Tech

pg_basebackup备份恢复

Image
Image

pg_basebackup备份

1. pg_basebackup 简介

pg_basebackup用于对正在运行的PostgreSQL数据库集群进行基本备份。备份是在不影响数据库的其他客户端的情况下进行的,并且可以用于时间点恢复和作为日志传送或流复制备用服务器的起点 。
pg_basebackup 不仅可以从主服务器也可以从备用服务器进行基本备份。要从备用数据库进行备份,请设置备用数据库以便它可以接受复制连接

1.1 优点

a. 可以远程备份, 通过日志可以恢复到最新
b. 可以通过备库备份
c. 备份操作相关简单

1.2 不足

a. 它只把整个数据库实例的数据都拷贝出来,而不只是把实例中的部分(如某个数据库或表)单独备份
b. 归档日志需要单独备份
c. 使用复制协议 REPLICATION权限或者是超级用户的用户 ID 建立连接,并且pg_hba.conf必须允许复制连接。
d.服务器还必须配置max_wal_senders设置得足够高,以提供至少一个用于备份的 walsender 和一个用于 WAL 流式传输(如果使用)。
e.如果在备份期间将备用数据库提升为主数据库,则备份将失败。

2.pg_basebackup备份压缩脚本

#!/bin/bash

ARCHIVEDIR='归档地址'

BACKUP_PATH='备份地址'

IP_ADDR='备库地址'

echo "清除前一天归档日志"

echo 'del starting'

find $ARCHIVEDIR -type f -mtime +1 - name '000*'|xargs -i rm -rf {} >> $BACKUP_PATH/dellog.log

echo 'del stoping'

echo "创建当天备份文件夹"

mkdir -p $BACKUP_PATH/`date +%F`

export PGPASSWORD=123456

echo `date` > buckuptime.log

pg_basebackup -F t -X fetch -v -P -h 127.0.0.1 -p 5432 -U replica -D $BACKUP_PATH/`date +%F` | pigz -p 8 > `date +%F`.tar.gz

echo `date` > buckuptime.log

rm -rf $BACKUP_PATH/`date +%F`

end

Image

微信号|Halo Tech