mongodb备份和恢复全解

  发布日期:   2018-12-20
  最新修改:   2020-05-29
  阅读次数:   219 次

参数解析

参数名 简写 描述 示例
--host -h 数据库所在主机的ip地址 mongodump --host mongodb1.example.net
--port -p 数据库端口号 mongodump --port 37017
--username -u 登录数据库用户名 mongodump --username user
--password -p 数据库登录密码 mongodump --password "pass"
--out -o 指定mongodump将为转储的数据库写入BSON文件的目录。默认情况下,mongodump将输出文件保存在当前工作目录中名为dump的目录中 mongodump --out /opt/backup/mongodump-2011-10-24
--db -d 导出的数据库 不输入则默认全部数据库 mongodump --db test
--archive 要将转储输出到存档文件,不能与--out 选项并用 mongodump --archive=test.20150715.archive --db test
--gzip 版本3.2中的新功能,压缩输出。如果mongodump输出到转储目录,则新功能会压缩各个文件。这些文件的后缀为.gz。 mongodump --gzip --db test
--collection -c 指定要备份的集合。如果未指定集合,则此选项会将指定数据库或实例中的所有集合复制到转储文件。 mongodump --db test --collection collection
--excludeCollection mongodump排除数据库中指定的集合 mongodump --db test --excludeCollection=users --excludeCollection=salaries
-f 导出指字段,以字号分割,-f name,email,age导出name,email,age这三个字段
--query -q 提供JSON文档作为查询,可选择限制mongodump输出中包含的文档。 可以根查询条件导出,-q '{ "_id" : "10001" }' 导出uid为100的数据
queryFile 版本3.2中的新功能。 指定包含JSON文档的文件的路径,该文件作为查询过滤器,用于限制mongodump输出中包含的文档。 --queryFile使您可以创建太大而无法放入终端缓冲区的查询过滤器。
--csv 表示导出的文件格式为csv的,这个比较有用,因为大部分的关系型数据库都是支持csv,在这里有共同点
--upsert 插入或者更新现有数据
--upsertFields 插入或者更新现有数据

一、 mongodump备份数据库

一、 mongodump备份数据库

  • 一般常用的备份命令格式

    mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 
  • 如果想导出所有数据库,可以去掉-d

  • 示例

    mongodump -h 127.0.0.1 --port 27017 -d test -uxxxx -pxxxxx -o home/mongodb/

二、mongorestore还原数据库

  • 1.常用命令格式

    mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
  • 示例

    mongorestore -d test /home/mongodb/test #test这个数据库的备份路径
  • 通过以上两个命令可以实现数据库的备份与还原

  • 文件格式是json和bson的

三、mongoexport导出表,或者表中部分字段

  • 常用命令格式

     mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段
  • 导出整张表示例

    mongoexport -d test -c users -o /home/mongodb/test/users.dat 
  • 导出表中部分字段示例

    mongoexport -d test -c users --csv -f uid,name,sex -o test/users.csv 
  • 根据条件敢出数据示例

     mongoexport -d test -c users -q '{uid:{$gt:1}}' -o test/users.json 

四、mongoimport导入表,或者表中部分字段

1、 还原整表导出的非csv文件
  • 常用命令格式
    mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名

重点说一下--upsert,其他参数上面的命令已有提到,

2、 还原部分字段的导出文件
  • 常用命令格式
    mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名  
3、还原导出的csv文件
  • 常用命令格式 mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名

  • 上面三种情况,还可以有其他排列组合的。

4、还原导出的表数据
  • 示例

    mongoimport -d test -c users --upsert test/users.dat 
5、部分字段的表数据导入
  • 示例
       mongoimport -d test -c users  --upsertFields uid,name,sex  test/users.dat  
6、还原csv文件
  • 示例
      mongoimport -d test -c users --type csv --headerline --file test/users.csv 

五、直接将一个数据库数据导入另外一个数据库

  • 示例:通过| 管道到27017的数据已archive导出并直接导入27018的数据库中

    mongodump --archive --db test --port 27017 | mongorestore --archive --port 27018

   转载规则

《mongodb备份和恢复全解字》GajAngels 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。