MongoDB备份与恢复

MongoDB备份与恢复

1.备份恢复工具

(1) mongoexport / mongoimport

(2) mongodump / mongorestore

2.备份工具区别

应用场景总结:

1.异构平台迁移 mysql的数据可以迁移到MOngoDB

2.同平台,跨大版本:mongodb2 ----> mongodb 3

mongoexport / mongoimport 可以到出格式为 json csv

日常备份恢复时使用

mongodump / mongorestore

3.mongoexport导出工具命令

mongoexport语法

mongoexport --help  帮助
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-f:指明要导出那些列
-o:指明要导出的文件名
-q:指明导出数据的过滤条件

4.导出MongoDB的表

下面我们来举例导出操作

4.1.创建备份的目录

[root@localhost mongo_clusetr]# mkdir backup

4.2.登录数据库

[root@localhost mongo_clusetr]# mongodb/bin/mongo db:28017

4.3.查询表和表中数据

可以看到test库下的te表示有数据的

dba1:PRIMARY> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB
dba1:PRIMARY> use db
switched to db db
dba1:PRIMARY> use test
switched to db test
dba1:PRIMARY> db
test
dba1:PRIMARY> show tables
te
test
dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("636f63745a73f86992679cef"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("636f63be5a73f86992679cf0"), "name" : "gao", "age" : 11 }

4.4.导出数据为json格式

举例:

可以看到已经可以查到数据了

[root@localhost mongo_clusetr]# mongodb/bin/mongoexport --port 28017 -d test -c te -p backup/te.json

[root@localhost mongo_clusetr]# ll backup/
total 4
-rw-r--r--. 1 root root 138 Nov 23 21:37 log.json

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sTWjfYSP-1669217921495)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123213723320.png)]

4.5.导出数据为csv格式

举例:

-f是指定需要导出那些字段  --type指定格式

[root@localhost mongo_clusetr]# mongodb/bin/mongoexport --port 28017 -d test -c te --type=csv -f name,age -o /opt/mongo_clusetr/backup/log.csv

可以看到已经是查到两条数据了

[root@localhost mongo_clusetr]# ll backup/
total 8
-rw-r--r--. 1 root root  25 Nov 23 21:40 log.csv
-rw-r--r--. 1 root root 138 Nov 23 21:37 log.json

5.mongoimport导入工具

mongoimport --help
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-f:指明要导入那些列

5.1.恢复json格式数据

可以把刚才导出的数据恢复

可以恢复到别的库中查看一下,不删除原来的数据

将导出格式为jsoon的数据恢复到另一个库中
[root@localhost mongo_clusetr]# mongodb/bin/mongoimport --port 28017 -d gao -c te backup/log.json

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p83utLAq-1669217921497)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123215904992.png)]

5.2.登录数据库查看恢复情况

可以看到已经恢复到了gao的库中

dba1:PRIMARY> show dbs  
admin   0.000GB
config  0.000GB
gao     0.000GB
local   0.000GB
test    0.000GB

dba1:PRIMARY> use gao 
switched to db gao
@(shell):1:1

dba1:PRIMARY> db
gao

dba1:PRIMARY> show tables
te

dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("636f63745a73f86992679cef"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("636f63be5a73f86992679cf0"), "name" : "gao", "age" : 11 }
dba1:PRIMARY> 

5.3.导入csv格式的

-c 指定表明 -d 库名 --type=csv格式  --file 路径

[root@localhost mongo_clusetr]# mongodb/bin/mongoimport --port 28017 -d db -c te --type=csv -f name,age --file  /opt/mongo_clusetr/backup/log.csv

5.4查询导入的数据

dba1:PRIMARY> show dbs
admin   0.000GB
config  0.000GB
db      0.000GB
gao     0.000GB
local   0.000GB
test    0.000GB

dba1:PRIMARY> use db
switched to db db

dba1:PRIMARY> show tables
te

dba1:PRIMARY> db.te.find()
{ "_id" : ObjectId("637e295dc7f5fcd867772ca5"), "name" : "name", "age" : "age" }
{ "_id" : ObjectId("637e295dc7f5fcd867772ca6"), "name" : "zhang", "age" : 10 }
{ "_id" : ObjectId("637e295dc7f5fcd867772ca7"), "name" : "gao", "age" : 11 }

6.csv格式可以用windows系统实用excel打开

下载到本地即可

[root@localhost mongo_clusetr]# cd backup/
[root@localhost backup]# ls
log.csv  log.json
[root@localhost backup]# sz log.csv 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NlJxPqAt-1669217921498)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123222236854.png)]

7.整个数据库备份

7.1.mongodump和mongorestore

mongodump能够在mongdb运行时进行备份,它的工作原理是对运行的MongoDB做查询,然后将所有查到的文档写入磁盘。

但是存在问题时使用mongodb产生的备份不一定是数据库的实时快照,如果我们在备份时对数据库进行了写入操作,则备份出来的文件可能不完全和 Mongodb 实时数据相等。另外在备份时可能会对其它客户端性能产生不利的影响。

7.2.命令参数

mongodump --help
参数说明:
-h:指明数据库宿主机的IP
-u:指明数据库的用户名
-p:指明数据库的密码
-d:指明数据库的名字
-c:指明colletion(表)的名字
-o:指明到要导出的文件名
-q:指明导出数据的过滤条件

7.3.备份整个库

#创建文件目录
[root@localhost mongo_clusetr]# mkdir /data/backup

#备份整个库
[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -o /data/backup/

#查询备份结果
[root@localhost mongo_clusetr]# cd /data/backup/
[root@localhost backup]# ls
admin  db  gao  test

7.4.压缩的方式备份整个库

为了防止备份数据过大,MongoDB是支持备份压缩的

mongodb/bin/mongodump --port 28017 -o /data/backup/ --gzip

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lFc3Ap2O-1669217921499)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123224535045.png)]

7.5.备份单个数据库

和备份全库的命令是差不多的

[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -d db -o /data

7.6.压缩的方式备份单个库

[root@localhost mongo_clusetr]# mongodb/bin/mongodump --port 28017 -d db -o /data --gzip

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfCEEaFS-1669217921500)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123224905847.png)]

8.恢复数据库

删除数据库实验恢复操作

8.1.删除db库

已经删除db库

ba1:PRIMARY> show dbs
dba1:PRIMARY> use db
dba1:PRIMARY> db.dropDatabase()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hb2eRHv8-1669217921500)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123225314668.png)]

8.2.使用备份恢复db库

[root@localhost mongo_clusetr]# mongodb/bin/mongorestore --port 28017 -d db -o /data/db/

恢复成功
dba1:PRIMARY> show dbs
admin   0.000GB
config  0.000GB
db      0.000GB
gao     0.000GB
local   0.000GB
test    0.000GB

8.3.恢复成功再次使用命令报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eteUqrfO-1669217921501)(D:\linux笔记总结\mongoDB\MongoDB备份与恢复.assets\image-20221123230005393.png)]

也可以使用命令后面加–dorp

删除原有数据再次恢复

不过不建议这么使用恢复

[root@localhost mongo_clusetr]# mongodb/bin/mongorestore --port 28017 -d db   /data/backup/db/ -dorp

在这里插入图片描述

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值