【头歌实训】MongoDB 实验——数据备份和恢复

第1关:数据备份

任务描述

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

相关知识

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

mongodump 备份工具

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

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

使用 mongodump 备份数据

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

  • 全库备份(如果数据库未设置用户和密码,可以省略 -uroot -proot 参数)

    mongodump -h 127.0.0.1:27300 -uroot -proot --authenticationDatabase admin  -o /home/mongod
    #备份本地27300端口中root用户的所有数据库到/home/mongod目录下
    
  • 单个数据库备份

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

    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目录下
    
  • 压缩备份库

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

    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所示结果。

答案代码

mkdir /opt/mongodb
mkdir /opt/mongodb_1
mkdir /opt/mongodb_2
mkdir /opt/collection_1
mkdir /opt/collection_2

mongoimport -d test2 -c student --type csv --headerline --ignoreBlanks --file /home/example/student.csv
mongoimport -d test1 -c person --type json --file /home/example/person.json

mongodump -h 127.0.0.1:27017 --authenticationDatabase admin  -o /opt/mongodb
mongodump -h 127.0.0.1:27017 --authenticationDatabase admin  -d test1 -o /opt/mongodb_1
mongodump -h 127.0.0.1:27017  --authenticationDatabase admin  -d test1 -c person -o /opt/collection_1
mongodump -h 127.0.0.1:27017 --authenticationDatabase admin  -d test2 -c student -o /opt/collection_2 --gzip
mongodump -h 127.0.0.1:27017 --authenticationDatabase admin  -d test2 -o /opt/mongodb_2 --gzip

第2关:数据恢复

任务描述

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

相关知识

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

mongorestore 恢复工具

参数参数说明
-h指明数据库宿主机的IP
-u指明数据库的用户名
-p指明数据库的密码
-d指明数据库的名字
-c指明collection的名字
-o指明到要导出的文件名
-q指明导出数据的过滤条件
–authenticationDatabase验证数据的名称
–gzip备份时压缩
–oploguse oplog for taking a point-in-time snapshot
–drop恢复的时候把之前的集合drop掉

使用 mongorestore 恢复数据

  • 全库备份中恢复单库(基于之前的全库备份)

    mongorestore -h 127.0.0.1:27017 -uroot -proot --authenticationDatabase admin -d test --drop  /home/mongod
    #从/home/mongod目录下恢复全部数据库的数据到本地27300端口中root用户中(基于第一关的备份,下同)
    
  • 恢复 test 库

    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 集合

    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 参数实践恢复

    # 恢复单库
    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 的数据库中,并删除之前的备份的数据库。

测试说明

平台会对你编写的代码进行测试:

如果操作无误,会显示如 测试集1 所示结果。

答案代码

mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin --drop  /opt/mongodb
mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -d mytest1 /opt/mongodb_1/test1
mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -d mytest2 -c person /opt/collection_1/test1/person.bson
mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -d mytest3 -c student --gzip --drop /opt/collection_2/test2/student.bson.gz
mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -d mytest4  --gzip --drop /opt/mongodb_2/test2/student.bson.gz
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 头歌 MongoDB 实验 - 数据备份恢复MongoDB 中,数据备份恢复是非常重要的操作。备份可以保证数据的安全性,而恢复可以在数据丢失或损坏时快速恢复数据备份 MongoDB 数据库的方法有很多种,其中最常用的是使用 mongodump 命令。该命令可以备份整个数据库或者备份指定的集合。备份数据可以保存到本地文件系统或者远程服务器。 恢复 MongoDB 数据库的方法也有很多种,其中最常用的是使用 mongorestore 命令。该命令可以将备份数据恢复MongoDB 数据库中。恢复数据可以从本地文件系统或者远程服务器中获取。 在进行数据备份恢复操作时,需要注意以下几点: 1.备份恢复数据必须是同一版本的 MongoDB。 2.备份恢复数据必须是同一架构的 MongoDB。 3.备份恢复数据必须是同一集合或者数据库。 4.备份恢复数据必须具有相同的索引。 5.备份恢复数据必须具有相同的存储引擎。 总之,备份恢复 MongoDB 数据库是非常重要的操作,需要仔细考虑和执行。 ### 回答2: MongoDB是一种非关系型数据库,具有高可扩展性和灵活性等优点,但是在使用过程中也存在一些问题,例如数据备份恢复。为了解决这些问题,我们需要掌握备份恢复数据的方法。 MongoDB提供了多种备份恢复数据的方法,包括mongodump、mongorestore、mongoexport和mongoimport等。mongodump和mongorestore是备份恢复Mongodb数据库的基本工具,它们支持备份恢复整个数据库或只备份恢复特定的集合。 mongodump命令可以备份Mongodb数据库,并将其输出到一个目录中,例如: mongodump --db test --out /data/backup 这个命令将备份test数据库,并将其输出到/data/backup目录中。 mongorestore命令可以恢复Mongodb数据库中的备份数据,例如: mongorestore --db test /data/backup/test 这个命令将恢复test数据库中的备份数据备份数据在/data/backup/test目录中。 mongoexport和mongoimport是备份恢复Mongodb数据库中的特定数据的工具,例如: mongoexport --db test --collection users --out /data/backup/users.json 这个命令将备份test数据库中的users集合,并将其输出到/data/backup/users.json文件中。 mongoimport命令可以将备份数据导入到Mongodb数据库中,例如: mongoimport --db test --collection users --file /data/backup/users.json 这个命令将将备份数据从/data/backup/users.json文件中导入到test数据库中的users集合中。 在备份恢复Mongodb数据库时,我们还需要注意以下几点: 1.备份恢复Mongodb版本应该保持一致。 2.备份数据应该定期进行,并最好不要保存在与生产环境相同的服务器上。 3.恢复数据时应该先停止Mongodb服务器。 4.备份恢复数据时应该使用管理员权限。 5.备份恢复数据时应该测试备份数据,确保备份数据可用性。 综上所述,备份恢复Mongodb数据库是非常重要的工作,我们应该掌握备份恢复数据的方法,并按照最佳实践进行操作,以确保数据安全和可用性。 ### 回答3: 数据备份恢复MongoDB中非常重要的操作之一。这至关重要,因为如果您可以成功备份恢复数据,那么任何时候都可以轻松地找回丢失的数据。在MongoDB备份恢复数据也很容易,同样重要的是,您需要保证这样一件事情,即您的数据一定是安全的。 备份的方法: 1.使用mongodump备份数据 mongodump是MongoDB shell提供的备份命令,用于备份整个数据库和集合。mongodump生成指定的集合或整个数据库的BSON文件,并将其写入到文件中。备份的命令,如下所示: mongodump -d dbname -o /backup/path/to/dir/ 其中,"-d"指定待备份数据库;"-o"指定备份数据存放的目录。 2.使用mongodump备份分片集合数据 如果使用的是分片集合,可以使用mongodump对其进行备份。mongodump命令只备份所在分片的当前块数据。异常分片数据需要人工处理。备份分片集合命令,如下所示: mongodump -h 127.0.0.1 -d test -c shardcollection -o /backup/path/ 其中,“shardcollection”是需要备份的分片集合名称,127.0.0.1是mongos的IP地址,"test"是指数据库名称,"-o"指定备份路径。 3.使用mongodump备份复制集数据 如果使用的是复制集,则可以使用mongodump命令对其进行备份。在备份后,可以通过指定的BSON文件进行数据恢复备份复制集数据命令,如下所示: mongodump -h 127.0.0.1 --port 27017 -d exampledb --authenticationDatabase admin -u user1 -p pass1 -o backupdir 其中,“user1”和“pass1”是用于验证的凭据,在运行mongodump命令时使用。 恢复的方法: 1.使用mongorestore恢复数据 mongorestore是mongo shell提供的恢复命令,用于将用mongodump备份生成的BSON文件恢复MongoDB中。恢复数据命令,如下所示: mongorestore -d dbname --dir /backup/path/to/db/ 其中,“dbname”是指定要恢复数据库名称,“--dir”是mongodump命令备份数据存放路径。 2.使用mongorestore恢复数据到分片集合 如果需要将已备份的分片集合数据恢复为分片集合,可以使用mongorestore命令。恢复分片集合数据命令,如下所示: mongorestore -h 127.0.0.1 -d test -c shardcollection /backup/path/to/db/shardcollection.bson 其中,“shardcollection”是需要恢复的分片集合名称;“-h”指定mongos的IP地址,“-d”指定恢复数据库名。 以上就是MongoDB数据备份恢复的方法,备份恢复数据也没有绝对规律,取决于应用场景,需要结合实际情况断定。为了能够使得数据一直存在。建议大家每天定时备份一次,以便保持数据的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值