Mongodb入门--头歌实验MongoDB 实验——数据备份和恢复

在实际的应用场景中,经常需要对业务数据进行备份以做容灾准备, MongoDB 提供了备份和恢复的功能,分别是 MongoDB 下的

一、数据备份

任务描述

本关任务:按照编程要求备份数据库。

相关知识

为了完成本关任务,你需要掌握: 1.掌握 mongodump 备份工具的参数含义; 2.如何使用 mongodump 备份数据。

mongodump 备份工具

mongodump 的参数与 mongoexport(数据导出)的参数基本一致:

参数 参数说明
-h 指明数据库宿主机的IP
-u 指明数据库的用户名
-p 指明数据库的密码
-d 指明数据库的名字
-c 指明collection的名字
-o 指明到要导出的文件名
-q 指明导出数据的过滤条件
--authenticationDatabase 验证数据的名称
--gzip 备份时压缩
--oplog use oplog for taking a point-in-time snapshot
使用 mongodump 备份数据

备份工具同导入导出工具类似,都是在命令行进行操作,无需进入客户端。

  • 全库备份(如果数据库未设置用户和密码,可以省略 -uroot -proot 参数)
bash 复制代码
mongodump -h 127.0.0.1:27300 -uroot -proot --authenticationDatabase admin  -o /home/mongod
#备份本地27300端口中root用户的所有数据库到/home/mongod目录下
  • 单个数据库备份
bash 复制代码
mongodump -h 127.0.0.1:27300 -uroot -proot --authenticationDatabase admin  -d test -o /home/mongod/test
#备份本地27300端口中root用户的test数据库到/home/mongod/test目录下
  • 集合备份

    bash 复制代码
    mongodump -h 127.0.0.1:27300 -uroot -proot --authenticationDatabase admin -d test -c haha -o /home/mongod/test/haha
    #备份27300端口中root用户的test数据库的haha集合到/home/mongod/test/haha目录下
  • 压缩备份库

bash 复制代码
mongodump -h 127.0.0.1:27300 -uroot -proot --authenticationDatabase admin  -d test -o /home/mongod/test1 --gzip
#压缩备份本地27300端口中root用户的test数据库到/home/mongod/test1目录下
  • 压缩备份集合

    bash 复制代码
    mongodump -h 127.0.0.1:27300 -uroot -proot --authenticationDatabase admin -d test -c haha -o /home/mongod/test1/haha --gzip
    #压缩备份27300端口中root用户的test数据库的haha集合到/home/mongod/test1/haha目录下
编程要求

根据提示,在右侧命令行进行操作(以下均在默认端口为27017的客户端进行,无用户和密码;以下**/opt下的路径均**不存在,**需要自己先行创建**):

  • 分别将 /home/example 目录下的 person.json 和 student.csv 导入到 MongoDB 的 test1 数据库的 person 集合、test2 数据库的 student 集合;

  • 将所有数据库备份到 /opt/mongodb 目录下;

  • 将 test1 数据库备份到 /opt/mongodb_1 目录下;

  • 将 person 集合备份到 /opt/collection_1 目录下;

  • 将 student 集合压缩备份到 /opt/collection_2 目录下;

  • 将 test2 数据库压缩备份到 /opt/mongodb_2 目录下。

1.创建以上目录

bash 复制代码
root@evassh-13661150:~# mkdir /opt/mongodb
root@evassh-13661150:~# mkdir /opt/mongodb_1
root@evassh-13661150:~# mkdir /opt/mongodb_2
root@evassh-13661150:~# mkdir /opt/collection_1
root@evassh-13661150:~# mkdir /opt/collection_2
  1. 分别将 /home/example 目录下的 person.json 和 student.csv 导入到 MongoDB 的 test1 数据库的 person 集合、test2 数据库的 student 集合;
bash 复制代码
root@evassh-13661150:~# mongoimport -d test1 -c person --type json --file /home/example/person.json
2022-12-18T15:32:43.037+0000    connected to: localhost
2022-12-18T15:32:43.052+0000    imported 8 documents
root@evassh-13661150:~# mongoimport -d test2 -c student --type csv --headerline --ignoreBlanks --file /home/example/student.csv
2022-12-18T15:33:36.403+0000    connected to: localhost
2022-12-18T15:33:36.416+0000    imported 8 documents

mongoimport -d test1 -c person --type json --file /home/example/person.json

mongoimport -d test2 -c student --type csv --headerline --ignoreBlanks --file /home/example/student.csv
3.其他五步(按顺序)

