표준 설치와 이중 컨테이너 환경에서 PostgreSQL 18을 설치했는데 아무런 문제 없이 잘 진행되었습니다. 쉬운 설명을 제공해 주신 @chrisr 님과 팀에 다시 한번 감사드립니다.
Cloudflare CDN 뒤에서 R2 업로드/백업 버킷을 사용하는 이중 컨테이너 구성을 위해 제가 사용한 단계는 다음과 같습니다:
1단계: 디스크 정리
# 사용하지 않는 docker 데이터 모두 삭제
docker system prune -a -f
# 오래된 로그와 apt 캐시 정리
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# 데이터베이스 크기 확인
du -sh /var/discourse/shared/data/postgres_data*
# 새로 확보된 여유 공간 확인
df -h -x tmpfs -x devtmpfs
2단계: 유지보수 및 백업
- Cloudflare 유지보수 페이지를 편집하여 15~20분간의 시스템 유지보수 업데이트라고 표시합니다(이 정도 시간이 걸리지는 않을 수 있지만, 안전을 위해 여유를 두는 것이 좋습니다!). 그리고 재로드 타이머를 30초 정도로 설정합니다. 유지보수 페이지를 표시하도록 Cloudflare 워커 라우트를 활성화합니다.
- 명령줄을 통해 백업을 트리거합니다:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
- Cloudflare R2 대시보드에 로그인하여 백업 폴더를 확인하고 백업 파일이 성공적으로 업로드되었는지 검증합니다
3단계: 안전 종료
- 먼저 활성 연결을 종료하기 위해 웹 컨테이너를 멈추고, 그 다음 데이터베이스 컨테이너를 멈춥니다:
cd /var/discourse
./launcher stop web_only
./launcher stop data
- PostgreSQL이 올바르게 종료되었는지 확인합니다:
tail -n 20 shared/data/log/var-log/postgres/current
4단계: 업그레이드 리빌드
다음 명령어를 순서대로 실행합니다:
./launcher rebuild data # postgresql 18 덤프, 마이그레이션 및 복원
./launcher rebuild data # 데이터베이스 컨테이너 리빌드
./launcher rebuild web_only # 웹 앱 리빌드
5단계: 최적화 및 정리
- 누락된 pg18 테이블 통계를 생성합니다. 그렇지 않으면 포럼이 평소보다 느려집니다:
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
- 모든 것이 정상적으로 작동하는지 포럼을 테스트합니다 - 유지보수 페이지에 재로드 타이머가 설정되어 있다면 이제 유지보수 페이지가 로드되지 않아야 합니다.
- 유지보수 페이지로 향하는 Cloudflare 워커 라우트를 제거합니다(일일 100,000회 제한에 도달하는 것을 원치 않으므로!)
- 디스크 공간을 확보하기 위해 이전 pg18 데이터를 삭제합니다:
rm -fr /var/discourse/shared/data/postgres_data_old/
완료!
![]()
