目录

mongodb备份和恢复全解


参数解析

参数名 简写 描述 示例
–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