비교적 작고 작은 데이터베이스의 경우 결국 다음 솔루션을 사용했습니다. 크거나 복잡한 데이터베이스에는 적합하지 않지만 제 경우에는 충분합니다. 모든 문서를 json으로 백업 디렉토리에 덤프합니다. 그것은 clunky하지만 pymongo보다 다른 것들에 의존하지 않습니다.
from os.path import join
import pymongo
from bson.json_utils import dumps
def backup_db(backup_db_dir):
client = pymongo.MongoClient(host=<host>, port=<port>)
database = client[<db_name>]
authenticated = database.authenticate(<uname>,<pwd>)
assert authenticated, "Could not authenticate to database!"
collections = database.collection_names()
for i, collection_name in enumerate(collections):
col = getattr(database,collections[i])
collection = col.find()
jsonpath = collection_name + ".json"
jsonpath = join(backup_db_dir, jsonpath)
with open(jsonpath, 'wb') as jsonfile:
jsonfile.write(dumps(collection))
Pymongo 따라서 MongoEngine은'mongod' 프로세스에만 연결됩니다. 그러나 문제는 mongodump/restore 등으로 원격 데이터베이스에 연결할 수 있기 때문에 원격 시스템에서 단순히'mongodump '를 실행하는 것일 수 있습니다.'mondodump'를 실행할 기계에서 실행할 필요가없는 DB를 호스팅하고 있습니다. 이해가 되니? – MFB
Meh. 모든 문서를 추출한 다음 BSON 파일을 만드는 것이 더 쉽습니다. 이 게시물을 올리신 덕분에 – Gx1sptDTDa