프로그래밍 언어/Database

MongoDB 데이터베이스의 이름을 변경하는 방법

Rateye 2021. 7. 12. 11:47
728x90
반응형

 

질문 : MongoDB 데이터베이스의 이름을 어떻게 바꾸나요?

내 MongoDB 데이터베이스 이름에 오타가 있으며 데이터베이스 이름을 바꾸려고합니다.

이렇게 복사 하고 삭제할 수 있습니다.

db.copyDatabase('old_name', 'new_name');
use old_name
db.dropDatabase();

데이터베이스 이름을 바꾸는 명령이 있습니까?

답변

아니에요. https://jira.mongodb.org/browse/SERVER-701 참조

불행히도 이것은 데이터베이스 메타 데이터가 원래 (기본) 스토리지 엔진에 저장되는 방식으로 인해 구현할 수있는 간단한 기능이 아닙니다. MMAPv1 파일에서 모든 단일 컬렉션 및 인덱스를 설명하는 네임 스페이스 (예 : dbName.collection)에는 데이터베이스 이름이 포함되어 있으므로 데이터베이스 파일 집합의 이름을 바꾸려면 모든 단일 네임 스페이스 문자열을 다시 작성해야합니다. 이는 다음 사항에 영향을줍니다.

  • .ns 파일
  • 컬렉션에 대한 모든 단일 번호 파일
  • 모든 인덱스의 네임 스페이스
  • 각 컬렉션 및 인덱스의 내부 고유 이름
  • system.namespaces 및 system.indexes의 내용 (또는 향후 해당 항목)
  • 내가 놓칠 수있는 다른 위치

이것은 독립형 mongod 인스턴스에서 단일 데이터베이스의 이름을 변경하는 것입니다. 복제본 세트의 경우 모든 복제본 노드에서 위의 작업을 수행해야하며 각 노드에서이 데이터베이스를 참조하는 모든 단일 oplog 항목을 어떻게 든 무효화하거나 다시 작성해야합니다. 그런 다음 샤딩 된 클러스터 인 경우 추가해야합니다. DB가 샤딩 된 경우 모든 샤드가 변경되고 구성 서버에는 전체 이름이있는 네임 스페이스 측면에서 모든 샤드 메타 데이터가 있습니다.

라이브 시스템에서는이를 수행 할 수있는 방법이 전혀 없습니다.

오프라인으로 수행하려면 새 이름을 수용하기 위해 모든 단일 데이터베이스 파일을 다시 작성해야하며 그 시점에서 현재 "copydb"명령만큼 느려집니다.

출처 : https://stackoverflow.com/questions/9201832/how-do-you-rename-a-mongodb-database
728x90
반응형