itsource

MySQL과 같은 targzip mongo 덤프

mycopycode 2023. 5. 22. 21:02
반응형

MySQL과 같은 targzip mongo 덤프

MySQL 덤프로 할 수 있는 것처럼 mongo 덤프를 대상으로 하는 방법이 있습니까?

예를 들어 mysqdump의 경우 다음과 같은 명령을 작성할 수 있습니다.

mysqldump -u <username> --password=<password> --all-databases | gzip > all-databases.`date +%F`.gz

몽고 덤프에 대해 동일한 방법이 있습니까?

mongo 덤프의 경우 다음 명령을 실행합니다.

mongodump --host localhost --out /backup

그냥 gzip에 파이프로 연결할 수 있는 방법이 있습니까?노력했지만 소용이 없었어요.

아이디어 있어요?

버전 3.2가 도입gzip그리고.archive옵션:

mongodump --db <yourdb> --gzip --archive=/path/to/archive

그런 다음 다음을 사용하여 복원할 수 있습니다.

mongorestore --gzip --archive=/path/to/archive

업데이트(2015년 7월):TOOLS-675는 이제 완료로 표시되어 3.2에서 아카이브 형식으로 덤프할 수 있으며 gzip은 3.2 버전의 옵션 중 하나가 됩니다.mongodump/mongorestore도구. 3.2가 실행되는 대로 관련 문서에 업데이트하겠습니다.

원답(3.0 이하):

출력을 통해 단일 수집으로 이 작업을 수행할 수 있습니다.mongodump로.stdout그런 다음 압축 프로그램(gzip, bzip2)으로 파이핑하지만 데이터만 얻을 뿐(인덱스 정보 없음) 현재로서는 전체 데이터베이스(복수 컬렉션)에 대해 데이터를 얻을 수 없습니다.이 기능에 대한 관련 기능 요청은 업데이트/관찰 목적으로 SERVER-5190입니다.

다음은 다음을 사용하여 가능한 것에 대한 간단한 샘플 실행입니다.bzip2이 예에서는 다음을 수행합니다.

./mongo
MongoDB shell version: 2.6.1
connecting to: test
> db.foo.find()
{ "_id" : ObjectId("53ad8a3eb74b5ae2ff0ec93a"), "a" : 1 }
{ "_id" : ObjectId("53ad8ba445be9c4f7bd018b4"), "a" : 2 }
{ "_id" : ObjectId("53ad8ba645be9c4f7bd018b5"), "a" : 3 }
{ "_id" : ObjectId("53ad8ba845be9c4f7bd018b6"), "a" : 4 }
{ "_id" : ObjectId("53ad8baa45be9c4f7bd018b7"), "a" : 5 }
> 
bye
$ ./mongodump -d test -c foo -o - | bzip2 - > foo.bson.bz2
connected to: 127.0.0.1
$ bunzip2 foo.bson.bz2 
$ ./bsondump foo.bson
{ "_id" : ObjectId( "53ad8a3eb74b5ae2ff0ec93a" ), "a" : 1 }
{ "_id" : ObjectId( "53ad8ba445be9c4f7bd018b4" ), "a" : 2 }
{ "_id" : ObjectId( "53ad8ba645be9c4f7bd018b5" ), "a" : 3 }
{ "_id" : ObjectId( "53ad8ba845be9c4f7bd018b6" ), "a" : 4 }
{ "_id" : ObjectId( "53ad8baa45be9c4f7bd018b7" ), "a" : 5 }
5 objects found

그것을 스트레이트와 비교해 보세요.mongodump(같은 foo.bson을 얻지만 인덱스를 설명하는 추가 foo.bson은 위에 포함되지 않습니다.)

$ ./mongodump -d test -c foo -o .
connected to: 127.0.0.1
2014-06-27T16:24:20.802+0100 DATABASE: test  to     ./test
2014-06-27T16:24:20.802+0100    test.foo to ./test/foo.bson
2014-06-27T16:24:20.802+0100         5 documents
2014-06-27T16:24:20.802+0100    Metadata for test.foo to ./test/foo.metadata.json
$ ./bsondump test/foo.bson 
{ "_id" : ObjectId( "53ad8a3eb74b5ae2ff0ec93a" ), "a" : 1 }
{ "_id" : ObjectId( "53ad8ba445be9c4f7bd018b4" ), "a" : 2 }
{ "_id" : ObjectId( "53ad8ba645be9c4f7bd018b5" ), "a" : 3 }
{ "_id" : ObjectId( "53ad8ba845be9c4f7bd018b6" ), "a" : 4 }
{ "_id" : ObjectId( "53ad8baa45be9c4f7bd018b7" ), "a" : 5 }
5 objects found

Mongodbas 내보내기

mongodump --host <host-ip> --port 27017 --db <database>  --authenticationDatabase admin --username <username> --password <password> --gzip --archive >  dump_`date "+%Y-%m-%d"`.gz

다음으로 가져오기

mongodump --host <host-ip> --port 27017 --db <database>  --authenticationDatabase admin --username <username> --password <password> --gzip --archive=mongodump.gz

MongoDB 복제 세트 클러스터에 대해 URI를 전달하려는 경우

덤프:

mongodump --uri='mongodb://user:pass@primary_host,secondary_host/<db-name>?replicaSet=<replica-name>&authSource=admin' --gzip --archive > dump_`date "+%Y-%m-%d"`.gz

복원:

mongorestore --uri='mongodb://user:pass@primary_host,secondary_host/<db-name>?replicaSet=<replica-name>&authSource=admin' --gzip --archive=<dump-file>.gz

언급URL : https://stackoverflow.com/questions/24439068/tar-gzip-mongo-dump-like-mysql

반응형