010.MongoDB备份恢复
一 MongoDB备份
1.1 备份概述
- 文件快照方式
- 复制数据文件方式
- 使用mongodump和mongorestore方式
1.2 文件快照方式
1.3 复制数据文件方式
> db.fsyncLock() #锁定,将阻塞写入操作,并将脏数据刷新到磁盘上,确保数据一致。
# cp -R /data/db/* /backup #拷贝数据文件到备份目录下
> db.fsyncUnlock() #文件复制完成后,对数据库进行解锁,允许写操作
# cp -R /backup/* /data/db/
# mongod -f mongod.conf
1.4 mongodump数据备份
> mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径
|
参数
|
全称
|
默认值
|
参考释义
|
|
--help
|
查看mongodump命令的使用帮助
|
||
|
--version
|
返回mongodump的版本号
|
||
|
-h
|
--host <hostname><:port>
|
localhost:27017
|
指定mongod要连接的主机名及端口号
|
|
-u
|
--username <username>
|
指定用于向开启认证的MongoDB数据库的用户名,与--password和--authenticationDatabase结合使用。
|
|
|
-p
|
--password <password>
|
指定用于向使用认证的MongoDB数据库的密码,与--username和 --authenticationDatabase选项结合使用。
|
|
|
-d
|
--db <database>
|
指定要备份的数据库。如果不指定,mongodump会将此实例中的所有数据库备份。
|
|
|
-c
|
--collection <collection>
|
指定要备份的集合。如果不指定,则会将指定数据库或实例中的所有集合备份。
|
|
|
--gzip
|
压缩输出,如果mongodump指定导出到目录,则该选项会将每个文件都压缩,并添加.gz后缀;
如果mongodump指定导出到文档或标准输出流,则该选项会压缩到文档或输出流中。
|
||
|
-o
|
--out <path>
|
指定导出数据的目录路径,如不指定,则mongodump默认将文件输出到dump所在的工作目录中。该选项不能和--archive一起使用
|
1.5 mongorestore数据恢复
> mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 <path> --dir 文件存在路径
|
参数
|
全称
|
默认值
|
参考释义
|
|
--help
|
查看mongorestore命令的使用帮助
|
||
|
--version
|
返回mongorestore的版本号
|
||
|
-h
|
--host <hostname><:port>
|
localhost:27017
|
指定mongod要连接的主机名及端口号
|
|
-u
|
--username <username>
|
指定用于向开启认证的MongoDB数据库的用户名,与--password和--authenticationDatabase结合使用。
|
|
|
-p
|
--password <password>
|
指定用于向使用认证的MongoDB数据库的密码,与--username和 --authenticationDatabase选项结合使用。
|
|
|
-d
|
--db <database>
|
指定需要恢复的数据库实例。可以和备份时的数据库名称不一样。
|
|
|
-c
|
--collection <collection>
|
指定要备份的集合。如果不指定,则会将指定数据库或实例中的所有集合备份。
|
|
|
<path>
|
mongorestore 最后的一个参数,设置备份数据实例所在位置。
|
||
|
--dir <path>
|
指定备份数据所在的目录路径。
|
||
|
--drop
|
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,备份后至恢复操作中间时间段添加修改的数据都会被删除,慎用!
|
二 mongodump备份实例
2.1 模拟插入数据
[root@client ~]# mongo --host 172.24.8.71 -u admin -p admin
> use admin
> db.grantRolesToUser( "admin",[{ role: "dbOwner",db:"mydb" }])
> db.grantRolesToUser( "admin",[{ role: "restore",db:"admin" }])
> db.grantRolesToUser( "admin",[{ role: "backup",db:"admin" }])
> use mydb
> for(i=1;i<=50000;i++){db.user.insert({"id":i,"name":"jack"+i})}
2.2 备份所有数据
[root@client ~]# mongodump --host 172.24.8.71 -u admin -p admin -o allbackup/
2.3 备份指定数据
[root@client ~]# mongodump --host 172.24.8.71 -d mydb -u admin -p admin -o mydbbackup/ --authenticationDatabase admin
2.4 备份指定集合
[root@client ~]# mongodump --host 172.24.8.71 -d mydb -c user -u admin -p admin -o usercobackup/ --authenticationDatabase admin
三 mongorestore还原实例
3.1 恢复所有数据库
[root@client ~]# mongorestore --host 172.24.8.71 -u admin -p admin --dir allbackup/
3.2 恢复指定数据
[root@client ~]# mongorestore --host 172.24.8.71 -d mydb -u admin -p admin --dir mydbbackup/mydb/ --authenticationDatabase admin
3.3 恢复指定集合
[root@client ~]# mongorestore --host 172.24.8.71 -d mydb -c user -u admin -p admin --dir usercobackup/mydb/user.bson --authenticationDatabase admin
四 mongoexport导出
4.1 mongoexport导出
|
参数
|
全称
|
默认值
|
参考释义
|
|
--help
|
查看mongoexport命令的使用帮助
|
||
|
--version
|
返回mongoexport的版本号
|
||
|
-h
|
--host <hostname><:port>
|
localhost:27017
|
指定mongod要连接的主机名及端口号
|
|
-u
|
--username <username>
|
指定用于向开启认证的MongoDB数据库的用户名,与--password和--authenticationDatabase结合使用。
|
|
|
-p
|
--password <password>
|
指定用于向使用认证的MongoDB数据库的密码,与--username和 --authenticationDatabase选项结合使用。
|
|
|
-d
|
--db <database>
|
指定需要导出的数据库实例。
|
|
|
-c
|
--collection <collection>
|
指定要导出的集合。
|
|
|
-f
|
--fields <field1[,field2]>
|
指定导出时只导出一个或多个字段,导出多个时,需要使用逗号分隔;
|
|
|
-q
|
--query <JSON>
|
|
提供查询文档作为导出数据源
|
|
--type<string>
|
json
|
指定要导出的文件类型,可选值:json,csv
|
|
|
-o
|
--out <file>
|
|
指定要导出的文件路径(含文件名),如果不指定,则会导出为标准输出(例如stdout)
|
4.2 导出指定数据库集合
[root@client ~]# mongoexport --host 172.24.8.71 -d mydb -c user -u admin -p admin -o allexport/myuser.json --authenticationDatabase admin
五 mongoimport导入
5.1 mongoimport导出
|
参数
|
全称
|
可选值
|
参考释义
|
|
--help
|
查看mongoimport命令的使用帮助
|
||
|
--version
|
返回mongoimport的版本号
|
||
|
-h
|
--host <hostname><:port>
|
localhost:27017(默认值)
|
指定mongod要连接的主机名及端口号
|
|
-u
|
--username <username>
|
指定用于向开启认证的MongoDB数据库的用户名,与--password和--authenticationDatabase结合使用。
|
|
|
-p
|
--password <password>
|
指定用于向使用认证的MongoDB数据库的密码,与--username和 --authenticationDatabase选项结合使用。
|
|
|
-d
|
--db <database>
|
指定需要导入的数据库实例。
|
|
|
-c
|
--collection <collection>
|
指定要导入的集合。
|
|
|
--file <path>
|
指定导入数据所在的目录路径。
|
||
|
--drop
|
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用!
|
||
|
--headerline
|
|
使用第一行作为字段名称
|
|
|
--ignoreBlanks
|
|
忽略要导入文件中的空字段,如果不指定该参数,则默认会读取空字段并创建
|
|
|
--type <json|csv|tsv>
|
json(默认值),csv,tsv
|
要导入的文件类型,另外支持tsv
|
|
|
--mode <insert|upsert|merge>
|
insert(插入),
upsert(替换数据库中的文档),
merge(合并)
|
指定导入过程中,如何应对数据库文档与导入文件中的文档匹配
(默认会使用_id字段对比)的情况
|
5.2 导入指定数据库集合
[root@client ~]# mongoimport --host 172.24.8.71 -d mydb -c user -u admin -p admin --file allexport/myuser.json --authenticationDatabase admin
六 复制集和分片备份恢复
七 其他备份方式
7.1 脚本备份
#!/bin/sh
DUMP=mongodump
OUT_DIR=/data/backup/mongod/tmp // 备份文件临时目录
TAR_DIR=/data/backup/mongod // 备份文件正式目录
DATE=`date +%Y_%m_%d_%H_%M_%S` // 备份文件将以备份时间保存
DB_USER=<USER> // 数据库操作员
DB_PASS=<PASSWORD> // 数据库操作员密码
DAYS=14 // 保留最新14天的备份
TAR_BAK="mongod_bak_$DATE.tar.gz" // 备份文件命名格式
cd $OUT_DIR // 创建文件夹
rm -rf $OUT_DIR/* // 清空临时目录
mkdir -p $OUT_DIR/$DATE // 创建本次备份文件夹
$DUMP -u $DB_USER -p $DB_PASS -o $OUT_DIR/$DATE // 执行备份命令
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE // 将备份文件打包放入正式目录
find $TAR_DIR/ -mtime +$DAYS -delete // 删除14天前的旧备份
chmod +x ~/crontab/mongod_bak.sh
vi /etc/crontab
0 2 * * * root ~/crontab/mongod_bak.sh
010.MongoDB备份恢复的更多相关文章
- MongoDB 备份恢复
备份: mongodump --host -u admin -p -o /tmp/alldb/ // 备份所有的库 mongodump --host -u admin -p -d mydb -o /t ...
- MongoDB备份恢复与导出导入
说明:本文所有操作均在win7下的MongoDB3.4.4版本中进行. 一.备份与恢复 1. 备份: mongodump -h IP --port 端口 -u 用户名 -p 密码 -d数据库 -o 文 ...
- mongodb备份恢复,数据导入导出
数据导出 mongoexport 假设库里有一张apachelog表,里面有2 条记录,我们要将它导出 /test/mongodb/bin/mongo use wxdata switched to d ...
- mongodb备份恢复
注意:在备份文件存放目录的选择上有这样一个条件,文件存放目录不管有多深,都只能有它一个文件:(即除了备份文件之外只能存在文件夹,这个条件约束其整个目录树) 数据备份 : /mongodump --ho ...
- mongodb集群配置及备份恢复
Mongodb安装: 编辑/etc/yum.repos.d/mongodb.repo,添加以下: [MongoDB] name=MongoDB Repository baseurl=https://r ...
- mongodb 备份
本篇文章来自于阿里云技术专家郑涔(明俨)在2018年<Redis.MongoDB.HBase大咖直播大讲堂>技术直播峰会中的分享,该分享整体由四个部分构成: 1.MongoDB备份恢复 2 ...
- mongodb 的备份恢复导入与导出
导入导出 use hndb; db.s.save({name:'李四',age:18,score:80,address:'郑州'}); db.s.save({name:'李三',age:8,score ...
- MongoDB 备份(mongodump)恢复(mongorerstore) 导出 (Mongoexport) 导入( Mongoimport)
MongoDB 备份(mongodump) 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的 ...
- MongoDB学习(三)数据导入导出及备份恢复
这几天想着公司要用MongoDB,自然就要用到数据导入导出,就自己学习了一下. 在Mongo学习(二)中就讲到了在bin目录下有一些工具,本篇就是使用这些工具进行数据的导入导出及备份恢复. 注意:以下 ...
随机推荐
- js的动态表格的增删改查思路
1. 首先我们要知道,动态添加,肯定不是 在页面上写死得,而是通过js调用循环放入到页面上的,我们在写动态表格的时候不要先着急写,我们第一步要做的就是构思,要把自己的逻辑先弄清楚,不然的话,前面是好写 ...
- 【译】如何使用docker-compose安装anchore
如何使用docker-compose安装anchore,本篇译自Install with Docker Compose. Preface 在本节中,您将学习如何启动和运行独立的Anchore引擎安装, ...
- C# Newtonsoft.Json JsonSerializerSettings配置
JsonSerializerSettings常用配置整理 1.忽略某些属性 MemberSerialization.OptIn 默认情况下,所有的成员不会被序列化,类中的成员只有标有特性JsonPro ...
- Zabbix-(二) 使用docker部署
Zabbix-(二)使用docker部署 一.前言 前文记录了在服务器上搭建zabbix平台,本文记录使用docker部署zabbix 4.4 准备 Centos7.6 虚拟机,并安装了docker ...
- (八十一)c#Winform自定义控件-时间轴-HZHControls
官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...
- SSM框架之SpringMVC(4)返回值类型及响应数据类型
SpringMVC(4)返回值类型及响应数据类型 1. 返回值分类 1.1. 返回字符串 Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址. @RequestM ...
- 关于字符串的格式化----format与%
格式化字符串一般有两种方法 1.%(d整数,s字符,f浮点数) 2.format 用处极为广泛且限制不多 注意:第一种对于数组的传递会报TypeError,所以必须传递数组 a = (1, 2, 3) ...
- Oracle 分页 ROWNUM 两种分页方法和ROWID用法
一 原因一 oracle默认为每个表生成rowmun,rowid字段,这些字段我们称之为伪列 测试表 CREATE TABLE A ( AID NUMBER() primary key, ANAME ...
- java 坐标系运算 判断一个地理坐标是否在电子围栏 圆、矩形、多边形区域内
转载自:https://blog.csdn.net/Deepak192/article/details/79402694 测试没问题,我用的是原始坐标:要注意的是坐标转换问题,要看当前是属于什么坐标系 ...
- 【bzoj4555】[Tjoi2016&Heoi2016]求和(NTT+第二类斯特林数)
传送门 题意: 求 \[ f(n)=\sum_{i=0}^n\sum_{j=0}^i\begin{Bmatrix} i \\ j \end{Bmatrix}2^jj! \] 思路: 直接将第二类斯特林 ...