MongoDB 데이터베이스 백업 및 복원 방법

MongoDB 데이터베이스 백업 및 복원 방법

Python
MongoDB 데이터베이스 백업 및 복원 방법
Author

gabriel yang

Published

October 5, 2024


MongoDB는 비관계형(NoSQL) 데이터베이스로, 대규모 데이터를 효율적으로 저장하고 관리하는 데 강력한 성능을 자랑합니다. 하지만 중요한 데이터를 다루는 만큼 정기적인 백업(Backup)과 필요시 복원(Restore) 작업이 필수적입니다.

1. MongoDB 백업 방법

MongoDB에서 데이터베이스를 백업하는 방법은 여러 가지가 있지만, 기본적으로 많이 사용되는 방법은 mongodump를 이용한 방법입니다. 이 도구는 MongoDB 데이터를 BSON(Binary JSON) 형식으로 내보내며, 이를 통해 데이터베이스의 특정 컬렉션 또는 전체 데이터베이스를 백업할 수 있습니다.

1) mongodump를 사용한 백업

mongodump는 MongoDB의 기본 제공 유틸리티로, 손쉽게 데이터베이스의 백업을 생성할 수 있습니다. 기본적인 사용법은 다음과 같습니다.

1-1) 전체 데이터베이스 백업

MongoDB 인스턴스에서 실행 중인 모든 데이터베이스를 백업하려면, 다음 명령어를 사용합니다.

mongodump --uri "mongodb://localhost:27017"

위 명령어는 로컬 MongoDB 서버의 모든 데이터베이스를 dump/라는 디렉토리로 백업합니다.

1-2) 특정 데이터베이스 백업

특정 데이터베이스만 백업하려면 --db 옵션을 사용하여 백업할 데이터베이스를 지정할 수 있습니다.

mongodump --uri "mongodb://localhost:27017" --db mydatabase

이 명령어는 mydatabase 데이터베이스만 백업합니다.

1-3) 특정 컬렉션 백업

데이터베이스 내의 특정 컬렉션만 백업하고 싶다면, --collection 옵션을 사용할 수 있습니다.

mongodump --uri "mongodb://localhost:27017" --db mydatabase --collection mycollection

이 명령어는 mydatabasemycollection 컬렉션만 백업합니다.

1-4) 백업 경로 지정

백업 파일을 특정 경로에 저장하려면 --out 옵션을 사용합니다. 다음 명령어는 backup/ 디렉토리에 백업 데이터를 저장합니다.

mongodump --uri "mongodb://localhost:27017" --out /path/to/backup

이처럼 mongodump는 직관적인 명령어로 데이터를 백업할 수 있는 유용한 도구입니다.

2) 파일 기반 백업

MongoDB는 데이터를 WiredTiger 스토리지 엔진을 사용하여 관리합니다. 이 엔진은 데이터베이스 파일을 dbPath 경로에 저장하므로, MongoDB 서버가 중단된 상태에서 해당 경로의 데이터를 백업할 수 있습니다.

  1. MongoDB 서버를 중단합니다:

    sudo systemctl stop mongod
  2. dbPath 디렉토리의 파일을 복사하여 백업합니다:

    cp -r /var/lib/mongodb /path/to/backup
  3. MongoDB 서버를 다시 시작합니다:

    sudo systemctl start mongod

이 방법은 서버를 중단한 상태에서 수행해야 하므로, 실시간 백업이 필요한 환경에서는 권장되지 않습니다.

2. MongoDB 데이터베이스 복원 방법

MongoDB에서 백업한 데이터를 복원할 때는 주로 mongorestore 명령어를 사용합니다. 이 도구는 mongodump로 생성한 BSON 형식의 백업 파일을 MongoDB로 다시 불러옵니다.

1) mongorestore를 사용한 복원

1-1) 전체 데이터베이스 복원

전체 데이터베이스를 복원하려면, 백업 파일이 있는 경로를 지정하여 복원할 수 있습니다.

