Back-End

MacOS 에서 MongoDB 설치하기 (Intel, M1)

졸려질려 2022. 4. 29. 13:23
반응형

설치 환경
- M1 Macbook Pro (2021)
- macOS Montrey 12.3.1

 본 글은 MongoDB 공식 문서에서 제공하는 설치 가이드에 따라 실습한 내용입니다.


0. Homebrew 설치

 본 글에서 설치하고자 하는 MongoDB는 "MongoDB Community Edition 5.0" 이다.
MacOS에서 MongoDB를 설치하기 위해서는 Homebrew가 필요하다. 필자는 이미 Homebrew를 설치하여 사용 중이기도 하고, Homebrew 설치 방법은 MongoDB 공식 문서에서 제공하는 설치 가이드 문서 뿐만 아니라 다른 블로그에서도 많이 설명되어 있으니 본 글에서 생략한다.

 위와 같이 "brew" 명령어가 잘 동작한다면 설치는 정상적으로 마친 것이다. 이제 가이드 문서에 따라 MongoDB를 설치해보자.


1. MongoDB Homebrew Tap  추가

brew tap mongodb/brew


2. Homebrew를 최신 버전으로 업데이트

brew update


3. MongoDB 설치

brew install mongodb-community@5.0

흠... 전에 서버 입문하면서 설치했었나 보다.... 암튼 업데이트는 된것 같다!

 위 설치는 다음 파일들을 포함하고 있다고 한다.

MongoDB Installation include...
1. The mongod server
2. The mongos sharded cluster query router
3. The MongoDB Shell, mongosh

4. configuration file
   - Intel Chip : /usr/local/etc/mongod.conf
   - Apple Chip : /opt/homebrew/etc/mongod.conf
5. log directory
   - Intel Chip : /usr/local/var/log/mongodb
   - Apple Chip : /opt/homebrew/var/log/mongodb
6. data directory
   - Intel Chip : /usr/local/var/mongodb
   - Apple Chip : /opt/homebrew/var/mongodb

 Apple M1 칩으로 설치된 4, 5, 6번 파일들은 Homebrew가 설치된 경로에 따라 달라질 수 있다. brew가 위와 같은 패키지들을 어디에 설치하는지 기본 경로를 보고 싶다면 다음 명령어를 터미널에 입력해보면 된다.

brew --prefix


4. MongoDB 실행

 macOS에서 MongoDB를 Service 또는 Background Process로 실행할 수 있다. 다만 MongoDB는 macOS Service로 실행하는 것을 권장한다. macOS Service로 실행하면 시스템 ulimit 값을 자동으로 알맞게 설정해주기 때문이다.

4-1) Service로 MongoDB 실행 및 중지

- 실행

brew services start mongodb-community@5.0

- 중지

brew services stop mongodb-community@5.0

4-2) Background Process로 MongoDB 실행 및 중지

- 실행 (Intel Chip)

mongod --config /usr/local/etc/mongod.conf --fork

- 실행 (Apple Chip)

mongod --config /opt/homebrew/etc/mongod.conf --fork

- 중지

mongosh를 통해 mongod와 연결한 후에 "shutdown" 명령어를 입력한다.

NOTE
 macOS는 "mongod"를 설치한 후에 실행하는 것을 막기도 한다.
"mongod"를 실행 했는데, "Security Error"가 나타난다면 "mongod"에 권한을 주면 된다.

1. 시스템 환경설정(System Preferences) 열기
2. 보안 및 개인 정보 보호(Security and Privacy) 메뉴 클릭
3. 일반(General) 탭에서 "mongod"에 대한 메시지의 우측 버튼을 클릭하여 [Open Anyway] 혹은 [Allow Anyway] 선택

4-3) MongoDB 실행 확인

- macOS Service

brew services

or

brew services list

- macOS Background Process

ps aux | grep -v grep | grep mongod

- Log 파일 확인

Log file in Intel Chip : /usr/local/var/log/mongodb/mongo.log

Log file in Apple Chip : /opt/homebrew/var/log/mongodb/mongo.log


