MongoDB备份与恢复

news2024/11/16 20:50:32

MongoDB备份与恢复

文章目录

  • MongoDB备份与恢复
    • 1.备份恢复工具
    • 2.备份工具区别
    • 3.mongoexport导出工具命令
    • 4.导出MongoDB的表
      • 4.1.创建备份的目录
      • 4.2.登录数据库
      • 4.3.查询表和表中数据
      • 4.4.导出数据为json格式
      • 4.5.导出数据为csv格式
    • 5.mongoimport导入工具
      • 5.1.恢复json格式数据
      • 5.2.登录数据库查看恢复情况
      • 5.3.导入csv格式的
      • 5.4查询导入的数据
    • 6.csv格式可以用windows系统实用excel打开
  • 7.整个数据库备份
    • 7.1.mongodump和mongorestore
    • 7.2.命令参数
    • 7.3.备份整个库
    • 7.4.压缩的方式备份整个库
    • 7.5.备份单个数据库
    • 7.6.压缩的方式备份单个库
  • 8.恢复数据库
    • 8.1.删除db库
    • 8.2.使用备份恢复db库
    • 8.3.恢复成功再次使用命令报错

1.备份恢复工具

(1) mongoexport / mongoimport

(2) mongodump / mongorestore

2.备份工具区别

应用场景总结:

1.异构平台迁移 mysql的数据可以迁移到MOngoDB

2.同平台,跨大版本:mongodb2 ----> mongodb 3

mongoexport / mongoimport 可以到出格式为 json csv

日常备份恢复时使用

mongodump / mongorestore

3.mongoexport导出工具命令

mongoexport语法

mongoexport --help  帮助
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-f:指明要导出那些列
-o:指明要导出的文件名
-q:指明导出数据的过滤条件

4.导出MongoDB的表

下面我们来举例导出操作

4.1.创建备份的目录

[root@localhost mongo_clusetr]# mkdir backup

4.2.登录数据库

[root@localhost mongo_clusetr]# mongodb/bin/mongo db:28017

4.3.查询表和表中数据

可以看到test库下的te表示有数据的

dba1:PRIMARY> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB
dba1:PRIMARY> use db
switched to db db
dba1:PRIMARY> use test
switched to db test
dba1:PRIMARY> db
test
dba1:PRIMARY> show tables
te
test
dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("636f63745a73f86992679cef"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("636f63be5a73f86992679cf0"), "name" : "gao", "age" : 11 }

4.4.导出数据为json格式

举例:

可以看到已经可以查到数据了

[root@localhost mongo_clusetr]# mongodb/bin/mongoexport --port 28017 -d test -c te -p backup/te.json

[root@localhost mongo_clusetr]# ll backup/
total 4
-rw-r--r--. 1 root root 138 Nov 23 21:37 log.json

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sTWjfYSP-1669217921495)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123213723320.png)]

4.5.导出数据为csv格式

举例:

-f是指定需要导出那些字段  --type指定格式

[root@localhost mongo_clusetr]# mongodb/bin/mongoexport --port 28017 -d test -c te --type=csv -f name,age -o /opt/mongo_clusetr/backup/log.csv

可以看到已经是查到两条数据了

[root@localhost mongo_clusetr]# ll backup/
total 8
-rw-r--r--. 1 root root  25 Nov 23 21:40 log.csv
-rw-r--r--. 1 root root 138 Nov 23 21:37 log.json

5.mongoimport导入工具

mongoimport --help
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-f:指明要导入那些列

5.1.恢复json格式数据

可以把刚才导出的数据恢复

可以恢复到别的库中查看一下,不删除原来的数据

将导出格式为jsoon的数据恢复到另一个库中
[root@localhost mongo_clusetr]# mongodb/bin/mongoimport --port 28017 -d gao -c te backup/log.json

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p83utLAq-1669217921497)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123215904992.png)]

5.2.登录数据库查看恢复情况

可以看到已经恢复到了gao的库中

dba1:PRIMARY> show dbs  
admin   0.000GB
config  0.000GB
gao     0.000GB
local   0.000GB
test    0.000GB

dba1:PRIMARY> use gao 
switched to db gao
@(shell):1:1

dba1:PRIMARY> db
gao

dba1:PRIMARY> show tables
te

dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("636f63745a73f86992679cef"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("636f63be5a73f86992679cf0"), "name" : "gao", "age" : 11 }
dba1:PRIMARY> 

5.3.导入csv格式的

-c 指定表明 -d 库名 --type=csv格式  --file 路径

[root@localhost mongo_clusetr]# mongodb/bin/mongoimport --port 28017 -d db -c te --type=csv -f name,age --file  /opt/mongo_clusetr/backup/log.csv

5.4查询导入的数据

dba1:PRIMARY> show dbs
admin   0.000GB
config  0.000GB
db      0.000GB
gao     0.000GB
local   0.000GB
test    0.000GB

dba1:PRIMARY> use db
switched to db db

dba1:PRIMARY> show tables
te

dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("637e295dc7f5fcd867772ca5"), "name" : "name", "age" : "age" }
{ "_id" : ObjectId("637e295dc7f5fcd867772ca6"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("637e295dc7f5fcd867772ca7"), "name" : "gao", "age" : 11 }

6.csv格式可以用windows系统实用excel打开

下载到本地即可

[root@localhost mongo_clusetr]# cd backup/
[root@localhost backup]# ls
log.csv  log.json
[root@localhost backup]# sz log.csv 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NlJxPqAt-1669217921498)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123222236854.png)]

7.整个数据库备份

7.1.mongodump和mongorestore

mongodump能够在mongdb运行时进行备份,它的工作原理是对运行的MongoDB做查询,然后将所有查到的文档写入磁盘。

但是存在问题时使用mongodb产生的备份不一定是数据库的实时快照,如果我们在备份时对数据库进行了写入操作,则备份出来的文件可能不完全和 Mongodb 实时数据相等。另外在备份时可能会对其它客户端性能产生不利的影响。

7.2.命令参数

mongodump --help
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-o:指明到要导出的文件名
-q:指明导出数据的过滤条件

7.3.备份整个库

#创建文件目录
[root@localhost mongo_clusetr]# mkdir /data/backup

#备份整个库
[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -o /data/backup/

#查询备份结果
[root@localhost mongo_clusetr]# cd /data/backup/
[root@localhost backup]# ls
admin  db  gao  test

7.4.压缩的方式备份整个库

为了防止备份数据过大,MongoDB是支持备份压缩的

mongodb/bin/mongodump --port 28017 -o /data/backup/ --gzip

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lFc3Ap2O-1669217921499)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123224535045.png)]

7.5.备份单个数据库

和备份全库的命令是差不多的

[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -d db -o /data

7.6.压缩的方式备份单个库

[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -d db -o /data --gzip

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfCEEaFS-1669217921500)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123224905847.png)]

8.恢复数据库

删除数据库实验恢复操作

8.1.删除db库

已经删除db库

ba1:PRIMARY> show dbs
dba1:PRIMARY> use db
dba1:PRIMARY> db.dropDatabase()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hb2eRHv8-1669217921500)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123225314668.png)]

8.2.使用备份恢复db库

[root@localhost mongo_clusetr]# mongodb/bin/mongorestore --port 28017 -d db -o /data/db/

恢复成功
dba1:PRIMARY> show dbs
admin   0.000GB
config  0.000GB
db      0.000GB
gao     0.000GB
local   0.000GB
test    0.000GB

8.3.恢复成功再次使用命令报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eteUqrfO-1669217921501)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123230005393.png)]

也可以使用命令后面加–dorp

删除原有数据再次恢复

不过不建议这么使用恢复

[root@localhost mongo_clusetr]# mongodb/bin/mongorestore --port 28017 -d db   /data/backup/db/ -dorp

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python基础-3-列表

一:简述 列表是由一系列按特定顺序排列的元素组成,可以创建包含字母表中所有字母,数字或家庭成员姓名的列表;也可以将任何东西加入列表,其中的元素之间可以没有任何关系。列表中通常包含了多个元素,因此给…

HTTPS中间人攻击实验

HTTPS中间人攻击实验 一.实验基础 1、HTTPS概述 HTTPS (全称: Hyper Text Transfer Protocol over SecureSocketLayer), 是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。 默认端口:443 SSLspli…

【无人机】基于拓展卡尔曼滤波时序四旋翼无人机状态跟踪附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

SpringBoot+Vue项目实现疫情期间社区出入管理系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

web前端期末大作业——基于Bootstrap响应式汽车经销商4S店官网21页

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

