MongoDB는 오픈소스 기반의 무료 NoSQL 데이터베이스입니다. 문서 지향(document-oriented) 방식으로 동작하며, JSON과 구조가 유사한 BSON 형식으로 데이터를 저장합니다. 높은 가용성과 우수한 성능, 자동 확장성을 갖추고 있어 다양한 개발 환경에서 널리 사용되고 있습니다.
기존 RDBMS와 달리 MongoDB는 데이터를 저장하기 위해 사전에 정의된 스키마가 필요 없습니다. 덕분에 기존 데이터나 스키마에 영향을 주지 않고도 언제든지 구조를 유연하게 변경할 수 있다는 큰 장점이 있습니다.
사전 준비 사항
- CentOS 7이 설치된 리눅스 머신
- root 권한을 가진 사용자 계정
MongoDB 저장소 추가하기
CentOS 7의 기본 저장소에는 MongoDB 패키지가 포함되어 있지 않습니다. 먼저 로컬 머신에 MongoDB 공식 저장소를 등록해야 합니다.
# vi /etc/yum.repos.d/mongodb-org.repo
파일에 아래 내용을 입력한 후 저장합니다.
[mongodb-org-3.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
저장소를 추가했다면 시스템을 업데이트하여 yum이 새로운 저장소 정보를 인식하도록 합니다.
# yum update
정상적으로 등록되면 출력 목록에 mongodb-org-3.2 저장소가 표시됩니다.
MongoDB 설치하기
저장소 정보가 업데이트되었으므로 이제 yum 명령어로 MongoDB를 설치합니다.
# yum install mongodb-org
설치 과정에서 GPG 키 가져오기를 확인하는 메시지가 표시되면 y를 입력해 진행합니다. mongodb-org 본체와 함께 mongos, server, shell, tools 패키지가 의존성으로 함께 설치되며, 모든 과정이 끝나면 Complete! 메시지가 출력됩니다.
MongoDB 서비스 시작하기
설치가 완료되면 MongoDB 서비스를 시작합니다.
# systemctl start mongod
서비스 상태는 아래 명령어로 확인할 수 있습니다.
# systemctl status mongod
출력 결과에 Active: active (running) 항목이 보이면 정상적으로 실행 중인 상태입니다.
설정을 다시 로드하거나 서비스를 중지할 때는 각각 아래 명령어를 사용합니다.
# systemctl reload mongod # systemctl stop mongod
프로세스 수 제한 변경하기
기본 설정 그대로 MongoDB를 실행하면 프로세스 수 제한(soft rlimits)이 4096으로 낮게 잡혀 셸 접속 시 아래와 같은 경고 메시지가 출력될 수 있습니다.
# mongo ... ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.
이 문제를 해결하려면 /etc/security/limits.d/ 디렉터리에 있는 20-nproc.conf 파일을 수정해야 합니다.
# vi /etc/security/limits.d/20-nproc.conf
파일의 기본 내용은 다음과 같습니다.
* soft nproc 4096 root soft nproc unlimited
4096 값을 32000으로 변경합니다.
* soft nproc 32000
변경 사항을 적용하려면 MongoDB 서비스를 재시작해야 합니다.
# systemctl restart mongod
MongoDB 관리자 계정 생성하기
이제 사용자 이름이 admin, 비밀번호가 password123인 관리자 계정을 생성해 보겠습니다. 먼저 mongo 셸에 접속한 뒤 admin 데이터베이스로 전환합니다.
# mongo > use admin switched to db admin
db.createUser() 메서드를 사용해 계정을 생성합니다.
> db.createUser(
... {
... user: "admin",
... pwd: "password123",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}생성된 계정은 show users 명령으로 확인할 수 있습니다.
> show users;
{
"_id" : "admin.admin",
"user" : "admin",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}이번 글에서는 CentOS 7에 MongoDB 저장소를 추가하고 MongoDB를 설치하는 방법, 프로세스 수 제한을 4096에서 32000으로 조정하는 방법, 그리고 관리자 계정을 생성하는 방법까지 살펴보았습니다. 이 과정을 통해 MongoDB를 안정적으로 운영할 수 있는 기본 환경을 갖추게 됩니다.