mongodb的备份与恢复,详细实战版

备份与恢复工具介绍

(1)mongoexport/mongoimport

(2)mongodump/mongorestore

备份工具区别在哪里

应用场景总结:

1、异构平台迁移 mysql mongodb

2、同平台,跨大版本:mongodb 2 —-> mongodb 3

mongoexport/mongoimport:json csv

日常备份恢复时使用:

mongodump/mongorestore

 导出工具 mongoexport

mongoexport 具体用法如下所示:

$ mongoexport –help

参数说明:

-h:指明数据库宿主机的 IP

-u:指明数据库的用户名

-p:指明数据库的密码

-d:指明数据库的名称

-c:指明 collection 的名称

-f:指明要导出那些列

-o:指明到要导出的文件名

-q:指明导出数据的过滤条件

–authenticationDatabase admin

导入工具 mongoimport

$ mongoimport –help

参数说明:

-h:指明数据库宿主机的 IP

-u:指明数据库的用户名

-p:指明数据库的密码

-d:指明数据库的名称

-c:指明 collection 的名称

-f:指明要导入那些列

-j, –numInsertionWorkers= number of insert operations to run concurrently

(defaults to 1)

//并行

 

1.单表备份至 json 格式

(1).导出数据
mongoexport –port 27017 -d db -c test -o /backup/log.json

注:备份文件的名称可以自定义,默认导出了 JSON 格式的数据。

数据恢复:

(2).恢复 json 格式表数据到 aaa
mongoimport –port 27017 -d test -c aaa /backup/data.json

实战操作:

查看已有数据

mongodb的备份与恢复,详细实战版

将数据备份出来

mongoexport --port 27017 -d test -c inventory -o /backup/data1.json

mongodb的备份与恢复,详细实战版

把原表删除

mongodb的备份与恢复,详细实战版

恢复数据,指定的库名表名都可以不存在,因为mongodb会自动帮我们创建不存在的库或表

[root@localhost ~]# mongoimport --port 27017 -d mongo666 -c bbb /backup/data1.json 
[root@localhost ~]# mongoimport --port 27017 -d test -c a /backup/data1.json 

mongodb的备份与恢复,详细实战版

回到数据库查看恢复的数据,发现是正常的

mongodb的备份与恢复,详细实战版

2. 单表备份至 csv 格式

(1)导出数据

如果我们需要导出 CSV 格式的数据,则需要使用—-type=csv 参数:
mongoexport –port 27017 -d test -c test –type=csv -f item,qty,size,status -o /backup/log.csv

(2)数据恢复 :

注意:
(1)csv 格式的文件头行,有列名称

mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d testdb -c log2 --type=csv --headerline --file /mongodb/log.csv

(2)csv 格式的文件头行,没有列名称

mongoimport -uroot -proot123 --port 27017 --authenticationDatabase admin -d testdb -c log3 --type=csv -f id,name,age,date --file /mongodb/log.csv

–headerline:指明第一行是列名,不需要导入。

直接导出上面恢复的数据

mongoexport --port 27017 -d test -c a --type=csv -f item,qty,size,status -o /backup/data2.json 

mongodb的备份与恢复,详细实战版

导入数据,刚才导出的数据是有列名的,所以不用指定列名,如果没有就得指定

mongoimport --port 27017 --authenticationDatabase admin -d dbcsv -c datacsv --type=csv --headerline --file /backup/data2.json 

mongodb的备份与恢复,详细实战版

查看恢复的数据

mongodb的备份与恢复,详细实战版

可以看到数据也恢复了

不同格式的数据导入可能会不一样,可以调整好后再选择合适的方法导入

3.异构平台迁移案例(mysql–>mongodb)

 

先查看我们mysql中的数据和表结构,因为等下要用到列名

mongodb的备份与恢复,详细实战版

然后查看mysql可以导出数据的目录,然后将数据导出到那个目录里

mongodb的备份与恢复,详细实战版

成功将数据从mysql导出来以后,就可以导入到mongodb里了,这时候要记得我们的数据是没有列名的了,用第二种方法

mongoimport --port 27017 --authenticationDatabase admin -d mysqldb -c mysqldata --type=csv -f nid,stuname,sex --file /var/lib/mysql-files/data3.csv

mongodb的备份与恢复,详细实战版

进到mongodb查看导入的数据,可以看到是没有问题的

mongodb的备份与恢复,详细实战版

mongodump 和 mongorestore

(1)介绍:

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

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

(2)使用方法:

$ mongodump –help

参数说明:

-h:指明数据库宿主机的 IP

-u:指明数据库的用户名

-p:指明数据库的密码

-d:指明数据库的名称

-c:指明 collection 的名称

-o:指明到要导出的文件名

-q:指明导出数据的过滤条件

-j, –numParallelCollections= number of collections to dump in parallel (4 by default)

–oplog 备份的同时备份 oplog

 

(3).mongodump 和 mongorestore 基本使用

全库备份

先查看我们本来有的数据库

mongodb的备份与恢复,详细实战版

然后把所有数据库备份出来,因为”local”数据库是MongoDB的系统数据库,它包含了一些重要的集合和数据,但通常不包含用户自己创建的数据,因此mongodump默认情况下不会备份它。这是出于安全性和性能方面的考虑,以防止意外地备份和恢复系统级别的数据。

mkdir /backup
mongodump --port 27017 -o /onedb/

mongodb的备份与恢复,详细实战版

只备份某些库

mkdir /onedb
mongodump --port 27017 -d test -o /onedb/

mongodb的备份与恢复,详细实战版

压缩备份

 

mongodump --port 28017 -o /backup --gzip
mongodump --port 28017 -d test -o /backup --gzip

恢复数据库

再恢复数据的时候数据不可以存在,否则会报错无法插入,也可以用–drop 参数强制恢复

mongorestore –port 27017 -d test /backup/test/ –drop

备份好以后,先删除数据再恢复

mongodb的备份与恢复,详细实战版

然后恢复数据,显示正常

mongodb的备份与恢复,详细实战版

写到这里就差不多了

写这篇文章的时候我也有参考其他文档,如有侵权请告知删除

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/e6c7958a45.html