================hot backup ==============================
#!/bin/bash
SRC=/var/lib/pgsql/11/data
DST={CLUSTER_DISK_PATH}/cluster
ARC={CLUSTER_DISK_PATH}/archive
TODAY=`date +%F`
ARCHIVE=data.tgz
function backup_pg() {
ARCHIVE=$1
echo Backing up database ...
psql -U postgres -h localhost -c "SELECT pg_start_backup('$ARCHIVE');" postgres
tar czf $ARCHIVE $SRC
psql -U postgres -h localhost -c "SELECT pg_stop_backup();" postgres
echo Completed!
}
mkdir -p $DST/$TODAY
cd $DST/$TODAY
backup_pg $ARCHIVE
cd $ARC
tar czpf archive.tgz $ARC
mv archive.tgz $DST/$TODAY
SELECT pg_start_backup("/var/lib/edb/backup/aaa.tar");
select pg_stop_backup();
===================================
0 5 * * 1 su postgres -c '{BACKUP_SCRIPT_PATH}/backup.sh'
==================복구
복구
복구는 Postgresql 서버를 중지시켜주고, 데이터 디렉터리를 삭제해주도록 합니다.
그리고 위에서 $DST/%TODAY에 백업해두었던 데이터 디렉터리가 압축되어 담긴 data.tgz 파일의 압축을 해제하고
기존의 데이터 디렉터리 위치에 옮겨줍니다.
recovery.conf
restore_command 'cp {CLUSTER_DISK_PATH}/archive/%f %p'
archive_cleanup_command '/usr/pgsql-11/bin/pg_archivecleanup {CLUSTER_DISK_PATH}/archive/ %r
pg_archivecleanup 명령어를 찾지 못했을 때
설치 시에, pg_archivecleanup가 없는 상태로 Postgresql만 설치되는 경우가 많습니다. 다음과 같은 경우에는 다음 명령어를 통해 라이브러리를 설치해줍니다.
yum install postgresql11-contrib
==============================================