复制数据库#
MongoDB>=4.2#
从MongoDB 4.2版开始,服务器删除不推荐使用的 copydb
指挥部。作为替代方案,用户可以使用 mongodump
和 mongorestore
(与 mongorestore
选项 --nsFrom
和 --nsTo
)。
例如,要复制 test
数据库从默认端口27017上运行的本地实例复制到 examples
数据库,您可以执行以下操作:
使用
mongodump
要将测试数据库转储到归档,请执行以下操作mongodump-test-db
**mongodump --archive="mongodump-test-db" --db=test
使用
mongorestore
使用--nsFrom
和--nsTo
要从归档中恢复(数据库名称已更改),请执行以下操作:mongorestore --archive="mongodump-test-db" --nsFrom='test.*' --nsTo='examples.*'
根据需要包括其他选项,例如指定URI或主机、用户名、密码和身份验证数据库。
有关使用以下选项的详细信息 mongodump
和 mongorestore
见 Copy a Database 在官方中的例子 mongodump
文件。
MongoDB<=4.0#
使用MongoDB<=4.0时,可以使用过时的 copydb
命令来复制数据库。在单个数据库中复制数据库的步骤 mongod
进程,或两者之间 mongod
服务器,连接到目标 mongod
并使用 command()
方法:
>>> from pymongo import MongoClient
>>> client = MongoClient('target.example.com')
>>> client.admin.command('copydb',
fromdb='source_db_name',
todb='target_db_name')
要从不受密码保护的其他mongod服务器进行复制,请执行以下操作:
>>> client.admin.command('copydb',
fromdb='source_db_name',
todb='target_db_name',
fromhost='source.example.com')
如果目标服务器受密码保护,请通过“管理”数据库的身份验证:
>>> client = MongoClient('target.example.com',
... username='administrator',
... password='pwd')
>>> client.admin.command('copydb',
fromdb='source_db_name',
todb='target_db_name',
fromhost='source.example.com')
如果 来源 服务器受密码保护,请使用 copyDatabase function in the mongo shell .
PyMongo 3.0之前的版本包括 copy_database
方法,但它已被删除。