복구 중에는 /var/discourse/shared/standalone/tmp/restores/ 폴더에 있는 백업 파일이 압축 해제됩니다.
임시 폴더에서 업로드 파일은 원본 위치로 rsync되고, SQL 덤프는 pg 데이터베이스에 삽입됩니다.
제가 성공적으로 복구를 수행한 방법입니다.
복구 과정에서 Discourse가 복구 폴더에서 임시 폴더로 파일을 복사한 시점에, SSH를 통해 업로드한 원래 백업 파일을 삭제했습니다.
또한, Discourse가 SQL 삽입과 stat rsync를 완료하여 임시 폴더의 압축 해제된 파일을 /var/discourse/shared/standalone/uploads/로 복사하는 동안, 복구 프로세스를 중단하지 않고 SSH를 통해 임시 폴더의 bakupxxx.tar.gz 파일을 수동으로 삭제했습니다.
대용량 백업의 복구 프로세스가 멈춘 것처럼 보이거나 웹에서 인스턴스가 500 오류 코드를 반환하기 시작할 때(저에게는 두 번 발생했습니다), 앱에 진입하여 복구 프로세스를 확인할 수 있습니다.
cd /var/discourse
./launcher enter app
ps aux | grep restore
또한, 제 DB 복구가 너무 오래 걸렸기 때문에
cd /var/discourse
./launcher enter app
watch -n 10 “sudo -u postgres psql discourse -c "SELECT now(), state, query FROM pg_stat_activity WHERE state != ‘idle’;"”
명령어를 사용하여 DB 복구 진행 상황을 모니터링하고, 복구가 여전히 진행 중인지 확인할 수 있었습니다.