웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > db

MongoDB 백업 명령어 mongorestore 사용시 에러 duplicate key 해결하기

Last Modified : 2023-05-10 / Created : 2023-05-10
1,941
View Count
만약 MongoDB를 사용하는 경우 저장된 데이터를 백업하거나 복원할 필요가 있습니다. 이때 백업된 데이터를 적용하기 위해서 mongorestore를 사용하죠. 그런데 백업 도중 다음의 에러가 발생한 경우 어떻게 해결할 수 있을까요?



# MongoDB duplicate key 에러 해결하기


만약 다음과 같은 메시지가 발생하는 경우가 있을 수 있습니다.

continuing through error: E11000 duplicate key error collection: <Database.Collection> index: _id_ dup key

해당 에러 메시지의 원인은 동일한 키가 백업 도중 발견되었기 때문입니다. 즉 MongoDB 내에 동일한 키가 있어 데이터를 복원할 경우 에러 메시지가 출력됩니다. 이 경우 어떻게 해야할까요?


해결 방법은 몇 가지 존재합니다. 그 중에서 가장 손 쉬운 방법은 무엇일까요? 바로 중복된 키가 동일한 데이터이거나 불필요한 경우 덮여쓰는 방법입니다. 가장 간단하고 쉬운 방법으로 기존 데이터를 백업 데이터로 덮어쓰면 됩니다.

주의할 부분은 백업 전 중복된 데이터가 날라갈 수 있으므로 한 번 더 신중히 생각하고 명령어를 실행해야 하겠죠!


! 데이터 중복 키 덮어쓰는 방법, --drop


만약 덮어써도 된다고 판단되는 경우 아래와 같이 --drop 옵션을 같이 사용하여 해결하도록 합니다. 즉 아래와 같이 명령어를 수행할 수 있습니다.
mongorestore --drop --db your_database --collection your_collection /backup_pathname

다시 한 번 말하지만 백업 데이터를 덮여쓰는 부분은 한 번 더 신중해야 합니다. 위 명령어를 보시면 앞에 --drop 옵션을 사용하여 백업시 중복된 키 값을 백업 데이터로 덮어쓰게 됩니다.


또 다른 방법으로 기존의 Object Id값을 새로운 Object Id값으로 변경하는 방법입니다. 데이터의 document가 많지 않다면 하나하나 확인하여 변경할 수 있겠죠. 너무 많다면 기존 데이터 전체를 루프문으로 새로운 id를 부여하는 것도 방법이 되겠습니다.


여기까지 MongoDB 데이터 에러 발생시 해결 방법을 알아봤습니다. 항상 데이터 관련 작업을 진행할 때는 변경사항이 생기기 전에 원본 데이터의 백업을 확인하는 것이 매우 중요하겠죠. 혹시 모를 위험을 대비 별도로 데이터를 분리해 관리하는 것도 필요할 수 있겠습니다.

Previous

MySQL에서 테이블 컬럼의 타입 변경하기, text