본문 바로가기
다른 DBMS/PostgresDB

[pg16] 백업 쉘 만들어서 자동 백업되게 설정하기

by 취미툰 2024. 7. 31.
반응형

pg_dump를 사용하여 postgres 유저에서 자동으로 백업이 수행되게 설정하는 방법입니다.

백업은 5일만 보관하며 5일이 지난 백업은 삭제하는 로직이 추가되어 있습니다.

 

1) 백업용 디렉토리 만들기

실제 백업파일이 저장되는 backupfile, 로그가 저장되는 log , 쉘이 저장되는 shell을 생성합니다

mkdir -p /pgdata/backup/backup/backupfile
mkdir -p /pgdata/backup/backup/log
mkdir -p /pgdata/backup/backup/shell


drwxr-xr-x. 2 postgres postgres 94 Jul 31 10:04 backupfile
drwxr-xr-x. 2 postgres postgres 67 Jul 31 10:03 log
drwxr-xr-x. 2 postgres postgres 93 Jul 31 10:04 shell

 

2)백업 쉘 생성

#!/bin/bash

export PATH=/bin:/user/bin:/sbin:/usr/sbin
PG_BACKUP="/pgdata/backup/backupfile"
PG_USER="root"
PGPASSWORD=postgres
backup_date=`date +"%y%m%d%H%M"`
backup_date2=`date +"%y%m%d"`
# Remove backups older than 5 days
echo "step 1. starting remove old backupfile ${backup_date} " >> /pgdata/backup/log/postgres_backup_${backup_date2}.log
find $PG_BACKUP -ctime +5 -exec rm -f {} \; >> /pgdata/backup/log/postgres_backup_${backup_date2}.log
echo "step 1. completed ${backup_date} " >> /pgdata/backup/log/postgres_backup_${backup_date2}.log

# Database full backup
echo "step 2. starting pg backup ${backup_date} " >> /pgdata/backup/log/postgres_backup_${backup_date2}.log
/usr/pgsql-16/bin/pg_dump -h 127.0.0.1 -p 15432 -U $PG_USER -d postgres -v --format=custom --compress=gzip:9 > $PG_BACKUP/pbishop_postgres_${backup_date}.tar.gz 
echo "step 2. completed ${backup_date} " >> /pgdata/backup/log/postgres_backup_${backup_date2}.log

 

3)크론탭 등록

[postgres@mdwprddb1 backup]$ crontab -l
##Postgres DB full backup
0 22 * * * sh /pgdata/backup/shell/postgres_backup.sh >> /pgdata/backup/log/postgres_backup.log 2>&1

 

끝.

반응형

댓글