- 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
2.6 KiB
2.6 KiB
데이터베이스 백업 시스템
개요
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 경로 권한 확인
주의사항
- 백업 파일은 민감한 정보를 포함하므로 접근 권한 관리 필요
- 충분한 디스크 공간 확보 필요 (데이터베이스 크기의 최소 10배 권장)
- FTP 비밀번호는 반드시 환경 변수로 관리
- 정기적으로 복원 테스트 수행 권장