Files
wace_plm/db
hjjeong ba026842f7 feat: Add database backup system
- Add Dockerfile.backup for backup container
- Add backup.py script with PostgreSQL backup functionality
- Add backup service to docker-compose.prod.yml
- Update env.production.example with backup configuration
- Add db/README.md with backup system documentation

Features:
- Automated daily backups (07:30, 18:00)
- Local and FTP remote backup support
- 7-day retention policy
- PostgreSQL 16 client for waceplm database
2025-11-12 18:19:54 +09:00
..
2025-08-30 01:33:34 +09:00
2025-11-12 18:19:54 +09:00
2025-11-12 18:19:54 +09:00

데이터베이스 백업 시스템

개요

PostgreSQL 데이터베이스를 자동으로 백업하는 시스템입니다.

  • 하루 2회 자동 백업 (오전 7:30, 오후 6:00)
  • 로컬 백업 및 FTP 원격 백업 지원
  • 7일 이상 된 백업 자동 삭제

파일 구성

  • backup.py: 백업 스크립트
  • 00-create-roles.sh: 데이터베이스 역할 생성 스크립트
  • dbexport.pgsql: 데이터베이스 덤프 파일

설정 방법

1. 환경 변수 설정

.env.production 파일에 다음 설정을 추가:

# 필수 설정
POSTGRES_HOST=wace-plm-db
POSTGRES_DOCKER_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_password
POSTGRES_DB=waceplm
LOCAL_BACKUP_PATH=/backups/local
BACKUP_RETENTION_DAYS=7
BACKUP_TIME_AM=07:30
BACKUP_TIME_PM=18:00

# 선택 설정 (FTP 원격 백업)
FTP_HOST=ftp.example.com
FTP_USER=backup_user
FTP_PASSWORD=ftp_password
FTP_PATH=/backups
FTP_PORT=2122

2. Docker Compose 실행

# 백업 서비스 포함하여 실행
docker-compose -f docker-compose.prod.yml up -d

# 백업 서비스만 재시작
docker-compose -f docker-compose.prod.yml restart wace-plm-backup

3. 백업 확인

# 백업 로그 확인
docker logs -f wace-plm-backup

# 백업 파일 확인
ls -lh /home/wace-plm/backups/

수동 백업 실행

즉시 백업 실행

docker exec wace-plm-backup python -c "from backup import backup_databases; backup_databases()"

백업 파일 복원

# 백업 파일 확인
ls /home/wace-plm/backups/

# 복원 실행
docker exec -i wace-plm-db psql -U postgres -d waceplm < /home/wace-plm/backups/waceplm_backup_YYYYMMDD_HHMMSS.sql

백업 스케줄

  • 오전 백업: 매일 07:30
  • 오후 백업: 매일 18:00
  • 자동 삭제: 7일 이상 된 백업 파일

트러블슈팅

백업이 실행되지 않는 경우

# 컨테이너 상태 확인
docker ps | grep backup

# 로그 확인
docker logs wace-plm-backup

# 환경 변수 확인
docker exec wace-plm-backup env | grep POSTGRES

디스크 공간 부족

# 백업 파일 크기 확인
du -sh /home/wace-plm/backups/

# 오래된 백업 수동 삭제
find /home/wace-plm/backups/ -name "*.sql" -mtime +7 -delete

FTP 업로드 실패

  • FTP 서버 접속 정보 확인
  • 방화벽 설정 확인
  • FTP 경로 권한 확인

주의사항

  1. 백업 파일은 민감한 정보를 포함하므로 접근 권한 관리 필요
  2. 충분한 디스크 공간 확보 필요 (데이터베이스 크기의 최소 10배 권장)
  3. FTP 비밀번호는 반드시 환경 변수로 관리
  4. 정기적으로 복원 테스트 수행 권장