一次生产环境下MongoDB备份还原数据

Posted zishengY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一次生产环境下MongoDB备份还原数据相关的知识,希望对你有一定的参考价值。

最近开发一个版本的功能当中用到了MongoDB分页,懒于造数据,于是就研究了下从生产环境上导出数据到本地来进行测试。

研究了一下,发现MongoDB的备份还原和mysql语法还挺类似,下面请看详细介绍。

一、备份数据

因为需要测试数据,所以先要从生产服务器(CentOS 6.5)上备份出一份数据出来,

格式:  mongodump-h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径

示例:

 /opt/mongodb/bin/mongodump -h 127.0.0.1 --port 27017 -u 用户名 -p 密码 -d ad_api_count -o /tmp

(注意Linux下如果密码有特殊字符需要\\转义)

进入到备份出来的数据ad_api_count目录下,可以看到ad_api_count中两个集合的信息

 

二、还原数据库

把生产环境下导出数据库下载到本地的e:\\ee\\ad_api_count下,接下来我们就可以导入数据到本地MongoDB进行测试了

命令格式:mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 文件名的具体路径(后缀格式为bson)

示例:

cd C:\\Program Files\\MongoDB\\Server\\3.4\\bin
mongorestore.exe -h 127.0.0.1 --port 27017 -u 用户名 -p 密码 -d ad_api_count e:\\cust\\ad_api_count\\userAdCount.bson

如上图,我们知道就完成了还原工作

 

三、其他

mongoexport导出表,或导出表中部分字段:

命令格式:mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -q 条件导出 --csv -o 文件名的具体路径(后缀格式可以是.dat或.csv);

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

1.还原整表导出的非csv文件

   命令格式:mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名的具体路径   (--drop当不需要删除源文件可不加)

2.还原部分字段的导出文件

  命令格式:mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名的具体路径 (--drop当不需要删除源文件可不加)

3.还原导出的csv文件(导出数据时如果不加--csv选项,导出的数据就会存在很多双引号,导入就会失败)

  命令格式:mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型(csv) --headerline --upsert --drop 文件名的具体路径  

  注意:如果数据库存在数据,要导入最新的数据,则需要加--upsert选项,会更新数据,否则会报错(提示重复键错误收集)

以上是关于一次生产环境下MongoDB备份还原数据的主要内容,如果未能解决你的问题,请参考以下文章

sql server 备份与恢复系列三 简单恢复模式下的备份与还原

(2.7)备份与还原--在完全恢复模式下事务日志的角色

Oracle数据库从RMAN备份集片段还原指定单个归档日志进行日志挖掘分析

mongodb的备份与还原

详细介绍MySQL中数据的备份与恢复,防止数据丢失

MongoDB 权限备份还原去重