데이터베이스 클리너 도구가 있나요?

Discourse에 데이터베이스 클리너(Database Cleaner) 도구가 있나요?

이 도구는 데이터베이스에서 불필요한 구성 데이터를 제거합니다. 이 도구는 Discourse 기본 설치에 존재하지 않는 추가된 컬럼, 구성 행, 테이블을 데이터베이스에서 제거합니다. 모든 콘텐츠와 사이트 설정은 그대로 유지됩니다. 주요 목적은 데이터베이스에서 모든 플러그인과 테마 구성 요소를 제거하는 것입니다.

고려할 수 있는 최선의 해결책은 백업에서 새 인스턴스를 설정하는 것입니다 :slight_smile:

수동 작업이 많이 필요하지 않으면서도 포럼 데이터를 유지하면서 가장 깔끔하게 처리할 수 있는 방법입니다.

다만, 백업에는 백업한 인스턴스에 존재했던 모든 테이블이 포함될 것이며, 이는 새 인스턴스에 플러그인이 설치되지 않았더라도 플러그인에 의해 생성된 테이블을 포함할 수 있습니다.

직접 손을 대고 싶다면, rake 작업을 사용하여 데이터베이스를 삭제하고 새 데이터베이스를 생성한 뒤 마이그레이션을 처음부터 다시 실행할 수 있습니다. 하지만 이렇게 하면 모든 데이터가 삭제됩니다.

이것이 바로 "새 환경을 설치하고 백업을 복원한다"는 것이 최선의 해결책이 아닌 이유입니다. 여전히 데이터베이스에 이전 컴포넌트와 플러그인의 잔여 데이터가 남아 있기 때문입니다.

데이터베이스의 컴포넌트 및 플러그인 변경 사항을 제거하고 데이터와 사이트 설정은 그대로 유지하는 최후의 수단(last-effort) 도구가 필요합니다. 이 도구는 새 설치 솔루션으로 전환하기 전에 실행할 수 있습니다.

그걸 구현하는 것이 어려울 것 같습니다:

  1. 일부 마이그레이션은 되돌릴 수 없습니다.
  2. 많은 마이그레이션이 플러그인 내에 저장되어 있는데, 플러그인이 설치되어 있지 않으면 해당 플러그인 자체가 없으므로 되돌릴 대상이 없습니다.

하지만 일단 구현해 보고 이러한 문제를 해결할 수 있는지 확인해 보세요.

결국 카테고리나 태그를 포함한 인간 콘텐츠만 이동할 수 있는 도구가 전혀 없다는 뜻인가요?

"migrations"이라는 용어를 사용하고 계신데요, 이 용어로 무엇을 말씀하시나요?

저는 이 용어를 사용자 데이터와 콘텐츠를 시스템으로 "이관"하는 행위를 가리킬 때 사용합니다. 이 과정은 기본적으로 데이터베이스 구조를 변경해서는 안 됩니다.

데이터베이스 구조를 변경할 수 있는 유일한 것은 플러그인입니다. Discourse가 데이터베이스 구조를 변경할 수 있는 다른 방법을 허용하고 있지 않는 한 말입니다.

이것들은 Discourse와 각 플러그인(사용하는 경우)의 /db/migrations 폴더에 있습니다.