数据库应用:MongoDB 数据备份与恢复

目录

一、实验

1.MongoDB 数据库备份与恢复

2.MongoDB 数据表备份与恢复

二、问题

1.MongoDB有哪些命令行工具实现数据备份与恢复


一、实验

1.MongoDB 数据库备份与恢复

(1)查看版本

root@node1:~# mongo --version

(2)准备测试数据,mongoDB终端下进行以下操作,插入200000条数据

use demo
fotmatnumber = (start, end)=>{
    num = Math.round(Math.random() * (end-start)) + start
    if(num<10){
        return "0"+num;
    }else{
        return num;
    }
}

rand_title = (i)=>{
    num = Math.round( Math.random() * 10 );
    num1 = Math.round( Math.random() * 10 );
    return [
        "赠送礼品-"+num,
        "购物狂欢-"+num,
        "随便买买-"+num,
        "愉快购物-"+num,
        "赠送礼物-"+num,
        "商品购买-"+num,
        "买多送多-"+num,
        "买年货-"+num,
        "买买买买-"+num,
        "充值会员-"+num
    ][num1];
}

for(var i=0; i<200000; i++){  
    db.orders.insert({
        "onumber": ( "0000000000000000" + i ).substr( String(i).length ),  
        "date": "20"+fotmatnumber(0,21)+"-"+fotmatnumber(1,12)+"-"+fotmatnumber(1,31),  
        "title": rand_title(i),
        "user_id": parseInt(i/200)+1,
        "items" :[{ 
        	"goods_id" : parseInt(i/200)+1,
        	"goods_attr" : i,  
        	"price" : 100.0
        },{ 
        	"goods_id" : parseInt(i/200)+2,
        	"goods_attr" : i+1,  
        	"price" : 80.0
        }]
    })
    if(i%10000==0){
        print("已经添加了"+parseInt(i/10000)+"万条数据!");
    }
}

(2)查看demo数据库大小

root@node1:~# mongo
……
> show dbs;
admin   0.000GB
config  0.000GB
demo    0.010GB
local   0.000GB
> exit
bye

(3) 数据备份

root@node1:~# mongodump -h 127.0.0.1:27017 -d demo -o backup

(4)删除demo数据库

root@node1:~# mongo
……
> show dbs;
admin   0.000GB
config  0.000GB
demo    0.010GB
local   0.000GB
> use demo;
switched to db demo
> db.dropDatabase()
{ "dropped" : "demo", "ok" : 1 }
> show dbs;
admin   0.000GB
config  0.000GB
local   0.000GB
> exit
bye

(5)数据恢复

root@node1:~# mongorestore -h 127.0.0.1:27017 -d demo --dir /root/backup/demo

(6)查看数据恢复情况

root@node1:~# mongo
……
> use dbs;
switched to db dbs
> show dbs;
admin   0.000GB
config  0.000GB
demo    0.009GB
local   0.000GB

2.MongoDB 数据表备份与恢复

(1)查询demo数据表的orders数据表文件(默认每次20个)

……
> use demo;
switched to db demo
> show tables;
orders
> db.orders.find()

(2)输入it遍历查询后20个文件

Type "it" for more
> it

(3)修改返回结果数据的单页显示数量为30条,默认20条

> DBQuery.shellBatchSize=30
30

(4)删除orders表中的多个文档 ,目前显示剩余190078条文档

> db.orders.deleteMany({"title":"买买买买-1"})
{ "acknowledged" : true, "deletedCount" : 2037 }
> db.orders.deleteMany({"title":"买买买买-3"})
{ "acknowledged" : true, "deletedCount" : 1988 }
> db.orders.deleteMany({"title":"买买买买-4"})
{ "acknowledged" : true, "deletedCount" : 2062 }
> db.orders.deleteMany({"title":"买买买买-5"})
{ "acknowledged" : true, "deletedCount" : 1902 }
> db.orders.deleteMany({"title":"买买买买-8"})
{ "acknowledged" : true, "deletedCount" : 1933 }
> db.order.count()
0
> db.orders.count()
190078
> exit
bye

(5)数据进行恢复

