mongodump 사용시 조건을 주어 백업하기

리눅스/MySQL|2019. 6. 18. 09:25
반응형

원격일 경우,

--collection 컬렉션이름 : 이 옵션을 안쓰면 전체 db를 백업하게 됩니다.

 

mongodump --host 대상서버아이피 --port 포트번호 --db db이름 --collection 컬렉션이름 --out 백업시킬경로 --query 쿼리조건

 

 

예)

저희가 저장하고 있는 incident_traffic 컬렉션의 데이터 중

time : 2014-02-18 00:12:41

이렇게 시간 컬럼이 있습니다.

 

백업 서버 : 1.1.1.1

데이터가 실제 있는 서버 : 2.2.2.2

몽고DB의 포트 : 27017

db 이름 : aptsys

 

하루동안의 데이터만 백업시키려면 다음과 같이 합니다

 

mongodump -u userID -p userPW --host 2.2.2.2 --port 27017 --db aptsys --collection incident_traffic --out /home/mongo/backup --query '{time:{"$gte":"2014-02-18 00:00:00" ,"$lte":"2014-02-18 23:59:59"}}'

 

time 필드가 아니고 info 필드 내의 time 필드 (?) 일 경우 이와 같이 사용

> info.time

 

1.1.1.1 서버의 /home/mongo/backup 의 공간에 해당 데이터들이 쌓입니다.

 

주의점 -> 항상 전체 컬렉션에서 해당 쿼리에 맞는 데이터를 쌓기 때문에 오늘 덤프를 뜨든, 내일 덤프를 뜨든 늘 전체 데이터를 full scan 합니다. 항상 전체 데이터에서 퍼센테이지 올라가는거보고 " 왜 쿼리가 안먹혀? " 라고 생각하지 마세요~

 

백업된 dump 파일을 서버로 옮기려면

mongorestore 를 합니다.

 

mongorestore --host 127.0.0.1 --port 27017 /home/mongo/backup/aptsys

 

 

[출처] https://m.blog.naver.com/PostView.nhn?blogId=atoz333&logNo=120207822356&proxyReferer=https%3A%2F%2Fwww.google.com%2F

반응형

댓글()