ubuntu 환경의
MongoDB(몽고db)에서
에러가 발생하거나 동작하지 않는 경우 해결 방법에 대하여 알아봅니다.
! MongoDB에러가 발생하는 원인은?
언제 에러가 발생할까요? 일반저긍로 아래와 같은 수행 이 후 예기치 못 한 에러가 나타날 가능성이 높습니다.
- mongodb 재설치 이 후- 최신버전의 mongpdb 업데이트 이 후- 데이터베이스 쿼리 변경
원인은 여러가지가 있을 수 있습니다. 정확한 원인을 파악하기 위해 가장 중요한 것은 무엇보다
동작하지 않을 때의 로그 메시지를 잘 확인하고 대응하는 것이 중요하죠.
아래는 각 현상에 따라 해결할 수 있는 방법들을 구분하였습니다.
@ dbpath 데이터 베이스를 찾지 못하는 경우
데이터 저장소의 위치를 찾지 못하는 경우가 발생할 수 있습니다. mongodb 를 업데이트 한 이 후 기존의 데이터베이스 저장소 경로와 달라질 수 있습니다. 일단 dbpath의 값을 확인해야 하므로
/etc/mongod.conf 파일 설정을 열어 확인해야 합니다.
기본값은 /data/db이고 대부분 이 경우거나 /var/lib/mongodb입니다.
해결하기 위해서는 설정된 dbpath의 값이 실제 저장소의 위치와 반드시 일치해야 합니다.
@ 사용자 권한 문자로 해당 경로에 접근 못하는 경우
사용자의 권한 이슈일 경우가 상당히 많이 있습니다. 이 현상이 생기는 이유는
재설치 하거나 옮기는 등의 행위로 폴더 및 파일의 권한이 없거나 변경되었을 수 있습니다.
해결 방법은 간단합니다. 먼저
mongodb에서 사용하는 경로를 찾아 허용 가능한 사용자로 권한을 변경하면 됩니다. 즉 사용자와 그룹이 mongodb:mongodb가 아닌 경우 사용자를 변경하여 권한을 추가하도록 합니다.
sudo chown -R mongodb:mongodb /data
sudo chown -R mongodb:mongodb /data/db
sudo chown -R mongodb:mongodb /var/log/mongodb/
위와 같이 데이터베이스 저장소 이와의 설정 및 로그 파일 등등도 사용자를 확인하여 변경하도록 합니다.
@ 버전 문제로 쿼리나 환경설정이 정상 동작하지 않는 경우
MongoDB는 다양한 버전이 존재하며 호환되는 부분과 되지 않는 부분이 존재합니다. 예를들어 3.4 이하의 버전과 이 후의 버전에 따라 사용 가능한 문법 등의 차이가 많을 수 있죠.
이런 경우 각 쿼리에 에러가 나타나지 않는 지 확인해야 합니다. 만약 지원되지 않는 부분이 있는 경우 쿼리를 변경하거나 MongoDB의 버전을 맞추어 사용하는 것 역시 방법입니다.
여기까지 MongoDB가 동작하지 않는 경우 주요 원인과 해결방법을 알아봤습니다. 기타 아래와 같은 사항이 원인일 수 있습니다.
- 실제 구동중인 포트와 맞지 않는 경우
- admin 사용자의 인증이 반드시 필요한 경우
- mongodb service가 중지된 경우
여러가지 이유가 있을 수 있으므로 로그를 파악하고 이에 맞는 대응을 하는 것이 가장 중요하겠습니다.