复制数据库#

MongoDB>=4.2#

从MongoDB 4.2版开始,服务器删除不推荐使用的 copydb 指挥部。作为替代方案,用户可以使用 mongodumpmongorestore (与 mongorestore 选项 --nsFrom--nsTo )。

例如,要复制 test 数据库从默认端口27017上运行的本地实例复制到 examples 数据库,您可以执行以下操作:

  1. 使用 mongodump 要将测试数据库转储到归档,请执行以下操作 mongodump-test-db **

    mongodump --archive="mongodump-test-db" --db=test
    
  2. 使用 mongorestore 使用 --nsFrom--nsTo 要从归档中恢复(数据库名称已更改),请执行以下操作:

    mongorestore --archive="mongodump-test-db" --nsFrom='test.*' --nsTo='examples.*'
    

根据需要包括其他选项,例如指定URI或主机、用户名、密码和身份验证数据库。

有关使用以下选项的详细信息 mongodumpmongorestoreCopy 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')

authentication examples .

如果 来源 服务器受密码保护,请使用 copyDatabase function in the mongo shell .

PyMongo 3.0之前的版本包括 copy_database 方法,但它已被删除。