分布式NoSQL(15)——MongoDB数据备份和恢复

目录

数据备份

mongodump 备份工具

使用 mongodump 备份数据

全库备份

单个数据库备份

集合备份

压缩备份库

压缩备份集合

编程要求

数据恢复

mongorestore 恢复工具

使用 mongorestore 恢复数据

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

恢复数据库

恢复数据库下的某集合

--drop 参数实践恢复

编程要求


数据备份

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.创建以上目录

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

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

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.其他五步(按顺序)

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)

数据恢复

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用户中(基于第一关的备份,下同)

恢复数据库

mongorestore -h 127.0.0.1:27017 -uroot -proot --authenticationDatabase admin -d test /home/mongod/test
#从/home/mongod/test目录下恢复名为test的单个数据库的数据到本地27300端口中root用户中的test数据库

恢复数据库下的某集合

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 中;

    mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin --drop  /opt/mongodb
  • 将 /opt/mongodb_1 目录下的数据恢复到 mytest1 数据库中;

    mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -d mytest1 /opt/mongodb_1/test1
  • 将 /opt/collection_1 目录下的数据恢复到 mytest2 数据库的 person 集合中;

    mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -d mytest2 -c person /opt/collection_1/test1/person.bson
  • 将 /opt/collection_2 目录下的数据恢复到 mytest3 数据库的 student 集合中,并删除之前备份的表;

    mongorestore -h 127.0.0.1:27017 --authenticationDatabase admin -d mytest3 -c student --gzip --drop /opt/collection_2/test2/student.bson.gz

全部代码:

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

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值