설치 테스트는 Ububtu 20.04 버전, Java11 버전에서 확인하였다.
Ububtu 환경에서 MongoDB 를 설치하기 위해서 아래의 메뉴얼을 따르면 된다.
### mongodb user/group 추가
adduser mongodb
### 패키지 정보 업데이트
sudo apt-get update
### home 디렉토리로 이동
cd /home
### MongoDB tgz 파일 다운로드
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-6.0.2.tgz
### 압축풀기
tar -xzvf mongodb-linux-x86_64-ubuntu2004-6.0.2.tgz
### 디렉토리명 변경
mv mongodb-linux-x86_64-ubuntu2004-6.0.2.tgz mongodb
mongod.conf 파일은 mongod configure 파일로
mongod 인스턴스 실행을 위한 기본적인 setting 값이 설정되어 있는 "설정 파일" 이다.
해당 파일은 /etc/mongodb/mongod27017.conf 로 생성해주자.
27017 을 뒤에 추가로 붙여준 이유는 27017 포트를 쓰기 위함인데,
그저 관리의 편의성을 위한 것이다.
### mongod.conf 파일 생성
touch mongod27017.conf
아래는 mongod.conf setting 목록이다.
storage:
dbPath: /var/lib/mongodb ## 몽고디비 데이터 디렉토리
journal: ## recover option
enabled: true
# WiredTiger Option
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 16
collectionConfig:
blockCompressor: snappy ## 압축종류 -> snappy 권고
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log ##시스템 로그 파일 경로
# network interfaces
net:
port: 27017 ## 해당 몽고디비가 사용할 포트
bindIp: 0.0.0.0 ## 바인딩할 아이피
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
# 인증정보 - replicaset, sharding 을 위해 필요함
security:
keyFile: /etc/mongodb/keyfile
OPTION | DESC |
storage.engine | 엔진 설정. 3.0 이상은 wiredTiger, mmapv1로 설정 할 수 있다. 3.2 이상 버젼에서는 wiredTiger를 디폴트 엔진이다 |
storage.wiredTiger.engineConfig.cacheSizeGB | 자주 사용되는 데이터와 인덱스 블록을 캐시 할 수 있는 페이지 캐시 설정. 명시 하지 않으면 전체 물리적 메모리 중 50%를 할당한다. |
storage.wiredTiger.collectionConfig.blockCompressor | 디스크 압축 알고리즘 설정 'snappy' or 'zlib' 'snappy' - 성능 높음, 압축률 낮음 'zlib' - 성능 낮음, 압축률 높음 |
위에서 압축풀어준 mongodb 파일로 접근해준다.
/home/mongodb/bin 명령어로 해당 디렉토리내에 접근한다.
해당 디렉토리에 접근하면 mongod, mongos 파일이 존재한다.
현재는 mongos 파일은 필요없지만 일단 mongos, mongod 파일 모두
/usr/bin 디렉토리로 옮겨준다.
또한 root 유저로 해당 작업을 진행하고 있다면,
파일 소유자와 그룹이 root 로 되어있을 것이다.
이런식으로 되어있으면 mongod 를 실행할 때 권한오류가 발생하게 되므로
파일 소유자와 그룹을 mongodb 로 바꿔준다.
### /usr/bin/ 디렉토리로 mongod/mongos 파일을 이동또는 복사
mv mongod /usr/bin
mv mongos /usr/bin
### mongod 파일 소유자/그룹 변경
chown mongodb:mongodb mongod
chown mongodb:mongodb mongos
해당 mongod 인스턴스의 데이터 파일과
log 파일 저장을 위해 새로운 디렉토리를 만들어준다.
여기서도 마찬가지로 소유권은 mongodb 에게 할당한다.
### /var/lib/mongod27017
mkdir /var/lib/mongod27017
### mongod 디렉토리 소유자/그룹 변경
chown mongodb:mongodb mongdb
### mongod 로그 디렉토리 생성
mkdir /var/log/mongodb
### mongodb 디렉토리 소유자/그룹 변경
chown mongodb:mongodb mongodb
cd /var/log/mongodb
### mongod 로그 파일 생성
touch mongod27017.log
### mongod 로그파일 소유자/그룹 변경
chwon mongodb:mongodb mongod27017.log
여기까지 mongod 인스턴스의 설치준비는 완료가 되었다.
하지만, 서비스의 등록없이 인스턴스를 관리하다보면 불편함이 생긴다.
그러므로 서비스 등록을 진행해주자.
먼저 아래와 같이 명시된 디렉토리로 이동하여 새로운 파일을 생성해주자.
### /lib/system/systemd 로 이동
cd /lib/system/systemd
### mongod.service 파일 생성
touch mongod@.service
mongod@.service 의 내용은 아래와 같다.
여러가지 옵션이 지정되어 있는데
해당 서비스를 시작할 경우에 mongodb 소유자, 그룹으로 시작하겠다는 의미이고
혹시나 오류가 발생하여 서비스가 종료되었을때
다시 서비스를 가동해주라는 옵션도 지정되어 있다.
[Unit]
Description=MongoDB Shard Serivice - instance %i
Documentation=https://docs.mongodb.org/manual
AssertPathExists=/etc/mongodb/mongod%i.conf
After=network-online.target
Wants=network-online.target
[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod -config /etc/mongodb/mongod%i.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
이렇게 서비스 파일만 생성했다고
서비스로 관리할 수 있는것은 아니다.
symbolic link 등록을 통하여 서비스로 관리해줄 수 있다.
### symbolic link 추가하기 위해 경로에 접근
cd /etc/systemd/system/multi-user.target.wants/
### symbolic link 지정
### ln -s {절대경로} {시스템경로}
ln -s /lib/systemd/system/mongod@.service mongod@27017
ls -l | grep mongod
> lrwxrwxrwx 1 root root 35 Oct 21 16:08 mongod@27017.service -> /lib/systemd/system/mongod@.service
이제 mongod instance 를 서비스로 관리할 수 있게 되었다.
아래의 명령어를 통하여 서비스를 구동해보자.
systemctl daemon-reload ## 설정 다시 불러오기
systemctl enable mongod@27017.service ## 최초 구동시 자동실행 여부 결정해준다.
systemctl start mongod@27017.service ## mongodb service 시작
'MongoDB' 카테고리의 다른 글
[MongoDB] WiredTiger StorageEngine (0) | 2023.03.13 |
---|---|
[MongoDB] Ubuntu MongoDB 설치 - mongoshell 설치 (0) | 2022.11.28 |
[MongoDB] Ubuntu MongoDB 설치 - mongos 설치 (0) | 2022.11.25 |
[MongoDB] Ubuntu MongoDB 설치 - mongoc 설치 (0) | 2022.11.24 |
[MongoDB] MongoDB 란? (0) | 2022.11.22 |