본문 바로가기

리눅스

MongoDB 데이터베이스를 백업하고 복구하는 방법

728x90

MongoDB 데이터베이스를 백업하고 복구하는 방법

MongoDB 데이터베이스를 백업하고 복구하는 방법은 중요한 데이터의 안전성을 보장하기 위한 핵심적인 작업 중 하나입니다. MongoDB는 다양한 백업 및 복구 옵션을 제공하며, 이를 통해 데이터 손실을 방지하고 데이터를 안전하게 관리할 수 있습니다.

MongoDB 백업하기

1. mongodump 사용

mongodump 명령을 사용하여 MongoDB 데이터베이스를 백업할 수 있습니다.

예를 들어, mydb 데이터베이스를 backup 디렉토리에 백업하려면 다음과 같이 실행합니다.

mongodump --db mydb --out /path/to/backup/directory

이 명령은 지정한 데이터베이스의 모든 컬렉션을 JSON 형식으로 백업합니다.

 

2. mongodump 옵션 설명

  • --db: 백업하려는 데이터베이스의 이름을 지정합니다.
  • --out: 백업 파일을 저장할 디렉토리 경로를 지정합니다.

MongoDB 복구하기

1. mongorestore 사용

mongorestore 명령을 사용하여 MongoDB 데이터베이스를 복구할 수 있습니다. 백업한 데이터베이스를 mydb_restored로 복구하려면 다음과 같이 실행합니다.

mongorestore --db mydb_restored /path/to/backup/directory/mydb

이 명령은 백업된 데이터베이스를 지정한 이름으로 복구합니다.

 

2. mongorestore 옵션 설명

  • --db: 복구할 데이터베이스의 이름을 지정합니다.
  • --dir: 백업 디렉토리의 경로를 지정합니다.
728x90

사용 예시

백업(mongodump)하기

  • 모든 데이터를 백업
mongodump --host HOST_NAME --port PORT_NUMBER
  • 지정한 경로에 백업
mongodump --host 127.0.0.1 --port 27017 --out /tmp/mongo_backup
$ mongodump --host 127.0.0.1 --port 27017 --out /tmp/mongo_backup
2021-07-15T09:50:57.544+0900	writing admin.system.version to
2021-07-15T09:50:57.545+0900	done dumping admin.system.version (1 document)
2021-07-15T09:50:57.545+0900	writing WEB_STATIC.WEBACC_DATE to
2021-07-15T09:50:57.545+0900	writing WEB_STATIC.WEBACC_KEYWORD to
2021-07-15T09:50:57.545+0900	writing WEB_STATIC.WEBACC_TOTAL to
2021-07-15T09:50:57.546+0900	writing WEB_STATIC.WEBACC_LOG to
2021-07-15T09:51:00.530+0900	[........................]  WEB_STATIC.WEBACC_KEYWORD   289993/85209455  (0.3%)
2021-07-15T09:51:00.530+0900	[........................]     WEB_STATIC.WEBACC_DATE  192123/348907014  (0.1%)
2021-07-15T09:51:00.530+0900	[........................]    WEB_STATIC.WEBACC_TOTAL    212446/5980259  (3.6%)
2021-07-15T09:51:00.530+0900	[........................]      WEB_STATIC.WEBACC_LOG    163050/4280165  (3.8%)
...
2021-07-15T10:30:03.529+0900	[#######################.]  WEB_STATIC.WEBACC_DATE  346562554/348907014  (99.3%)
2021-07-15T10:30:06.530+0900	[#######################.]  WEB_STATIC.WEBACC_DATE  347105234/348907014  (99.5%)
2021-07-15T10:30:09.530+0900	[#######################.]  WEB_STATIC.WEBACC_DATE  347653502/348907014  (99.6%)
2021-07-15T10:30:12.529+0900	[#######################.]  WEB_STATIC.WEBACC_DATE  348239348/348907014  (99.8%)
2021-07-15T10:30:15.529+0900	[#######################.]  WEB_STATIC.WEBACC_DATE  348812834/348907014  (100.0%)
2021-07-15T10:30:15.811+0900	[########################]  WEB_STATIC.WEBACC_DATE  348918903/348907014  (100.0%)
2021-07-15T10:30:15.811+0900	done dumping WEB_STATIC.WEBACC_DATE (348918903 documents)
  • 아카이브(gzip)로 백업
mongodump --host 127.0.0.1 --port 27017 --archive=/tmp/mongo_backup/serv-205.gz
  • 백업 파일 전송
    • tar ssh 전송
cd /tmp/mongo_backup/admin
tar czf - * | ssh [email protected] "cd /tmp/mongo_backup/admin; tar xfp -"

복구(mongorestore)하기

  • 지정한 경로로 복구
mongorestore --host 127.0.0.1 --port 27017 --db admin /tmp/mongo_backup/admin
$ mongorestore --host 127.0.0.1 --port 27017 --db admin --drop /tmp/mongo_backup/admin
2021-07-15T13:37:29.670+0900	The --db and --collection flags are deprecated for this use-case; please use --nsInclude instead, i.e. with --nsInclude=${DATABASE}.${COLLECTION}
2021-07-15T13:37:29.670+0900	building a list of collections to restore from /tmp/mongo_backup/admin dir
2021-07-15T13:37:29.670+0900	reading metadata for db.system.version from /tmp/mongo_backup/admin/system.version.metadata.json
2021-07-15T13:37:29.672+0900	finished restoring db.system.version (0 documents, 0 failures)
2021-07-15T13:37:29.672+0900	Failed: db.system.version: error creating collection db.system.version: error running create command: (InvalidNamespace) cannot write to 'db.system.version'
2021-07-15T13:37:29.672+0900	0 document(s) restored successfully. 0 document(s) failed to restore.
  • 아카이브(gzip)로 복구하기
mongorestore --host 127.0.0.1 --port 27017 --gzip --archive=/tmp/mongo_backup/serv-205.gz

 

 

MongoDB의 백업 및 복구 옵션은 다양하며, 클러스터 환경에서의 백업과 복구도 고려해야 합니다. 데이터베이스 운영 환경에 따라 적절한 백업 전략을 설정하고 백업 주기를 관리하는 것이 중요합니다.

 

Reference > MongoDB Package Components > mongodump

https://docs.mongodb.com/database-tools/mongorestore/

https://docs.mongodb.com/v4.2/reference/program/mongodump/

 

728x90