mongorestore --uri "mongodb://localhost:27017" /path/to/backup

이 명령어는 /path/to/backup 경로에 있는 모든 데이터베이스 백업을 MongoDB 서버에 복원합니다.

1-2) 특정 데이터베이스 복원

특정 데이터베이스만 복원하려면 --db 옵션을 사용하여 복원할 데이터베이스를 지정합니다.

mongorestore --uri "mongodb://localhost:27017" --db mydatabase /path/to/backup/mydatabase

이 명령어는 mydatabase 데이터베이스의 백업을 복원합니다.

1-3) 특정 컬렉션 복원

특정 컬렉션만 복원할 수 있으며, --collection 옵션을 사용합니다.

mongorestore --uri "mongodb://localhost:27017" --db mydatabase --collection mycollection /path/to/backup/mydatabase/mycollection.bson

이 명령어는 mydatabasemycollection 컬렉션만 복원합니다.

1-4) 덮어쓰기 복원

기존 데이터베이스 또는 컬렉션을 덮어쓰려면 --drop 옵션을 사용합니다. 이 옵션은 복원하기 전에 기존 데이터를 삭제합니다.

mongorestore --uri "mongodb://localhost:27017" --db mydatabase --drop /path/to/backup/mydatabase

이 명령어는 mydatabase를 복원하기 전에 기존 데이터베이스를 삭제하고, 백업 데이터를 다시 복원합니다.

2) 파일 기반 복원

파일 기반 백업을 복원하려면 MongoDB 서버를 중단한 후, 백업 파일을 dbPath로 복사한 다음 다시 서버를 시작하면 됩니다.

  1. MongoDB 서버를 중단합니다:

    sudo systemctl stop mongod
  2. 백업된 파일을 원래 경로로 복사합니다:

    cp -r /path/to/backup /var/lib/mongodb
  3. MongoDB 서버를 다시 시작합니다:

    sudo systemctl start mongod

파일 기반 복원은 매우 간단하지만, 실시간 데이터 변경 사항을 반영하지 못하므로 주의가 필요합니다.

3. 자동화된 백업 및 복원

수동으로 백업 및 복원 작업을 수행할 수 있지만, 일정 주기로 자동화하는 것이 중요합니다. 이를 위해 cron 작업을 설정하거나, MongoDB Atlas와 같은 관리형 클라우드 서비스를 이용해 자동 백업을 설정할 수 있습니다.

1) cron을 사용한 백업 자동화

다음은 mongodump를 매일 자정에 실행하도록 cron 작업을 설정하는 예시입니다.

  1. crontab 편집:

    crontab -e
  2. 다음 라인을 추가하여 매일 자정에 백업을 수행합니다:

    0 0 * * * mongodump --uri "mongodb://localhost:27017" --out /path/to/backup/daily_backup

2) MongoDB Atlas의 백업 기능

MongoDB Atlas는 자동 백업 및 복원 기능을 제공하는 클라우드 기반 서비스입니다. Atlas는 주기적인 백업과 간편한 복원 기능을 제공하여 관리 부담을 줄여줍니다. MongoDB Atlas의 백업 기능은 기본적으로 클러스터를 구성할 때 함께 제공되며, 대시보드를 통해 간편하게 설정할 수 있습니다.

결론

MongoDB의 데이터 백업과 복원은 데이터 무결성을 유지하고 시스템 장애에 대비하는 중요한 과정입니다. mongodumpmongorestore 도구를 사용하면 간단하고 효율적으로 데이터를 백업하고 복원할 수 있으며, 추가적으로 파일 기반 백업이나 클라우드 서비스를 통한 자동화 기능도 활용할 수 있습니다. 백업 전략을 적절하게 구성하여 데이터를 안전하게 보호하고, 필요시 빠르게 복구할 수 있는 환경을 마련하는 것이 중요합니다.