bash 复制代码
root@evassh-13661150:~# mongodump -h 127.0.0.1:27017 --authenticationDatabase admin -o /opt/mongodb
2022-12-18T15:35:24.521+0000    writing admin.system.version to 
2022-12-18T15:35:24.522+0000    done dumping admin.system.version (1 document)
2022-12-18T15:35:24.522+0000    writing test1.person to 
2022-12-18T15:35:24.522+0000    writing test2.student to 
2022-12-18T15:35:24.523+0000    done dumping test1.person (8 documents)
2022-12-18T15:35:24.523+0000    done dumping test2.student (8 documents)
 
 
root@evassh-13661150:~# mongodump -h 127.0.0.1:27017 --authenticationDatabase admin -d test1 -o /opt/mongodb_1
2022-12-18T15:36:20.989+0000    writing test1.person to 
2022-12-18T15:36:20.989+0000    done dumping test1.person (8 documents)
 
 
root@evassh-13661150:~# mongodump -h 127.0.0.1:27017 --authenticationDatabase admin  -d test1 -c person -o /opt/collection_1
2022-12-18T15:37:27.552+0000    writing test1.person to 
2022-12-18T15:37:27.553+0000    done dumping test1.person (8 documents)
 
 
root@evassh-13661150:~# mongodump -h 127.0.0.1:27017 --authenticationDatabase admin -d test2 -c student -o /opt/collection_2 --gzip
2022-12-18T15:38:16.975+0000    writing test2.student to 
2022-12-18T15:38:16.977+0000    done dumping test2.student (8 documents)
 
 
root@evassh-13661150:~# mongodump -h 127.0.0.1:27017 --authenticationDatabase admin -d test2 -o /opt/mongodb_2 --gzip
2022-12-18T15:38:52.390+0000    writing test2.student to 
2022-12-18T15:38:52.391+0000    done dumping test2.student (8 documents)

二、数据恢复

任务描述

本关任务:按照编程要求恢复数据。

相关知识

为了完成本关任务,你需要掌握: 1.掌握 mongorestore 恢复工具的参数含义; 2.如何使用 mongorestore 恢复数据。

bash 复制代码
mongorestore 恢复工具
参数	参数说明
-h	指明数据库宿主机的IP
-u	指明数据库的用户名
-p	指明数据库的密码
-d	指明数据库的名字
-c	指明collection的名字
-o	指明到要导出的文件名
-q	指明导出数据的过滤条件
--authenticationDatabase	验证数据的名称
--gzip	备份时压缩
--oplog	use oplog for taking a point-in-time snapshot
--drop	恢复的时候把之前的集合drop掉
使用 mongorestore 恢复数据
  • 全库备份中恢复单库(基于之前的全库备份)
bash 复制代码
mongorestore -h 127.0.0.1:27017 -uroot -proot --authenticationDatabase admin -d test --drop  /home/mongod
#从/home/mongod目录下恢复全部数据库的数据到本地27300端口中root用户中(基于第一关的备份,下同)
  • 恢复 test 库
bash 复制代码
mongorestore -h 127.0.0.1:27017 -uroot -proot --authenticationDatabase admin -d test /home/mongod/test
#从/home/mongod/test目录下恢复名为test的单个数据库的数据到本地27300端口中root用户中的test数据库
  • 恢复 test 库下的 haha 集合
bash 复制代码
mongorestore -h 127.0.0.1:27017 -uroot -proot --authenticationDatabase admin -d test -c haha /home/mongod/test/haha/haha.bson
#从/home/mongod/test/haha目录下恢复集合的数据到本地27300端口中root用户的test数据库的haha集合中

--drop 参数实践恢复

bash 复制代码
# 恢复单库
mongorestore -h 127.0.0.1:27017 -uroot -proot --authenticationDatabase admin -d test --drop /home/mongod/test
# 恢复单表
mongorestore -h 127.0.0.1:27017 -uroot -proot --authenticationDatabase admin -d test -c vast --drop /home/mongod/test/haha/haha.bson
编程要求

根据提示,在右侧命令行进行操作,将第一关备份的数据按以下要求恢复(以下均在默认端口为27017的客户端进行,无用户和密码):

  • 将 /opt/mongodb 目录下的数据恢复到 MongoDB 中;

  • 将 /opt/mongodb_1 目录下的数据恢复到 mytest1 数据库中;

  • 将 /opt/collection_1 目录下的数据恢复到 mytest2 数据库的 person 集合中;

  • 将 /opt/collection_2 目录下的数据恢复到 mytest3 数据库的 student 集合中,并删除之前备份的表;

  • 将 /opt/mongodb_2 目录下的数据恢复到 mytest4 的数据库中,并删除之前的备份的数据库。

