MongoDB备份与恢复
创始人
2024-02-10 15:16:23
0

MongoDB备份与恢复

文章目录

  • MongoDB备份与恢复
    • 1.备份恢复工具
    • 2.备份工具区别
    • 3.mongoexport导出工具命令
    • 4.导出MongoDB的表
      • 4.1.创建备份的目录
      • 4.2.登录数据库
      • 4.3.查询表和表中数据
      • 4.4.导出数据为json格式
      • 4.5.导出数据为csv格式
    • 5.mongoimport导入工具
      • 5.1.恢复json格式数据
      • 5.2.登录数据库查看恢复情况
      • 5.3.导入csv格式的
      • 5.4查询导入的数据
    • 6.csv格式可以用windows系统实用excel打开
  • 7.整个数据库备份
    • 7.1.mongodump和mongorestore
    • 7.2.命令参数
    • 7.3.备份整个库
    • 7.4.压缩的方式备份整个库
    • 7.5.备份单个数据库
    • 7.6.压缩的方式备份单个库
  • 8.恢复数据库
    • 8.1.删除db库
    • 8.2.使用备份恢复db库
    • 8.3.恢复成功再次使用命令报错

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.000GBdba1:PRIMARY> use gao 
switched to db gao
@(shell):1:1dba1:PRIMARY> db
gaodba1:PRIMARY> show tables
tedba1: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.000GBdba1:PRIMARY> use db
switched to db dbdba1:PRIMARY> show tables
tedba1: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

在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...