--drop 恢复数据前,先删除MongoDB中的旧数据

root@node1:~# mongorestore -h 127.0.0.1:27017 -d demo --dir /root/backup/demo --drop
2023-11-26T21:21:23.636-0800	The --db and --collection flags are deprecated for this use-case; please use --nsInclude instead, i.e. with --nsInclude=${DATABASE}.${COLLECTION}
2023-11-26T21:21:23.637-0800	building a list of collections to restore from /root/backup/demo dir
2023-11-26T21:21:23.637-0800	reading metadata for demo.orders from /root/backup/demo/orders.metadata.json
2023-11-26T21:21:23.638-0800	dropping collection demo.orders before restoring
2023-11-26T21:21:23.667-0800	restoring demo.orders from /root/backup/demo/orders.bson
2023-11-26T21:21:25.993-0800	finished restoring demo.orders (200000 documents, 0 failures)
2023-11-26T21:21:25.993-0800	no indexes to restore for collection demo.orders
2023-11-26T21:21:25.993-0800	200000 document(s) restored successfully. 0 document(s) failed to restore.

(6)查看恢复情况

root@node1:~# mongo
……
> use demo;
switched to db demo
> db.orders.count()
200000
> exit
bye

(7)数据导出

root@node1:~# mongoexport -d demo -c orders -o /root/backup/orders.json --type json
2023-11-26T21:24:52.113-0800	connected to: mongodb://localhost/
2023-11-26T21:24:53.117-0800	[##......................]  demo.orders  24000/200000  (12.0%)
2023-11-26T21:24:54.117-0800	[######..................]  demo.orders  56000/200000  (28.0%)
2023-11-26T21:24:55.116-0800	[########................]  demo.orders  72000/200000  (36.0%)
2023-11-26T21:24:56.116-0800	[############............]  demo.orders  104000/200000  (52.0%)
2023-11-26T21:24:57.117-0800	[################........]  demo.orders  136000/200000  (68.0%)
2023-11-26T21:24:58.117-0800	[####################....]  demo.orders  168000/200000  (84.0%)
2023-11-26T21:24:59.056-0800	[########################]  demo.orders  200000/200000  (100.0%)
2023-11-26T21:24:59.056-0800	exported 200000 records

(8)查看导出文件,一共200000条

(9)删除数据表orders

root@node1:~/backup# mongo
……
> use demo;
switched to db demo
> show tables;
orders
> db.orders.drop()
true
> show tables;
> exit
bye

(10)导入数据进行恢复

root@node1:~/backup# mongoimport -d demo -c orders --file /root/backup/orders.json --type json
2023-11-26T21:29:06.494-0800	connected to: mongodb://localhost/
2023-11-26T21:29:09.495-0800	[########................] demo.orders	16.7MB/48.0MB (34.8%)
2023-11-26T21:29:12.495-0800	[################........] demo.orders	32.0MB/48.0MB (66.8%)
2023-11-26T21:29:15.311-0800	[########################] demo.orders	48.0MB/48.0MB (100.0%)
2023-11-26T21:29:15.311-0800	200000 document(s) imported successfully. 0 document(s) failed to import.

(11)查看恢复情况

root@node1:~/backup# mongo
……
> use demo
switched to db demo
> show tables;
orders
> db.orders.count()
200000
> exit
bye

二、问题

1.MongoDB有哪些命令行工具实现数据备份与恢复

(1)命令行工具

MongdoDB一共提供了4个命令行工具给我们对数据进行备份与恢复以及导入与导出数据。

(2)备份与恢复

备份与恢复操作的数据文件格式是bson格式,二进制

1)数据备份
mongodump -h dbhost -d dbname -o dbdirectory
# 例如:备份一个demo的数据库
mongodump -h 127.0.0.1:27017 -d demo -o /root/backup

2)数据恢复
mongorestore -h dbhost -d dbname --dir dbdirectory --drop
# 例如:恢复上面备份的demo数据库
mongorestore -h 127.0.0.1:27017 -d demo --dir /root/backup/demo

(3) 导入与导出

导入与导出数据的数据文件格式是json格式,文本格式

1) 数据导出
mongoexport -d dbname -c collectionname -o file --type json/csv -f field
# 例如:导出demo数据库的orders集合数据
mongoexport -d demo -c orders -o /root/backup/orders.json --type json

2) 数据导入
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field
# 例如:把上面导出的json中的数据,导入到demo数据库的orders集合中
mongoimport -d demo -c orders --file /order/backup/orders.json --type json

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ESXi 6.7 升级 7.0

方式一&#xff1a;esxcli方式 1.登陆exsi web界面。 启用控制台shell 2.存储-datastore-数据存储浏览器&#xff0c;上载 ESXI-7.0.0-depot.zip升级文件。记住此datastore的位置 ssh连接ESXI主机 vmware -vl 查看当前版本 查看升级包中对应的版本信息&#xff1a; es…

YOLOv5独家原创改进: AKConv(可改变核卷积),即插即用的卷积,效果秒杀DSConv | 2023年11月最新发表

💡💡💡本文全网首发独家改进:可改变核卷积(AKConv),赋予卷积核任意数量的参数和任意采样形状,为网络开销和性能之间的权衡提供更丰富的选择,解决具有固定样本形状和正方形的卷积核不能很好地适应不断变化的目标的问题点,效果秒殺DSConv 1)AKConv替代标准卷积进行…

Redis入门保姆级教程

1. Redis入门 1.1 Redis简介 Redis是一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件。 官网:https://redis.io 中文网:https://www.redis.net.cn/ key-value结构存储&#xff1a; 主要特点&#xff1a; 基于内存存储&#xff0c;读写…

03_歌词滚动效果

03_歌词滚动效果 文章目录 03_歌词滚动效果效果一、数据准备①&#xff1a;歌词②&#xff1a;音频等 二、代码实现①&#xff1a;首页②&#xff1a;样式③&#xff1a;js逻辑④&#xff1a;测试 效果 一、数据准备 ①&#xff1a;歌词 var lrc [00:00.95]夜微凉 - 徐珊 [0…

全志R128按键控制蜂鸣器GPIO配置详解

按键控制蜂鸣器 首先我们搭建电路&#xff0c;如下&#xff1a; 引脚按键PA25按键1脚GND按键3脚PA29蜂鸣器触发脚 载入方案 我们使用的开发板是 R128-Devkit&#xff0c;需要开发 C906 核心的应用程序&#xff0c;所以载入方案选择r128s2_module_c906 $ source envsetup.sh…

ChatGPT初体验:注册、API Key获取与ChatAPI调用详解

自从2022年10月&#xff0c;ChatGPT诞生以后&#xff0c;实际上已经改变了很多&#xff01;其火爆程度简直超乎想象&#xff0c;一周的时间用户过百万&#xff0c;两个月的时间用户过亿。 目前ChatGPT4已经把2023年4月以前的人类的知识都学习到了&#xff0c;在软件工程里面&am…

echarts 通用线性图

echarts 通用线性图 getLineData() {const myChart echarts.init(this.$refs.chartDom);const option {tooltip: {trigger: axis,},legend: {show: false,textStyle: {fontSize: 14, //字体大小color: #ffffff, //字体颜色},data: [AAA, BBB],},grid: {show: true,left: 10%,…

Linux进程状态(僵尸进程,孤儿进程)+进程优先级+进程调度与切换

Linux进程状态[僵尸进程,孤儿进程]进程优先级 一.进程状态1.进程排队2.教材上对于进程状态的描述:1.阻塞挂起 3.Linux下具体的进程状态:1.Linux下的进程状态数组2.R3.S:可终止睡眠---浅度睡眠1.补充:前台进程和后台进程2.一种"奇怪"的现象 4.D:不可终止睡眠---深度睡…

如何避免光模块接口受到污染?

光模块作为光通信领域一个重要的配件&#xff0c;实现光电和电光的转换&#xff0c;和光纤连接&#xff0c;承载了数据流量的快速转换与传输。因而在整个网络体系中&#xff0c;起着至关重要的作用。虽然光模块在使用过程中&#xff0c;不像交换机和服务器等网络设备一样需要经…

echarts 自定义提示样式

在setOption中添加自定义样式 tooltip: {trigger: axis,formatter: (params)> {// console.log(params);var result if(params[0] && params[1]){result 发电量对比<div style"background:#F4F7FC;padding:5px;margin:5px 0px;border-radius:6px"&…

简易版王者荣耀

所有包和类 GameFrame类 package newKingOfHonor;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayList;im…

前端项目部署自动检测更新后通知用户刷新页面(前端实现,技术框架vue、js、webpack)——方案一:编译项目时动态生成一个记录版本号的文件

前言 当我们重新部署前端项目的时候&#xff0c;如果用户一直停留在页面上并未刷新使用&#xff0c;会存在功能使用差异性的问题&#xff0c;因此&#xff0c;当前端部署项目后&#xff0c;需要提醒用户有去重新加载页面。 技术框架 vue、js、webpack 解决方案 编译项目时动…

MacOS14 Sonoma 安装 Flutter 开发环境

本文针对 小白用户也包括自己&#xff0c;以前都是将这些写入我的有道云笔记。为了让给多人看见或者说自己更好的浏览&#xff0c;先将其记录如下。 朋友介绍一个项目说要开发一款App&#xff0c;最近也是闲着就答应下来。主要功能是通过蓝牙BLE控制设备的一个 Iot边缘设备&…

2020年06月 Scratch(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共15题,每题2分,共30分) 第1题 执行下图程序后,“花名”列表的第3项是? A:莲花 B:丁香 C:合欢 D:月季 答案:C 列表基本知识,选C。 第2题 执行如下图所示程序后,其结果为? A: B:

P2704 [NOI2001] 炮兵阵地 题解

P2704 题目题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示 解题思路分析Code更多方法 题目 原题链接 题目描述 司令部的将军们打算在 N M N\times M NM 的网格地图上部署他们的炮兵部队。 一个 N M N\times M NM 的地图由 N N N 行 M M M 列组成&#x…

解决视口动画插件jquery.aniview.js使用animate.css时无效的问题(最新版本网页视口动画插件的使用及没作用、没反应)

当网站页面元素进入视口时自动应用过渡效果。CSS过渡效果可以为网页添加动画效果&#xff0c;并提供了一种平滑的转换方式&#xff0c;使元素的变化更加流畅和生动。而通过jQuery插件来获取页面滚动位置决定合适调用动画效果。 一、官网 animate.css官网 一款强大的预设css3动…

Unity - Graphic解析

Gpahic 的作用 Graphic 是 Unity最基础的图形基类。主要负责UGUI的显示部分。 由上图可以看你出我们经常使用的Image&#xff0c;Text&#xff0c;都是继承自Graphic。 Graphic的渲染流程 在Graphic的源码中有以下属性 [NonSerialized] private CanvasRenderer m_CanvasRend…

深度学习中的注意力机制:原理、应用与实践

深度学习中的注意力机制&#xff1a;原理、应用与实践 摘要&#xff1a; 本文将深入探讨深度学习中的注意力机制&#xff0c;包括其原理、应用领域和实践方法。我们将通过详细的解析和代码示例&#xff0c;帮助读者更好地理解和应用注意力机制&#xff0c;从而提升深度学习模…

图解算法数据结构-LeetBook-树03_层序遍历奇数偶数行方向不同

一棵圣诞树记作根节点为 root 的二叉树&#xff0c;节点值为该位置装饰彩灯的颜色编号。请按照如下规则记录彩灯装饰结果&#xff1a; 第一层按照从左到右的顺序记录 除第一层外每一层的记录顺序均与上一层相反。即第一层为从左到右&#xff0c;第二层为从右到左。 示例 1&…

【论文解读】Edit-DiffNeRF:使用2D-扩散模型编辑3D-NeRF

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/abs/2306.09551 摘要 最近的研究表明&#xff0c;将预训练的扩散模型与神经辐射场&#xff08;NeRF&#xff09;相结合&#xff0c;是一种很有前途的文本到 3D 的生成…