반응형
MongoDB 작업 중, 신중하지 못했던 데이터 작업으로 컬렉션의 모든 데이터를 Delete 함
따로 백업을 해놓지 않은 데이터라 복구할 수 없었음
데이터 작업에 신중할 필요가 있지만, 무엇보다 안전하게 하기 위해 백업 전략이 필요
mongodump로 백업하기
mongodump는 MongoDB 데이터를 BSON(Binary JSON) 포맷으로 덤프하는 툴
전체 데이터베이스 백업 (dump)
mongodump --uri="mongodb://localhost:27017" --out=/backup/mongo_$(date +%F) #저장경로 - 오늘날짜
특정 데이터베이스만 백업
mongodump --db=mydb --out=/backup/mongo_$(date +%F)
mongorestore로 복원하기
mongodump로 백업한 BSON 파일을 다시 MongoDB에 삽입
전체 복원
mongorestore /backup/mongo_2025-00-00/
특정 DB만 복원
mongorestore --db=mongoabc_restored /backup/mongo_2025-04-25/mongoabc
자동 백업 스크립트 예시
mongodump로 백업한 BSON 파일을 다시 MongoDB에 삽입
전체 복원
BACKUP_DIR="/var/backups/mongodb"
DATE=$(date +%F)
DB_NAME="aabbcc"
mkdir -p "$BACKUP_DIR"
mongodump --db=$DB_NAME --out="$BACKUP_DIR/mongo_${DATE}"
# 7일 지난 백업 삭제
find "$BACKUP_DIR" -type d -name "mongo_*" -mtime +7 -exec rm -rf {} \;
위 스크립트를 /usr/local/bin/mongo_backup.sh 로 저장하고, cron에 등록
crontab -e
0 3 * * * /usr/local/bin/mongo_backup.sh
# 이 내용을 추가하면 매일 새벽 3시 0분에 이 스크립트 실행하라는 뜻
crontab -l #등록된 작업 확인
백업 파일은 user나 개인정보가 있을 수 있는 경우가 있어서 권한은 700 root:root로 하는 것이 안전함
반응형
'Database > MongoDB' 카테고리의 다른 글
[MongoDB] HTTP, gRPC ObjectId 타입 인식 문제 (0) | 2025.01.08 |
---|---|
[MongoDB] MongoDB ReplicaSet 기본 구성 (0) | 2024.09.11 |
[MongoDB] 기본 명령어 CRUD 비교,논리 연산자 (4) | 2024.07.25 |