一次生产环境下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 备份与恢复系列三 简单恢复模式下的备份与还原