복원 실패 - S3 (호환) 백업

Falco님, 감사합니다! 완벽하게 잘 작동했습니다 :smiley:

새 서버로 마이그레이션을 진행했는데, 사실 같은 서버를 계속 사용해도 괜찮았을 것 같습니다.

혹시 나중에 이 내용을 참고하려는 분이 있을까 봐, 자세한 단계는 다음과 같습니다 (참고로 제 s3 설정은 여기에 명시된 대로 app.yml 파일에만 있었고, 관리자 설정에서 커스터마이징한 내용은 없었습니다):

  1. 소스 사이트에서 롤백이 아니라면 '이메일 비활성화’를 활성화하고(필요 없을 수도 있음) 읽기 전용 모드를 켜세요 (마이그레이션이 완료되면 새 인스턴스에서 이 설정들을 다시 되돌려야 합니다). 백업을 생성하고, 완료되면 구 인스턴스도 중지하는 것을 고려해 보세요 (./launcher stop app). 롤백이든 아니든 상관없이 DNS A 레코드를 새 서버 IP를 가리키도록 업데이트하세요. 더 우아하거나 다른 순서로 진행하여 다운타임을 최소화할 수도 있지만, 제 경우(롤백, 아직 런칭하지 않은 포럼)에는 다운타임이 큰 문제가 아니었습니다.

  2. 새 서버에 Discourse를 설치하고 app.yml의 모든 커스텀 설정(특히 s3 설정 포함)을 마이그레이션하세요. Discourse 버전은 동일하거나 매우 유사하게 유지하세요.

  3. 다음 두 레코드를 주석 처리하세요 (app.yml의 다른 s3 설정은 그대로 두셔도 됩니다):
    DISCOURSE_S3_BACKUP_BUCKET: BucketName
    DISCOURSE_BACKUP_LOCATION: s3

  4. s3 또는 s3 호환 서비스에서 원하는 백업을 수동으로 다운로드하세요.

  5. /var/discourse/shared/standalone/backups 디렉토리로 이동하여 'default’라는 이름의 새 폴더를 생성하세요 (존재하지 않는다면). (새 설치인 경우 존재하지 않을 것입니다.) 그리고 backups 디렉토리에서 다음을 실행하세요 (이것은 Discourse가 로컬 백업을 생성했을 때 해당 폴더가 가지는 것과 동일한 폴더 권한으로 변경하는 것입니다 - 필요할지 확실하지 않습니다):
    chown -R 1000:www-data default

  6. SFTP 클라이언트를 사용하여 백업을 backups/default 폴더로 업로드하세요. 백업 파일 이름을 변경하지 마세요.

  7. 앱을 재빌드하세요:
    cd /var/discourse
    ./launcher rebuild app

  8. 앱에 진입하여 백업을 활성화하고 복원하세요 (BackupFileName.tar.gz로 이름 변경):

./launcher enter app
discourse enable_restore
discourse restore BackupFileName.tar.gz
  1. 완료되면 2단계에서 주석 처리했던 app.yml의 두 s3 백업 파일 라인을 주석 해제하고 앱을 재빌드하세요.

  2. 로컬 backups/default 폴더와 그 안에 포함된 백업(/var/discourse/shared/standalone/backups)을 삭제할 수 있습니다.

참고: