2016-08-23 7 views
0

로컬 컴퓨터에서 실행되는 MongoDB 인스턴스 (15GB)가 상당히 적지 만이를 원격 서버로 보내야 내 파트너가 작업 할 수 있습니다. 문제는불안정한 연결을 통해 MongoDB 데이터베이스를 전송하십시오.

  1. 서버는 여유 공간이 30GB의이
  2. 내 지역의 인터넷 연결은 내가 직접 전송 copyDatabase을 시도

매우 불안정했다, 두 가지이지만, 약 2 직선 걸릴 것 며칠이 지나면 연결이 어느 시점에서 거의 실패 할 것이라고 보장합니다. 나는 또한 mongoexportmongodump을 시도했지만 둘 다 ~ 40GB의 파일을 생성합니다. 이는 서버에 맞지 않습니다. 처음부터 40GB를 전송할 때의 어려움을 무시하고 있습니다.

내가 알지 못하는 또 다른 안정적인 방법이 있습니까?

+0

대답이 아니라 선택 사항이므로 데이터베이스를 1GB 미만의 데이터로 분할하여 보낼 수 있습니다.중요한 경우 디스크의 스냅 샷을 만들고 새 디스크에 스냅 샷을 복사하여 파트너에게 전송하십시오. –

+0

@JohnZeng 우리는 데이터를 변경하고 변경 사항을 볼 수 있어야하며 반복적으로 복사 및 삭제할 수 있어야합니다. 전체 DB는 옵션이지만, 사용하고 싶지는 않습니다. –

+0

하지만 분할 아이디어는 나쁘지 않습니다. –

답변

3

mongodump 출력이 데이터보다 훨씬 크기 때문에 WiredTiger 스토리지 엔진에서 MongoDB 3.0 이상을 사용 중이며 데이터가 압축되어 있지만 출력이 mongodump이 아닌 것으로 가정합니다.

MongoDB 3.2에서 mongodumpmongorestore 도구는 이제 압축을 지원합니다 (Archiving and Compression in MongoDB Tools 참조). 압축은 기본적으로 사용되지 않습니다.

  • 사용 mongodump --gzip이 컬렉션의 모든 압축 백업과 dump 디렉토리를 만들 : 나는 좋을 것 설명한대로 사용 사례를 들어

    .

  • 불안정한 인터넷 연결을 통해 (재개 가능) 파일 전송을 위해 rsync --partial SRC .... DEST 또는 유사 항목을 사용하십시오.

    참고 :rsync--exclude으로 무시할 수있는 디렉토리가있을 수 있습니다. 예를 들어 localtest 데이터베이스는 아마도 건너 뛸 수 있습니다. 또는 mongodump --gzip --db dbname을 사용하여 백업 할 데이터베이스를 지정할 수도 있습니다.

  • 파트너는 비슷한 rsync 명령 줄을 사용하여 환경으로 전송하고 mongorestore --gzip /path/to/backup 같은 명령 줄을 사용하여 로컬 MongoDB 인스턴스를 채울 수 있습니다.

  • 지속적으로 덤프를 전송하려는 경우 rsync--checksum 옵션을 유용하게 사용할 수 있습니다. 일반적으로 rsync은 파일 크기와 수정 시간을 빠르게 비교하여 "업데이트 된"파일을 전송합니다. 체크섬에는 더 많은 계산이 필요하지만 수정 시간 외에는 이전 데이터와 동일한 데이터를 가진 컬렉션을 건너 뛸 수 있습니다. 당신이 지속적으로 데이터 변경 사항을 동기화해야하는 경우

은 또한 (클라우드 서비스로 데이터베이스를 이동 나을 수 있습니다 예를 들어. MongoDB를 아틀라스 또는 자신의 MongoDB의 인스턴스와 같은 데이터베이스 서비스로서 제공).

관련 문제