MongoDB 데이터베이스 백업 및 복원 방법
MongoDB 데이터베이스 백업 및 복원 방법
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
이 명령어는 mydatabase
의 mycollection
컬렉션만 백업합니다.
1-4) 백업 경로 지정
백업 파일을 특정 경로에 저장하려면 --out
옵션을 사용합니다. 다음 명령어는 backup/
디렉토리에 백업 데이터를 저장합니다.
mongodump --uri "mongodb://localhost:27017" --out /path/to/backup
이처럼 mongodump
는 직관적인 명령어로 데이터를 백업할 수 있는 유용한 도구입니다.
2) 파일 기반 백업
MongoDB는 데이터를 WiredTiger 스토리지 엔진을 사용하여 관리합니다. 이 엔진은 데이터베이스 파일을 dbPath
경로에 저장하므로, MongoDB 서버가 중단된 상태에서 해당 경로의 데이터를 백업할 수 있습니다.
MongoDB 서버를 중단합니다:
sudo systemctl stop mongod
dbPath
디렉토리의 파일을 복사하여 백업합니다:cp -r /var/lib/mongodb /path/to/backup
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
이 명령어는 mydatabase
의 mycollection
컬렉션만 복원합니다.
1-4) 덮어쓰기 복원
기존 데이터베이스 또는 컬렉션을 덮어쓰려면 --drop
옵션을 사용합니다. 이 옵션은 복원하기 전에 기존 데이터를 삭제합니다.
mongorestore --uri "mongodb://localhost:27017" --db mydatabase --drop /path/to/backup/mydatabase
이 명령어는 mydatabase
를 복원하기 전에 기존 데이터베이스를 삭제하고, 백업 데이터를 다시 복원합니다.
2) 파일 기반 복원
파일 기반 백업을 복원하려면 MongoDB 서버를 중단한 후, 백업 파일을 dbPath
로 복사한 다음 다시 서버를 시작하면 됩니다.
MongoDB 서버를 중단합니다:
sudo systemctl stop mongod
백업된 파일을 원래 경로로 복사합니다:
cp -r /path/to/backup /var/lib/mongodb
MongoDB 서버를 다시 시작합니다:
sudo systemctl start mongod
파일 기반 복원은 매우 간단하지만, 실시간 데이터 변경 사항을 반영하지 못하므로 주의가 필요합니다.
3. 자동화된 백업 및 복원
수동으로 백업 및 복원 작업을 수행할 수 있지만, 일정 주기로 자동화하는 것이 중요합니다. 이를 위해 cron 작업을 설정하거나, MongoDB Atlas와 같은 관리형 클라우드 서비스를 이용해 자동 백업을 설정할 수 있습니다.
1) cron을 사용한 백업 자동화
다음은 mongodump
를 매일 자정에 실행하도록 cron
작업을 설정하는 예시입니다.
crontab
편집:crontab -e
다음 라인을 추가하여 매일 자정에 백업을 수행합니다:
0 0 * * * mongodump --uri "mongodb://localhost:27017" --out /path/to/backup/daily_backup
2) MongoDB Atlas의 백업 기능
MongoDB Atlas는 자동 백업 및 복원 기능을 제공하는 클라우드 기반 서비스입니다. Atlas는 주기적인 백업과 간편한 복원 기능을 제공하여 관리 부담을 줄여줍니다. MongoDB Atlas의 백업 기능은 기본적으로 클러스터를 구성할 때 함께 제공되며, 대시보드를 통해 간편하게 설정할 수 있습니다.
결론
MongoDB의 데이터 백업과 복원은 데이터 무결성을 유지하고 시스템 장애에 대비하는 중요한 과정입니다. mongodump
와 mongorestore
도구를 사용하면 간단하고 효율적으로 데이터를 백업하고 복원할 수 있으며, 추가적으로 파일 기반 백업이나 클라우드 서비스를 통한 자동화 기능도 활용할 수 있습니다. 백업 전략을 적절하게 구성하여 데이터를 안전하게 보호하고, 필요시 빠르게 복구할 수 있는 환경을 마련하는 것이 중요합니다.