ServBay에서 MongoDB 데이터베이스 설치 및 관리
MongoDB는 유연성, 강력한 쿼리 기능, 수평 확장성으로 유명한 선도적인 NoSQL 문서 지향 데이터베이스로, 현대 애플리케이션 개발에서 인기 높은 선택지입니다. ServBay는 macOS 개발자를 위한 전례 없는 통합 환경을 제공하며, 여러 버전의 MongoDB 설치, 구성, 관리 과정을 획기적으로 단순화합니다. 또한 핵심 명령줄 도구 세트가 기본 내장되어, 완성도 높고 효율적인 로컬 개발 및 테스트 워크스테이션을 완성할 수 있습니다.
개요: 왜 ServBay에서 MongoDB를 사용해야 할까요?
ServBay는 단순한 실행기가 아닌, 완전한 개발 환경 관리 솔루션입니다. MongoDB의 경우 다음과 같은 이점이 있습니다:
- 다중 버전 동시 설치 및 전환: MongoDB의 여러 버전(예: 5.0, 6.0, 7.0 등)을 한 번의 클릭으로 설치하고 실행할 수 있으며, 프로젝트 필요에 따라 간편하게 전환 가능합니다. 환경 충돌에 대한 고민이 사라집니다.
- 그래픽 기반 설정: 번거로운 설정 파일편집에서 벗어나세요. ServBay의 GUI에서 MongoDB의 포트, IP, 데이터 디렉터리 등 핵심 매개변수를 직관적으로 조정할 수 있습니다.
- 통합 도구 체인: ServBay는 공식 **MongoDB Shell(
mongosh
)**과 MongoDB Database Tools를 자동 설치 및 연동합니다. 즉시 사용 가능한mongostat
,mongotop
,mongodump
,mongorestore
등 주요 툴까지 한 번에 활용할 수 있습니다.
이 가이드는 설치, 환경 설정, 대화형 관리, 실시간 성능 모니터링, 데이터 백업 및 복구까지 모든 핵심 단계에 대한 실전형 안내서를 제공합니다.
1. MongoDB 서비스 설치 및 설정
1단계: MongoDB 패키지 설치
ServBay에서 MongoDB 서비스를 설치하는 것이 첫걸음입니다.
ServBay 애플리케이션을 실행하세요.
좌측 네비게이션 바에서 **패키지(Packages)**를 클릭합니다.
패키지 목록에서
Databases
카테고리로 스크롤하여MongoDB
섹션을 찾으세요.프로젝트에 필요한 MongoDB 버전(예:
MongoDB 7.0
)을 선택한 뒤, 우측의 설치 버튼을 클릭하세요. ServBay가 자동으로 다운로드 및 설치를 완료합니다.
2단계: MongoDB 서비스 세부 설정
설치가 완료되면, MongoDB 서비스를 보다 세부적으로 구성할 수 있습니다.
좌측 네비게이션에서 Databases -> MongoDB -> 방금 설치한 버전(예:
MongoDB 7.0
)을 클릭합니다.이 화면에서 다음의 핵심 옵션을 직접 설정할 수 있습니다:
- Bind IP: MongoDB가 네트워크 요청을 수신할 IP 주소입니다. 기본값
127.0.0.1, ::1
은 로컬 개발에 가장 안전한 설정으로, 본인 컴퓨터 내 프로그램만 데이터베이스에 연결할 수 있습니다. - Bind Port: 데이터베이스 접속 포트입니다. MongoDB의 기본 포트는
27017
이며, 특별한 상황이 아니라면 그대로 두는 것이 좋습니다. - Socket: Unix 소켓 파일 경로로, 로컬 연결에서는 TCP/IP보다 효율적입니다(네트워크 레이어 생략).
- Data dir(데이터 디렉터리): 모든 데이터베이스 파일(컬렉션, 인덱스 등)이 저장될 로컬 디스크 경로입니다. ServBay가 적절한 기본값을 지정하며, 오른쪽 폴더 아이콘을 클릭하면 Finder에서 바로 열 수 있습니다.
- Additional Parameters(추가 매개변수): 고급 옵션 입력란입니다. 예를 들어 접근 제어를 활성화하려면
--auth
를 추가하세요.
- Bind IP: MongoDB가 네트워크 요청을 수신할 IP 주소입니다. 기본값
3단계: MongoDB 서비스 실행
- 모든 설정 변경 후, 우측 하단의 저장(Save) 버튼을 반드시 클릭하세요.
- 패키지(Packages) 페이지로 돌아가 방금 설정한 MongoDB 버전을 찾아 우측 회색 스위치를 클릭하면 서비스가 시작됩니다.
- 스위치가 초록색으로 변하며, 상태표시등이 켜지면 MongoDB 인스턴스가 정상적으로 실행되었고 연결 대기 중임을 의미합니다.
2. 대화형 관리: MongoDB Shell(mongosh
) 마스터하기
mongosh
는 공식 MongoDB 최신 CLI로, 구문 강조, 자동 완성, 명령 기록, 확장 가능한 스크립트 기능까지 제공합니다. 데이터베이스와 상호작용할 때 최고의 선택지입니다.
MongoDB Shell 설치
ServBay는 mongosh
를 별도 패키지로 제공하며 필요에 따라 설치할 수 있습니다.
- 패키지(Packages) 화면에서
MongoDB Shell
을 찾으세요. - 우측 설치 버튼을 클릭하면, 설치 후
mongosh
명령어가 ServBay 관리 터미널 환경 전체에서 사용 가능합니다.
mongosh
사용법
macOS 기본 터미널 또는 iTerm2 등 ServBay 환경이 적용된 터미널 어디서든 mongosh
를 실행할 수 있습니다.
기본 연결: 터미널을 열고, 아주 단순한 명령만으로도 ServBay의 기본(로컬 27017 포트) MongoDB에 연결할 수 있습니다:
bashmongosh
1혹은 명확한 커넥션 문자열 사용:
bashmongosh "mongodb://127.0.0.1:27017"
1대화형 CRUD 실전 예시: 연결에 성공하면 막강한 자바스크립트 인터프리터 환경에 진입합니다. 아래는 실전 프로세스 예시입니다.
1단계: 데이터베이스 선택 또는 생성
javascript// 이 명령어로 servbay-demo 데이터베이스로 진입(없으면 최초 데이터 쓰기 시 자동 생성) use servbay-demo
1
22단계: 컬렉션 생성 및 데이터 삽입(Create)
javascript// 사용자 문서 한 건 삽입 db.users.insertOne({ _id: 1, name: "Alice", email: "alice@servbay.demo", age: 30, tags: ["developer", "php", "backend"], joined_date: new Date("2023-01-15") }) // 다양한 사용자 문서 여러 건 삽입(더 풍부한 쿼리 실습 가능) db.users.insertMany([ { _id: 2, name: "Bob", email: "bob@servbay.demo", age: 25, tags: ["designer", "ui", "frontend"] }, { _id: 3, name: "Charlie", email: "charlie@servbay.demo", age: 35, tags: ["developer", "python", "data"] }, { _id: 4, name: "Diana", email: "diana@servbay.demo", age: 29, tags: ["developer", "nodejs", "backend"] } ])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
163단계: 데이터 조회(Read)
javascript// 컬렉션 내 전체 문서 조회하며 .pretty()로 가독성 있게 출력 db.users.find().pretty() // 조건부 조회: 28세 초과 개발자 찾기 db.users.find({ age: { $gt: 28 }, tags: "developer" }) // 일부 필드만 반환: 이름과 이메일만 표시 db.users.find({}, { name: 1, email: 1, _id: 0 })
1
2
3
4
5
6
7
84단계: 데이터 수정(Update)
javascript// 단일 문서 수정: Alice에 'lead' 태그 추가, 나이 갱신 db.users.updateOne( { name: "Alice" }, { $set: { age: 31 }, $addToSet: { tags: "lead" } } // $addToSet은 중복 없이 태그 추가 ) // 다중 문서 수정: 모든 'backend' 개발자에 'active' 상태 부여 db.users.updateMany( { tags: "backend" }, { $set: { status: "active" } } )
1
2
3
4
5
6
7
8
9
10
115단계: 데이터 삭제(Delete)
javascript// Bob 문서 하나 삭제 db.users.deleteOne({ name: "Bob" }) // 삭제 결과 확인: Bob 찾기(0 건이어야 정상) db.users.find({ name: "Bob" }).count() // 0 반환
1
2
3
4
5
3. 실시간 모니터링 및 관리: MongoDB 데이터베이스 도구 활용
ServBay는 MongoDB Database Tools
패키지도 탑재하여, mongostat
, mongotop
, mongodump
, mongorestore
등 고급 운영·관리 도구를 바로 사용할 수 있게 도와줍니다.
MongoDB Database Tools 설치
- 패키지(Packages) 페이지에서
MongoDB Database Tools
를 찾으세요. - 우측 설치 버튼을 클릭합니다.
3.1 mongostat
로 실시간 인스턴스 상태 모니터링
mongostat
는 마치 MongoDB의 '심전도'처럼, 핵심 지표를 초 단위 스냅샷으로 보여주어 성능 병목 진단 및 운영 부하 감시에 이상적입니다.
기본 사용법: 새로운 터미널을 열고 다음 명령으로 1초마다 정보를 갱신해 보세요:
bashmongostat
1아래와 같은 출력 예시가 주기적으로 나타납니다(각 행이 특정 시점 현황):
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time *0 *0 *0 *0 0 1|0 0.0% 23.2% 0 1.29G 84.0M 0|0 1|0 103b 501b 4 Nov 26 15:30:00.001 *0 *0 *0 *0 0 1|0 0.0% 23.2% 0 1.29G 84.0M 0|0 1|0 71b 501b 4 Nov 26 15:30:01.001
1
2
3주요 컬럼 해설:
insert
,query
,update
,delete
: 각 작업의 초당 횟수dirty
: 캐시 내 '더티' 데이터(아직 디스크에 기록되지 않은)가 차지하는 비율used
: 스토리지 엔진의 캐시 사용률vsize
,res
: 가상 메모리/상주 메모리 사용량qrw
,arw
: 읽기/쓰기 대기 중 클라이언트 수net_in
,net_out
: 네트워크 입출력 트래픽conn
: 현재 연결 수
실전 예시: 고빈도 쓰기 부하 관찰
- 터미널A에서
mongosh
접속 후, 아래와 같이 로그 삽입을 시뮬레이션하세요:javascript// mongosh에서 실행 use log_system print("Starting high-frequency log insertion...") while (true) { db.app_logs.insertOne({ level: "INFO", message: "User activity detected.", timestamp: new Date() }); sleep(50); // 50밀리초마다(초당 20회) 삽입 }
1
2
3
4
5
6
7 - 터미널B에서
mongostat
를 실행, 2초 간격으로 갱신해봅니다:bashmongostat 2
1 - 터미널B 출력 확인:
insert
컬럼 값이*40
전후(20회/초 * 2초)로 집계되는 것을 볼 수 있습니다. 즉시 현재 쓰기 부하 상태를 파악할 수 있습니다.
- 터미널A에서
3.2 mongotop
으로 컬렉션 단위 읽기/쓰기 시간 추적
mongostat
가 'DB가 얼마나 바쁜가'를 알려준다면, mongotop
은 '무엇이 DB를 바쁘게 하는가'를 알려줍니다. 컬렉션별 읽기/쓰기 소요시간을 보여주어 성능 핫스팟을 신속하게 진단할 수 있습니다.
기본 사용법: 터미널에서
mongotop
실행(기본 1초 갱신):bashmongotop
1출력 예시:
ns total read write time local.oplog.rs 1101ms 155ms 946ms Nov 26 15:35:00.000 servbay-app.sessions 210ms 1ms 209ms Nov 26 15:35:00.000 servbay-app.articles 15ms 15ms 0ms Nov 26 15:35:00.000
1
2
3
4주요 컬럼 해설:
ns
: 네임스페이스(DB명.컬렉션명
)total
: 읽기+쓰기 총 소요시간read
: 읽기 작업 소요시간write
: 쓰기 작업 소요시간
실전 예시: 앱의 핫스팟 컬렉션 진단
- **터미널A(
mongosh
)**에서 빈번한 세션 갱신, 간헐적 아티클 읽기를 시뮬레이션:javascript// mongosh에서 실행 use servbay_app print("Simulating application load...") // 세션 빈번 업데이트 setInterval(() => { db.sessions.updateOne({ sid: "session_abc" }, { $set: { data: Math.random() } }, { upsert: true }); }, 50); // 50ms마다 업데이트 // 아티클은 드물게 조회 setInterval(() => { db.articles.find({ tags: "featured" }).limit(5).toArray(); }, 500); // 500ms마다 조회
1
2
3
4
5
6
7
8
9
10
11
12 - 터미널B에서
mongotop
을 5초 갱신 주기로 실행:bashmongotop 5
1 - 터미널B 결과 해석:
servbay_app.sessions
컬렉션의write
및total
값이 다른 컬렉션보다 월등히 높음을 확인할 수 있습니다. 즉, 세션 컬렉션의 과도한 쓰기가 주요 병목임을 쉽게 진단할 수 있습니다.
- **터미널A(
3.3 mongodump
로 데이터 백업
mongodump
는 MongoDB 데이터를 바이너리(BSON) 형태로 견고하게 백업하는 도구입니다.
- 단일 데이터베이스 백업:bash
mongodump --db servbay-demo --out /Applications/ServBay/backup/mongodb/servbay-demo-backup-$(date +%F)
1 - 단일 컬렉션 백업:bash
mongodump --db servbay-demo --collection users --out /Applications/ServBay/backup/mongodb/users-backup
1 - 전체 MongoDB 인스턴스(모든 DB) 백업:bash
mongodump --out /Applications/ServBay/backup/mongodb/full-instance-backup
1
3.4 mongorestore
로 데이터 복구
mongorestore
는 mongodump
가 생성한 백업 데이터를 MongoDB로 다시 가져올 때 사용합니다.
- 단일 데이터베이스 복구:bash
# --drop 옵션은 복원 전 동일 DB의 컬렉션을 비워, 깨끗하게 덮어씁니다 mongorestore --drop --db servbay-demo /Applications/ServBay/backup/mongodb/servbay-demo-backup-2023-11-26/servbay-demo/
1
2 - 백업에서 단일 컬렉션을 새 컬렉션으로 복구:bash
mongorestore --db servbay-demo --collection users_restored /Applications/ServBay/backup/mongodb/users-backup/users.bson
1
4. GUI(그래픽) 관리툴 연결
명령줄만이 답이 아닙니다. MongoDB의 주요 그래픽 관리툴을 이용하면, 데이터 탐색, 집계 파이프라인 설계 등이 한결 편리합니다. MongoDB Compass, TablePlus, Studio 3T 등을 추천합니다.
GUI에서 연결 시 다음 정보를 입력하세요:
- Host(호스트):
127.0.0.1
- Port(포트):
27017
- Authentication(인증): 추가 매개변수에
--auth
를 직접 넣고 사용자 생성하지 않았다면 비워둡니다.
요약
ServBay는 MongoDB의 강력함과 macOS 특유의 사용성을 완벽하게 통합하여, 개발자에게 최고의 로컬 개발 환경을 제공합니다. 본 가이드로 MongoDB의 신속한 시작·실행법뿐만 아니라, mongosh
를 활용한 섬세한 관리, mongostat
·mongotop
을 통한 전문가급 모니터링, mongodump
및 mongorestore
로 신뢰성 높은 데이터 백업/복구까지 핵심 역량을 완벽히 익힐 수 있습니다. 이제 여러분의 다음 프로젝트에서 MongoDB를 자신 있게 자유자재로 다뤄보세요!