当前位置: 首页 > news >正文

数据库应用: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)) + startif(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/backup2)数据恢复
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 json2) 数据导入
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

相关文章:

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

目录 一、实验 1.MongoDB 数据库备份与恢复 2.MongoDB 数据表备份与恢复 二、问题 1.MongoDB有哪些命令行工具实现数据备份与恢复 一、实验 1.MongoDB 数据库备份与恢复 &#xff08;1&#xff09;查看版本 rootnode1:~# mongo --version&#xff08;2&#xff09;准备…...

MySQL-函数

一、统计函数 CREATE TABLE student (id INT NOT NULL DEFAULT 1,name varchar(20) not null default ,chinese float not null default 0.0,english float not null default 0.0,math float not null default 0.0 );insert into student values (1,曹操,77,89,85);insert int…...

【12】Python函数专题(下)

文章目录 1. 高阶函数1.1 以函数为参数1.2 以函数为返回值1.3 以函数为 参数和返回值2. 闭包3. 装饰器3.1 装饰器的引入3.2. 装饰器的使用3.3 装饰器强化练习🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔…...

国标GB28181协议/RTSP视频监控汇聚平台EasyCVR(V.3.4)页面UI大更新

为提高用户体验&#xff0c;增强平台功能&#xff0c;旭帆科技的Easy系列平台也在不断优化更新中。在最新的EasyCVR&#xff08;V.3.4&#xff09;中&#xff0c;其最显著的区别即为首页UI的调整。 其亮点是在【配置中心】-【基础配置】-【展示信息】中&#xff0c;首页UI可分…...

生成式AI与预测式AI的主要区别与实际应用

近年来&#xff0c;预测式人工智能&#xff08;Predictive AI&#xff09;通过先进的推荐算法、风险评估模型、以及欺诈检测工具&#xff0c;一直在推高着该领域公司的投资回报率。然而&#xff0c;今年初突然杀出的生成式人工智能&#xff08;Generative AI&#xff09;突然成…...

【JavaEE】多线程 -- 死锁问题

目录 1. 问题引入 2.死锁问题的概念和原因 3. 解决死锁问题 1. 问题引入 在学习死锁之前, 我们先观察下面的代码能否输出正确的结果: 运行程序, 能正常输出结果: 这个代码只管上看起来, 好像是有锁冲突的, 此时的 locker 对象已经是加锁的状态, 在尝试对 locker 加锁, 不应该…...

XTU OJ 1339 Interprime 学习笔记

链接 传送门 代码 #include<bits/stdc.h> using namespace std;const int N1e610; //78498 我计算了一下&#xff0c;6个0的范围内有这么多个素数&#xff0c;所以开这么大的数组存素数 //计算的代码是一个循环 int prime[80000]; int a[N],s[N];//s数组是前缀和数组b…...

【Web安全】xss攻击方式与绕过

xss攻击方式与绕过 文章目录 xss攻击方式与绕过XSS攻击方式1. script标签2. img标签3. input标签4. details标签5. svg标签6. select标签7. iframe标签8. video标签9. audio标签10. body标签11. textarea标签 常见绕过方式1. 空格过滤2. 引号过滤3. 括号过滤4. 关键词过滤5. 编…...

文件夹重命名技巧:用关键词替换文件夹名称指定内容的右侧文字

在日常生活中&#xff0c;经常要管理大量的文件夹&#xff0c;这时候掌握一些文件夹重命名的技巧就非常实用。例如文件夹重命名时&#xff0c;经常要将一些通用的文字替换成其他关键词&#xff0c;以便更好地标识和分类文件夹。而用关键词替换文件夹名称指定内容的右侧文字&…...

python pip安装第三方包时报错 error: Microsoft Visual C++ 14.0 or greater is required.

文章目录 1.问题2.原因3.解决办法 1.问题 pip install 的时候报错一大堆&#xff0c;其中有这么一段话 &#x1f447; error: Microsoft Visual C 14.0 or greater is required. Get it with "Microsoft C Build Tools": https://visualstudio.microsoft.com/visua…...

对 .NET程序2G虚拟地址紧张崩溃 的最后一次反思

一&#xff1a;背景 1. 讲故事 最近接连遇到了几起 2G 虚拟地址紧张 导致的程序崩溃&#xff0c;基本上 90% 都集中在医疗行业&#xff0c;真的很无语&#xff0c;他们用的都是一些上古的 XP&#xff0c;Windows7 x86&#xff0c;我也知道技术人很难也基本无法推动硬件系统和…...

HCIA-RS基础-静态路由协议

摘要&#xff1a;静态路由是一种在网络中广泛应用的路由选择方案&#xff0c;它以其简单的配置和低开销而备受青睐。本文将介绍静态路由的配置方法、默认路由的设置、路由的负载分担和备份策略。通过学习本文&#xff0c;希望可以你能够掌握静态路由的基本概念和在华为模拟器中…...

LeetCode(46)汇总区间【区间】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 汇总区间 1.题目 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某…...

数据预处理:随机裁剪放缩

随机裁剪放缩是一种数据增强技术&#xff0c;可以在训练神经网络时增加数据的多样性&#xff0c;提高模型的泛化能力。具体来说&#xff0c;随机裁剪放缩可以通过随机裁剪和缩放原始图片来生成多个不同的训练样本&#xff0c;从而增加数据集的大小和多样性。这种技术在图像分类…...

RabbitMQ 搭建和工作模式

MQ基本概念 1. MQ概述 MQ全称 Message Queue&#xff08;[kjuː]&#xff09;&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。 &#xff08;队列是一种容器&#xff0c;用于存放数据的都是容器&#xff0…...

一起学docker系列之七docker容器卷技术

目录 1 为什么使用容器数据卷&#xff1f;2 数据卷的特点和优势3 使用数据卷的方法3.1 创建容器并挂载数据卷3.2 容器间数据卷的共享与继承 4 数据卷的权限设置5 注意事项5.1 解决权限问题5.2 路径自动创建 结语 对于容器化应用程序的数据管理和持久化&#xff0c;Docker 数据卷…...

Loki安装部署

Loki安装部署 1、Loki介绍 Loki 是受 Prometheus 启发由 Grafana Labs 团队开源的水平可扩展&#xff0c;高度可用的多租户日志聚合系统。开发语 言: Google Go。它的设计具有很高的成本效益&#xff0c;并且易于操作。使用标签来作为索引&#xff0c;而不是对全文进行检索&…...

php如何实现文件上传

php实现文件上传需要通过全局变量&#xff08;数组&#xff09;&#xff1a;$_FILES 结合 move_uploaded_file 函数来实现。 move_uploaded_file函数&#xff08;只对POST方式生效&#xff09;&#xff1a; 其中move_uploaded_file函数语法&#xff1a;move_uploaded_file(需要…...

实验8配置工具

一、实验目的 1. 掌握UML中建模工具——部署图&#xff0c;用于显示系统中软件和硬件的物理架构。 2. 掌握应用Visio等业界常用的建模工具的基本使用方法和基本绘图操作&#xff0c;选择一种并熟练使用&#xff0c;会使用该工具针对具体问题建立分析模型。 二、实验内容与步骤…...

论文笔记:详解NEUPSL DSI

《Using Domain Knowledge to Guide Dialog Structure Induction via Neural Probabilistic 》 名词解释 Dialog Structure Induction&#xff08;DSI&#xff09;是推断给定目标导向对话的潜在对话结构&#xff08;即一组对话状态及其时间转换&#xff09;的任务。它是现代对…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一&#xff1a;HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二&#xff1a;Floyd 快慢指针法&#xff08;…...