몽고디비 설치 - Window
아래 다운로드 센터에서 간편하게 다운로드 할 수 있다.
https://www.mongodb.com/try/download/community
몽고디비 설치 - Ubuntu(Docker)
몽고디비 서버를 도커로 올리는 작업은 아래 홈페이지를 참고하면 명령어로 빌드할 수 있다.
https://www.mongodb.com/ko-kr/docs/manual/tutorial/install-mongodb-community-with-docker/
하지만 도커로 올렸다 내렸다.. 수정도 명령어로 하기 번거로우니 compose 파일을 작성하여 관리하는 것이 더 편하다.
.env
## Mongodb
MONGO_PORT=27017 # 몽고디비 서버 실행 포트
MONGO_INITDB_DATABASE=msgdb # 처음 생성할 데이터베이스 이름
MONGO_INITDB_ROOT_USERNAME=user # 처음 생성할 유저 이름
MONGO_INITDB_ROOT_PASSWORD=mongopw # 처음 생성할 유저 비번
docker-compose.yml
version: "3.8"
services:
mongodb:
image: mongo
container_name: mongodb
ports:
# mongodb 기본포트
- 27017:27017
env_file: .env
volumes:
- mongodb_volumes:/data/db
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
mongodb_volumes:
external: true
기본적으로 사용할 compose 파일이고 개발서버를 운용할 예정이라면 몇 가지 세팅이 더 필요하다.
mongodb backup 설정
https://www.mongodb.com/ko-kr/docs/database-tools/mongodump/
몽고디비 백업은 아래 명령어로 동작한다.
mongodump --archive=backup_20240904.gz --gzip --host mongodb --port 27017 -u user -p mongopw
mongodump 옵션설명 | |
--archive=backup_20240904.gz | 파일명 |
--gzip | 압축여부 |
--host | 호스트 |
--port | 포트 |
-u | 유저아이디 |
-p | 유저 비밀번호 |
참고로 복구는 아래 명령어로 동작한다.
mongorestore --archive=backup_20240904.gz --gzip --host mongodb --port 27017 -u user -p mongopw
backup.sh
서버관리할 때 백업을 매일 같이 하고싶을 때는 crontab 을 이용한다.
#!/bin/bash
# 실행 명령어 : bash 'backup.sh'
EXIST_MONGO_CONTAINER=$(docker ps | grep mongodb)
if [ -n "$EXIST_MONGO_CONTAINER" ]; then
# 백업 파일명
filename=backup_$nowdate.gz
# 백업 압축파일 생성 실행 > 루트에 생성
docker exec mongodb mongodump --archive=$filename --gzip --host mongodb --port 27017 -u user -p mongopw
# 백업 폴더로 이동 후 루트에서 파일 삭제
docker exec mongodb mkdir /backup
docker exec mongodb cp $filename /backup
docker exec mongodb rm -rf $filename
exit 0
else
# 실패 로그 작성
echo "[ FAIL ] backup fail : $nowdate" >> /mongo/mongo_backup_fail.log
exit 1
fi
* 경로 지정 옵션이 존재( --out 파일경로 ). 하지만 파일이름 지정하는 --archive 와 함께 쓸 수 없는 것 같으니 참고!
( 다른 방법 아시는 분은 댓글 부탁드리겠습니다...! )
Failed: bad option: --out not allowed when --archive is specified
* 백업 파일 보관 기간을 지정해주고 싶을 때는 if 문 안에 아래 내용을 추가
docker exec msg-mongodb find /data/backup -name '*.gz' -mtime +14 -delete
crontab
크론탭 설치 > 크론탭 문서에 아래 내용을 입력 > 크론탭 실행 혹은 재실행 하면 자동으로 매일 0시에 백업을 진행한다.
# 매일 0시 백업 실행
0 0 * * * /mongodb/backup.sh
백업파일 볼륨화
매일 백업을 해둔다고 해도 컨테이너 내부에 백업하고 있기 때문에 컨테이너가 삭제되면 백업도 사라진다.
꼭 볼륨화를 해서 관리해야한다.
version: "3.8"
services:
mongodb:
image: mongo
container_name: mongodb
ports:
# mongodb 기본포트
- 27017:27017
env_file: .env
volumes:
- mongodb_volumes:/data/db # DB 데이터 볼륨화
- mongodb_backup_volumes:/data/backup # DB 백업 데이터 볼륨화
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
mongodb_volumes:
external: true
mongodb_backup_volumes:
external: true
여기까지 했다면 몽고디비 빌드 기본 설정은 끝이다!!
이제 docker-compose up -d --build 로 올리고 docker ps 를 하면 몽고디비 서버가 올라가 있을 것이다. 🎉 🎉
'📚 프로젝트' 카테고리의 다른 글
Flutter / Node 로 Window 메신저 개발기 - Node 설계 및 소켓 서버 생성 (3) (0) | 2024.09.21 |
---|---|
Flutter / Node 로 Window 메신저 개발기 - 들어가며 (1) (1) | 2024.08.27 |
KDX 유통·소비 데이터 분석 & 시각화 경진대회 소비트렌드 코리아 2020 (0) | 2021.12.29 |
화풍(웹툰, 명화) 예측 서비스 프로젝트 (0) | 2021.12.29 |
코로나 19 데이터 시각화 프로젝트 - 시각화 및 데이터 분석 (0) | 2021.12.29 |