백업, 복원, 업그레이드
PostgreSQL을 백업하고 복원을 확인한 다음 업데이트하세요.
앱 데이터, 업로드한 파일, 가져오기 압축 파일은 PostgreSQL에 저장됩니다. Compose의 데이터베이스는 opentoggl, 사용자와 서비스는 postgres, 볼륨은 opentoggl-postgres-data입니다. Redis는 영구 저장을 사용하지 않으므로 백업할 필요가 없습니다.
백업하기
docker-compose.yml이 있는 디렉터리에서 실행합니다.
docker compose exec -T postgres pg_dump -U postgres -d opentoggl -Fc > backup.dump다른 서버에도 사본을 보관하세요. docker-compose.yml, .env, 프록시 설정은 데이터베이스 덤프에 포함되지 않으므로 별도로 안전하게 보관합니다.
매일 백업하려면 /srv/backups를 만들고 경로와 Docker 실행 파일 위치를 수정한 다음, Docker 권한이 있는 사용자의 crontab에 추가합니다.
0 2 * * * cd /srv/opentickly && umask 077 && /usr/bin/docker compose exec -T postgres pg_dump -U postgres -d opentoggl -Fc > /srv/backups/opentickly-$(date +\%F).dump작업이 성공했는지 확인하고 정기적으로 복원을 시험하세요. 파일이 존재한다는 것만으로 복원 가능 여부를 알 수는 없습니다.
복원하기
먼저 별도 인스턴스에서 시험합니다. 복원은 백업된 데이터베이스 객체를 덮어쓰며, 백업 이후 변경 사항은 사라집니다. 백업 당시 앱 버전을 사용하고 PostgreSQL이 실행 중인지 확인합니다.
docker compose stop opentoggl &&
docker compose exec -T postgres pg_restore -U postgres -d opentoggl --clean --if-exists --exit-on-error < backup.dump &&
docker compose up -d opentogglpg_restore가 실패하면 오류를 해결할 때까지 앱을 중지해 두세요. 복원 후 로그인하여 시간 기록과 파일을 확인합니다. 데이터베이스 볼륨은 삭제하지 마세요.
업데이트와 되돌리기
- 백업하고 현재 이미지 버전이나 digest를 기록합니다.
latest는 바뀔 수 있어 이전 버전을 특정할 수 없습니다. - 다음을 실행합니다.
docker compose pull && docker compose up -d- 서버가 시작될 때 데이터베이스 구조가 자동으로 업데이트됩니다.
docker compose logs opentoggl을 확인하고 로그인해 데이터를 점검합니다.
되돌리려면 opentoggl을 중지하고 docker-compose.yml에서 이전 이미지 태그나 digest를 지정한 뒤 해당 이미지를 받습니다. 이어서 위 절차대로 업데이트 전 백업을 복원합니다. 업데이트된 데이터베이스에 예전 이미지만 연결하지 마세요. 백업 이후 변경 사항은 사라집니다.