MongoDB 备份和还原

  • 创建备份

    在本章中,我们将看到如何在MongoDB中创建备份。
  • 转储MongoDB数据

    要在MongoDB中创建数据库备份,应使用mongodump命令。此命令会将服务器的全部数据转储到转储目录中。您可以通过许多选项来限制数据量或创建远程服务器的备份。
    语法
    mongodump命令的基本语法如下-
    
    >mongodump
    
    启动您的mongod服务器。假设您的mongod服务器在本地主机和端口27017上运行,请打开命令提示符并转到mongodb实例的bin目录,然后键入命令mongodump。
    
    >mongodump
    
    该命令将连接到运行于127.0.0.1和端口27017的服务器,并将服务器的所有数据返回到当前目录/dump/。以下是命令的输出-
    
    2020-08-31T14:05:46.280+0800    writing admin.system.version to dump\admin\system.version.bson
    2020-08-31T14:05:46.499+0800    done dumping admin.system.version (1 document)
    2020-08-31T14:05:46.500+0800    writing my_db.people to dump\my_db\people.bson
    2020-08-31T14:05:46.505+0800    done dumping my_db.people (2 documents)
    
    以下是可与mongodump命令一起使用的可用选项的列表。
    语法 描述 例子
    mongodump /host HOST_NAME /port PORT_NUMBER 该命令将备份指定mongod实例的所有数据库。 mongodump /host cainiaoya.com /port 27017
    mongodump /db:DB_NAME --out BACKUP_DIRECTORY 此命令将仅备份指定路径上的指定数据库。 mongodump /db:mydb /out /data/backup/
    mongodump /collection:COLLECTION_NAME /db:DB_NAME 此命令将仅备份指定数据库的指定集合。 mongodump /collection:mycol /db:test
  • 恢复数据

    要还原备份数据,请使用MongoDB的mongorestore命令。此命令从备份目录还原所有数据。
    mongorestore命令的基本语法是-
    
    >mongorestore
    
    以下是命令的输出-
    
    2020-08-31T14:33:32.999+0800    using default 'dump' directory  # 默认使用当前文件夹dump下面的数据来进行还原
    2020-08-31T14:33:33.058+0800    preparing collections to restore from
    2020-08-31T14:33:33.061+0800    restoring to existing collection my_db.people without dropping
    2020-08-31T14:33:33.061+0800    reading metadata for my_db.people from dump\my_db\people.metadata.json
    2020-08-31T14:33:33.062+0800    restoring my_db.people from dump\my_db\people.bson
    2020-08-31T14:33:33.073+0800    continuing through error: E11000 duplicate key error collection: my_db.people index: _id_ dup key: { _id: ObjectId('5f437edfd1b84f3c344ea558') }
    2020-08-31T14:33:33.073+0800    continuing through error: E11000 duplicate key error collection: my_db.people index: _id_ dup key: { _id: ObjectId('5f438082d1b84f3c344ea559') }
    2020-08-31T14:33:33.074+0800    no indexes to restore
    2020-08-31T14:33:33.074+0800    finished restoring my_db.people (0 documents, 2 failures)
    2020-08-31T14:33:33.074+0800    0 document(s) restored successfully. 2 document(s) failed to restore.
    
    提示:使用命令的 --help 选项来查看使用帮助。