업그레이드 스크립트는 자유 공간을 확인하고 안전할 경우에만 진행합니다.
디스크 공간이 치명적으로 부족해질 수 있는 과정은 두 단계가 있습니다. 자유 공간 확인을 우회할 경우, 다음과 같은 곳에서 문제가 발생할 수 있습니다:
- pg_dump를 실행하여 기존 DB에서 데이터를 추출할 때 (이 시점에 DB 저장 공간의 2배가 필요합니다).
- pg_restore를 실행하여 데이터를 새 DB에 다시 삽입할 때 (이 시점에 DB 저장 공간의 3배가 필요합니다).
이 상태로부터 복구하려면 /shared/postgres_dump와 /shared/postgres_data_new를 제거해야 합니다.
업그레이드 종료 시 임시 pg_dump 파일은 제거하지만, 만에 하나를 대비하여 업그레이드 전 DB 데이터는 /shared/postgres_data_old에 유지해 둡니다. 모든 것이 정상적으로 작동하는지 확인한 후에는 디스크 공간을 확보하기 위해 해당 디렉터리를 제거하는 것이 좋습니다.
PG15 사이트에서 Discourse 백업을 받아 PG18 사이트에 복원하는 것을 테스트해 보았습니다. 저에게는 잘 작동했지만, 이는 공식적으로 지원되는 방법이 아님을 유의하세요. 먼저 프로덕션이 아닌 환경에서 철저히 테스트하고 롤백 경로를 확보해 두세요!
업그레이드 스크립트가 사용하는 과정을 연구해 볼 것을 권장합니다. 특수한 저장 요구 사항이 있다면 이를 필요에 맞게 조정할 수 있을 것입니다. 역시 먼저 테스트하세요:
네, 이 기능은 현재 discourse_docker에 적용되어 있습니다. main을 가져오거나 ./launcher rebuild app을 실행하면 해당 기능을 사용할 수 있습니다.
원하는 경우 업그레이드를 보류할 때 의도치 않은 업그레이드를 방지하는 데 도움이 됩니다 discourse_docker를 main 브랜치에서 전환하세요.