【prometheus上报和使用】

prometheus上报和使用prometheus环境搭建进行上报CountrateirateincreaseGaugehistogram分位线summaryprometheus Prometheus是由SoundCloud开发的开源监控系统,由GO语言编写而成,采用Pull的方式来获取监控信息,并且提供了多维度的数据模型和…

Linux-sed

sed sed是一种几乎包括所有UNIX平台(包括Linux)的轻量级流编辑器。sed主要用来将数据进行选取、替换、删除、新增的命令 sed [选项] ‘[动作]’ 文件名 选项: -n:一般sed命令会把所有数据都输出到屏幕,如果加入此选项…

vue.js毕业设计,基于vue.js前后端分离订座预约系统设计与实现(H5移动项目)

功能介绍 【后台功能】 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有注册会员信息,支持删除 录入资讯:录入资讯标题、内容等信息 管理资讯&#x…

HTTP Only下的XSS攻击

今天继续给大家介绍渗透测试相关知识,本文主要内容是HTTP Only下的XSS攻击。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权…

程序猿成长之路之密码学篇-密码学简介

在阅读本文前需要了解的术语: 授权人/非授权人:授权人指获取了查看数据权限的用户,非授权人则是指未获取到权限的用户。明文/密文:明文指没有加密的数据内容,密文是指加密后的数据内容CIA(密码学中不是美国中情局的意思…

npm 如何更新项目最新依赖包

NPM 是什么? Node 软件包管理器(NPM)提供了各种功能来帮助你安装和维护项目的依赖关系。 由于错误修复、新功能和其他更新,依赖关系可能会随着时间的推移而变得过时。你的项目依赖越多,就越难跟上这些更新。 老旧的软件包会对安全构成威胁&am…

USB-数据传输

一、USB编码-反向不归零编码(NRZI)位填充 规则:数据为0,电平反转,数据为1,电平不翻转;当连续出现6个相同的1穿插一个0,目的是为了防止连续出现多个1导致的同步漂移。 二、USB传输帧 帧是USB传输的时间单位&#xff0…

深入浅出PyTorc——进阶训练技巧

1. 自定义损失函数 1.1 以函数方式定义 手动写出损失的公式并用函数进行存储,方便调用。 def my_loss(output, target):loss torch.mean((output - target)**2)return loss 1.2 以类方式定义 1.2.1 损失函数的继承关系 (1)Loss函数部分继…

POI及EasyExcel

1.谈谈 POI 和 easyExcel 应用场景 1.将用户信息导出为excel表格(导出数据....)2.将Excel表中的信息录入到网站数据库(习题上传....) 开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中&…

详解Spring面试IoC和AOP

Spring IOC 和 AOP 文章目录Spring IOC 和 AOP前言什么是 IoC?**为什么叫控制反转**不用IoC:所有对象开发者自己创建使用IoC:对象不用卡法这创建,而是交给Spring框架完成基于XML和基于注解基于XML:基于注解&#xff1a…

TeeChart Pro for .NET 2022.10.24 Crack

.NNET 的 TeeChart 图表控件提供了一个很好的通用组件套件,可以满足无数的图表需求,也针对重要的垂直领域,例如金融、科学和统计领域。 数据可视化 数十种完全可定制和交互式的图表类型、地图和仪表指示器,以及完整的功能集&#…

大一html5期末大作业 :基于html实现传统文化网页设计题材

Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 国家级非遗 | 非遗文化 | 非遗网页设计 | 非遗保护 | 非遗之旅 | 非遗传承HTML期末大学生网页设计作业 HTML:结构 CSS:样式 在操作方面上运用了html5和…

第八章:堆的讲解与实现

第八章:堆的实现与堆相关的算法一、堆1、什么是堆?2、堆的实现(1)堆的定义(2)接口函数初始化销毁插入删除判断是否为空返回堆顶返回堆中的元素个数打印一、堆 1、什么是堆? 在前面的章节中&am…

机器学习算法交叉验证最频繁犯的6个错误

交叉验证是保证模型有效的方法,同时也是防止模型过拟合的方法。但在有限的数据集中,交叉验证容易出现一些错误使用。 本文将介绍在使用交叉验证中,常见的一些错误情况,希望读者在阅读后可以避免再次犯错。 文章目录技术提升什么是…