Seize the day

POST : Backend study

GCP -> Oracle 클라우드로 Mongo db 이전 스터디

구글 클라우드에서 운영중인 독푸딩 서비스가 있다.  도커를 모를 때라 서버에 필요한 프로그램을 한땀한땀 스크립트를 찾아가면서 설치를 했다. 오라클 클라우드로 API 서버와 DB서버를 이전하면서 도커를 이용했다.  도커만 설치되어 있다면 서버 프로그램을 간단히 실행하고 종료시킬 수 있게 되었다.  

GCP 접속하여 Mongo 백업

# ssh 접속
dajkim76@Kims-Mac-mini ~/backend/gcp % ssh -i gcp.key 34.170.xxx.yyy
Enter passphrase for key 'gcp.key':

# mongo 백업
dajkim76@base-backend-1:~$ mongodump --db prod-db --out mongo_221122

# 폴더 압축
dajkim76@base-backend-1:~$ tar cvzf mongo_221122.tar.gz mongo_221122/

dajkim76@base-backend-1:~$ ls -al mongo_221122.tar.gz
-rw-rw-r-- 1 dajkim76 dajkim76 288717 Nov 21 15:45 mongo_221122.tar.gz

 

압축파일 가져오기

dajkim76@Kims-Mac-mini ~/backend/gcp % sftp -i gcp.key 34.170.xxx.yyy
Enter passphrase for key 'gcp.key':
Connected to 34.170.xxx.yyy.
sftp> get mongo_221122.tar.gz
Fetching /home/dajkim76/mongo_221122.tar.gz to mongo_221122.tar.gz
/home/dajkim76/mongo_221122.tar.gz                                                                                  100%  282KB 280.5KB/s   00:01
sftp> exit

 

압축파일 오라클 vm에 업로드

dajkim76@Kims-Mac-mini ~/backend/oci % sftp -i oracle.key opc@132.145.xxx.yyy
Enter passphrase for key 'oracle.key':
Connected to 132.145.xxx.yyy.
sftp> put mongo_221122.tar.gz
Uploading mongo_221122.tar.gz to /home/opc/mongo_221122.tar.gz
mongo_221122.tar.gz                                                                                                 100%  282KB   2.8MB/s   00:00
sftp> exit

 

압축풀기

[opc@instance-20221029-2034 ~]$ tar xvzf mongo_221122.tar.gz

 

mongo 도커 컨테이너에 접속하여 db 복구하기

# 컨테이너 접속 
docker exec -it docker_mongo_1 bash

# Mongo 복구: 호스트의 mongo_221122 디렉토리의 상위 폴더를 volumes에 바인딩시킬것
mongorestore -u root -p example ./mongo_221122

# 몽고 쉘 접속
mongosh -u root -p example

# 프로덕션 db에 유저 생성
use prod-db
db.createUser( { user: "prod-user", pwd: "prod-pwd", roles: [ { role: "readWrite", db: "prod-db" }, ] } )

 

백엔드 도커 파일 최종 정리

dev.env 개발환경변수

MONGO_ROOT_PASSWORD=example
MONGO_STORAGE=~/mongo-storage

docker-compose-mongo.yml

version: '3.1'

services:

  mongo:
    image: mongo:6.0.2
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD}
    volumes:
      - ${MONGO_STORAGE}:/data/db
      - ./:/app
    working_dir: /app
    hostname: mongo-host
    ports:
      - 27017:27017
    networks:
      - backend


networks:
  backend:
    driver: bridge
    external: true

start-mongo.sh

docker-compose -f docker-compose-mongo.yml --env-file $1.env up -d

mongo 서버 실행

start-mongo.sh dev

서비스 운영 환경이라면 prod.env 파일을 만들어서 start-mongo.sh prod

서버 종료는

docker-compose -f docker-compose-mongo.yml stop

 

 

참고 사이트

https://nota.tistory.com/53

https://velog.io/@killi8n/Mongodb-%EB%8D%A4%ED%94%84%ED%95%98%EA%B3%A0-%EB%B0%B1%EC%97%85%ED%95%98%EA%B8%B0-gejmop2baz

https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-archive.html

top

posted at

2022. 11. 22. 01:29


CONTENTS

Seize the day
BLOG main image
김대정의 앱 개발 노트와 사는 이야기
RSS 2.0Tattertools
공지
아카이브
최근 글 최근 댓글
카테고리 태그 구름사이트 링크