# 데이터베이스 백업 시스템 ## 개요 PostgreSQL 데이터베이스를 자동으로 백업하는 시스템입니다. - 하루 2회 자동 백업 (오전 7:30, 오후 6:00) - 로컬 백업 및 FTP 원격 백업 지원 - 7일 이상 된 백업 자동 삭제 ## 파일 구성 - `backup.py`: 백업 스크립트 - `00-create-roles.sh`: 데이터베이스 역할 생성 스크립트 - `dbexport.pgsql`: 데이터베이스 덤프 파일 ## 설정 방법 ### 1. 환경 변수 설정 `.env.production` 파일에 다음 설정을 추가: ```bash # 필수 설정 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 실행 ```bash # 백업 서비스 포함하여 실행 docker-compose -f docker-compose.prod.yml up -d # 백업 서비스만 재시작 docker-compose -f docker-compose.prod.yml restart wace-plm-backup ``` ### 3. 백업 확인 ```bash # 백업 로그 확인 docker logs -f wace-plm-backup # 백업 파일 확인 ls -lh /home/wace-plm/backups/ ``` ## 수동 백업 실행 ### 즉시 백업 실행 ```bash docker exec wace-plm-backup python -c "from backup import backup_databases; backup_databases()" ``` ### 백업 파일 복원 ```bash # 백업 파일 확인 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일 이상 된 백업 파일 ## 트러블슈팅 ### 백업이 실행되지 않는 경우 ```bash # 컨테이너 상태 확인 docker ps | grep backup # 로그 확인 docker logs wace-plm-backup # 환경 변수 확인 docker exec wace-plm-backup env | grep POSTGRES ``` ### 디스크 공간 부족 ```bash # 백업 파일 크기 확인 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. 정기적으로 복원 테스트 수행 권장