programing

mongodump가 지정된 일부 컬렉션을 무시합니다.

linuxpc 2023. 5. 16. 22:14
반응형

mongodump가 지정된 일부 컬렉션을 무시합니다.

제품 서버에 mongo 데이터베이스를 백업한 다음 스테이징 서버로 복원하려고 했습니다. 문제가 발생했습니다. DB에 컬렉션이 많습니다. 스테이징 서버에서 복원하지 않을 컬렉션을 검색하려고 합니다.

스테이징 db를 덤프하고 프로덕션 db를 덤프한 다음 --drop 옵션을 사용하여 제품을 스테이징으로 복원하여 이 문제에 접근할 수 있습니다.그리고 db 스테이징에서 지정된 컬렉션을 복원합니다. 음.. 정말 안 좋아요.

덤프 생산 DB

mongodump --host product-server-host --username abcd --password bcda -d db -o pruduct-dump-dir

덤프 스테이징 DB

mongodump --host staging-server-host --username abcd --password bcda -d db -o staging -dump-dir

모든 컬렉션을 복원한 다음 컬렉션을 준비 서버에 복원합니다.

mongorestore --host staging-server-host --username abcd --password bcda --drop pruduct-dump-dir

mongorestore --host staging-server-host --username abcd --password bcda --drop --collection coll pruducting-dump-dir

제가 덤핑할 때 무시 수집과 같은 옵션이 있습니까?어떤 제안이든 감사할 것입니다 :

버전 3.0.0부터 사용 가능

--excludeCollection <collection_name>
--excludeCollectionsWithPrefix <collection_prefix>

1개 이상을 제외하려면 반복

설명서를 확인합니다.

mongodump --db test --excludeCollection=users --excludeCollection=salaries

추가할 수 있습니다.--collection COLLECTION_NAME필요한 컬렉션을 덤프할 수 있습니다.기본적으로 데이터베이스에서 덤프할 컬렉션을 지정하지 않으면 MongoDump는 해당 데이터베이스의 모든 컬렉션을 덤프합니다.

Mongo 3.4 이후, 당신은 이제 다음과 같은 것을 지정할 수 있습니다.--nsExclude <namespace pattern>Mongo 데이터베이스 덤프에서 복원할 때 옵션으로 지정된 네임스페이스를 복원 작업에서 제외합니다.이것은 특히 유용합니다.mongodump작업이 이미 발생했습니다.

공식 설명서는 여기에 있습니다. https://docs.mongodb.com/manual/reference/program/mongorestore/ #http option-nsexclude

와일드카드를 사용하여 여러 컬렉션을 제외할 수 있습니다.

mongorestore --db test --nsExclude 'test.*_tmp'

또는 다중을 지정--nsExclude옵션도 작동합니다.

mongorestore --db test --nsExclude 'test.collection1' --nsExclude 'test.collection2'

저는 몽고브를 백업하는 동안에도 같은 일을 해야 했습니다.파이썬(또는 다른 언어)을 사용하는 경우에도 유사한 접근 방식을 사용할 수 있습니다.mongodump를 수행한 후에는 원하지 않는 컬렉션의 bson 및 metadata.json 파일을 제거하기만 하면 됩니다.

    import os
    EXCLUDE_COLLECTIONS = ['collection_1', 'collection_2']
    db_dump_path = "/Path/to/mongodump"
    db_name = "name_of_db"
    for collection_name in EXCLUDE_COLLECTIONS:
        bson_file_path = os.path.join(db_dump_path, db_name, '{}.bson'.format(collection_name)
        meta_file_path = os.path.join(db_dump_path, db_name, '{}.metadata.json'.format(collection_name)
        if os.path.exists(bson_file_path) and os.path.exists(meta_file_path):
            os.remove(bson_file_path)
            os.remove(meta_file_path)

언급URL : https://stackoverflow.com/questions/15962496/mongodump-ignore-some-specified-collections

반응형