5. MongoDB 연결 및 사용

 MongoDB를 실행 시킨 후에, "mongosh" 명령어를 입력하면 Mongo Shell이 터미널 안에서 열린다.

 MongoDB를 실행하지 않고 "mongosh" 명령어를 입력하면 위 사진에서 맨 처음 명령어 결과가 반환된다.

NOTE
 macOS는 "mongosh"를 설치한 후에 실행하는 것을 막기도 한다.
"mongosh"를 실행 했는데, "Security Error"가 나타난다면 "mongosh"에 권한을 주면 된다.

1. 시스템 환경설정(System Preferences) 열기
2. 보안 및 개인 정보 보호(Security and Privacy) 메뉴 클릭
3. 일반(General) 탭에서 "mongosh"에 대한 메시지의 우측 버튼을 클릭하여 [Open Anyway] 혹은 [Allow Anyway] 선택

MongoDB Shell 안에서 DB의 CRUD 기능을 모두 수행할 수 있다.


6. MongoDB Database Tools 사용하기

 MongoDB 4.4.1 버전부터, "brew"로 MongoDB를 설치하면 MongoDB Database Tools가 같이 설치된다. MongoDB Database Tools는 "mongoimport"와 "mongodump"와 같이 데이터 백업 및 가져오기/내보내기 기능과 "mongotop"과 같은 모니터링 도구를 포함하여 MongoDB 배포에 유용한 명령어 도구 모음이다.

 위에서 이미 MongoDB Server를 설치했다면, Terminal에서 바로 명령어를 사용할 수 있다. 예를 들어, MongoDB 모니터링 도구가 필요하다면, "mongotop" 명령어를 입력하여 현재 실행 중인 MongoDB의 상황을 실시간으로 지켜볼 수 있다.


7. 추가 정보

7-1) Localhost Binding by Default

 기본적으로, MongoDB는 bindIP 값을 Localhost 주소인 "127.0.0.1" 로 설정하여 실행한다. 즉, 기본값으로 MongoDB를 실행하면 원격 접속이 아닌 로컬 접근만이 가능한 것이다. 원격 사용자는 mongod 로 연결할 수 없고, 네트워크 인터페이스가 Valid 하지 않다면 replica set을 초기화하지 않는다.

 만약 기본 bindIP 주소 값을 바꾸고 싶다면 다음 두 가지 방법이 있다.

  1.  MongoDB 설정 파일에서 bindIP 값 고치기
  2.  "--bind_ip" 옵션값을 명령어와 함께 입력

다만 bindIP 값을 localhost가 아닌 다른 Public IP로 바꿀 때는 미인증 사용자에 대한 접근으로부터 안전할 것인지 확실히 체크해야 한다. 다음 문서를 참고하자. ( Security Checklist, Enabling Authentication, Hardening Network Infrastructure

7-2) Troubleshooting ChecksumMismatchError

 오래된 버전을 설치하게 되면, ChecksumMismatchError가 발생할 수 있다.

Error: An exception occurred within a child process:
  ChecksumMismatchError: SHA256 mismatch
Expected: c7214ee7bda3cf9566e8776a8978706d9827c1b09017e17b66a5a4e0c0731e1f
  Actual: 6aa2e0c348e8abeec7931dced1f85d4bb161ef209c6af317fe530ea11bbac8f0
  Archive: /Users/kay/Library/Caches/Homebrew/downloads/a6696157a9852f392ec6323b4bb697b86312f0c345d390111bd51bb1cbd7e219--mongodb-macos-x86_64-4.2.0.tgz
To retry an incomplete download, remove the file above.

 위와 같이 에러가 발생한다면 재설치 진행하여 에러를 해결할 수 있다.

1. 다운로드 받은 ".tgz" 파일을 삭제한다.
2. brew에서 이전 버전에서 사용된 MongoDB Tap을 재생성한다.

brew untap mongodb/brew && brew tap mongodb/brew

3. MongoDB를 설치한다.

brew install mongodb-community@5.0

 

반응형

'Back-End' 카테고리의 다른 글

Linux 명령어 모음  (1) 2022.04.06
pm2를 사용하여 서버를 백그라운드로 실행하기  (0) 2022.04.04
yarn 과 yarn run  (0) 2022.04.04