bash 复制代码
root@evassh-13661150:~# mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin --drop /opt/mongodb
2022-12-18T15:48:05.720+0000    preparing collections to restore from
2022-12-18T15:48:05.788+0000    reading metadata for test1.person from /opt/mongodb/test1/person.metadata.json
2022-12-18T15:48:05.793+0000    reading metadata for test2.student from /opt/mongodb/test2/student.metadata.json
2022-12-18T15:48:05.815+0000    restoring test1.person from /opt/mongodb/test1/person.bson
2022-12-18T15:48:05.815+0000    restoring test2.student from /opt/mongodb/test2/student.bson
2022-12-18T15:48:05.818+0000    no indexes to restore
2022-12-18T15:48:05.818+0000    finished restoring test1.person (8 documents)
2022-12-18T15:48:05.818+0000    no indexes to restore
2022-12-18T15:48:05.818+0000    finished restoring test2.student (8 documents)
2022-12-18T15:48:05.818+0000    done
 
 
root@evassh-13661150:~# mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -d mytest1 /opt/mongodb_1/test1
2022-12-18T15:48:36.693+0000    the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2022-12-18T15:48:36.693+0000    building a list of collections to restore from /opt/mongodb_1/test1 dir
2022-12-18T15:48:36.694+0000    reading metadata for mytest1.person from /opt/mongodb_1/test1/person.metadata.json
2022-12-18T15:48:36.706+0000    restoring mytest1.person from /opt/mongodb_1/test1/person.bson
2022-12-18T15:48:36.708+0000    no indexes to restore
2022-12-18T15:48:36.708+0000    finished restoring mytest1.person (8 documents)
2022-12-18T15:48:36.708+0000    done
 
 
root@evassh-13661150:~# mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -d mytest2 -c person /opt/collection_1/test1/person.bson
2022-12-18T15:48:45.065+0000    checking for collection data in /opt/collection_1/test1/person.bson
2022-12-18T15:48:45.065+0000    reading metadata for mytest2.person from /opt/collection_1/test1/person.metadata.json
2022-12-18T15:48:45.077+0000    restoring mytest2.person from /opt/collection_1/test1/person.bson
2022-12-18T15:48:45.140+0000    no indexes to restore
2022-12-18T15:48:45.140+0000    finished restoring mytest2.person (8 documents)
2022-12-18T15:48:45.140+0000    done
 
 
root@evassh-13661150:~# mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -d mytest3 -c student --gzip --drop /opt/collection_2/test2/student.bson.gz
2022-12-18T15:48:52.830+0000    checking for collection data in /opt/collection_2/test2/student.bson.gz
2022-12-18T15:48:52.830+0000    reading metadata for mytest3.student from /opt/collection_2/test2/student.metadata.json.gz
2022-12-18T15:48:52.843+0000    restoring mytest3.student from /opt/collection_2/test2/student.bson.gz
2022-12-18T15:48:52.906+0000    no indexes to restore
2022-12-18T15:48:52.907+0000    finished restoring mytest3.student (8 documents)
2022-12-18T15:48:52.907+0000    done
 
 
root@evassh-13661150:~# mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -d mytest4  --gzip --drop /opt/mongodb_2/test2/student.bson.gz
2022-12-18T15:49:00.810+0000    checking for collection data in /opt/mongodb_2/test2/student.bson.gz
2022-12-18T15:49:00.810+0000    reading metadata for mytest4.student from /opt/mongodb_2/test2/student.metadata.json.gz
2022-12-18T15:49:00.822+0000    restoring mytest4.student from /opt/mongodb_2/test2/student.bson.gz
2022-12-18T15:49:00.885+0000    no indexes to restore
2022-12-18T15:49:00.885+0000    finished restoring mytest4.student (8 documents)
2022-12-18T15:49:00.885+0000    done
相关推荐
NCIN EXPE3 小时前
redis 使用
数据库·redis·缓存
MongoDB 数据平台3 小时前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
极客on之路3 小时前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家3 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE3 小时前
开启mysql的binlog日志
数据库·mysql
yejqvow123 小时前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
oLLI PILO4 小时前
nacos2.3.0 接入pgsql或其他数据库
数据库
m0_743623924 小时前
HTML怎么创建多语言切换器_HTML语言选择下拉结构【指南】
jvm·数据库·python
pele4 小时前
Angular 表单中基于下拉选择动态启用字段必填校验的完整实现
jvm·数据库·python