请通过浏览器功能收藏网页

mongoDb的数据库备份与还原,数据导出及还原 mongodb

发布时间:2018-09-11 15:27:11  作者:本站编辑  来源:本站原创  浏览次数:
我有话说 | 分享 |
www.javainfo.com.cn 上干货 欢迎收藏


复制文件系统

冷备份:就是把mongod停了,然后拷贝相应的数据文件,最好是把一个数据库相应的数据文件夹完整的拷出,然后恢复的时候完整的拷入。

热备份:就是mongod在运行中,可以使用db.fsyncLock();来锁定数据库,然后进行数据文件的拷贝,拷贝完成后,使用db.fsyncUnLock();解除锁定。恢复的时候,需要把mongod停了,然后把文件拷入


使用mongodump来备份

     这个方式有些缺点,比如速度慢,处理副本集的时候也很容易出问题。但对于单独的数据库和集合还是一个好选择的。


1:如果mongod在运行,只要指定mongod的端口即可:mongodump --port 20001,会在当前路下创建dump文件夹,里面存放dump的数据库,真正的数据在.bson文件里。

    也可以-h指定主机和端口,-d指定数据库名字,-o指定输出的路经


2:如果mongod没有运行,使用--dbpath指定数据目录也可以


 使用mongorestore来恢复

./mongorestore --port 20000 --drop dump/

     --drop指定要删除服务器上的数据, dump/是存放备份数据的文件夹

     -h指定主机和端口,-d指定数据库名字,-directoryperdb指定备份文件所在的位置,也可不配置这个,直接指定就好了

 

对副本集进行备份

建议对备份节点进行备份,最好是采用复制文件系统的方式, 停掉副本集 拷贝数据文件夹。

对分片集群进行备份

由于不可能对集群在某一时间点的完整状态快照,因此不太可能对正在运行的分片集群进行“完美的”备份。

    因此对于分片集群进行备份恢复,更关注单个分片或者副本集的备份。

    注意:要进行分片集备份,需要先关闭均衡器。



使用mongoexport来导出数据, 导出的数据文件就是 BJSON 串

./mongoexport -d mydb -c users -o ../databak/mydb.bak

1:-d :指定要导出的数据库

2:-c :指定要导出的集合

3:-o :指定输出的数据文件

还可以指定导出成csv格式的,比如:

./mongoexport -d mydb -c users -csv -f userId,name -o ../databak/mydb.csv

1:-csv :指定要导出成csv格式

2:-f :指定要导出的列

使用mongoimport来导入数据,示例

./mongoimport -d mydb -c users --file ../databak/mydb.bak

1:--file :用来指定导入的备份文件

如果要导入csv格式的话,如下:

./mongoimport -d mydb -c users --type csv --headerline --file ../databak/mydb.csv



如有疑问 请留言 欢迎提供建议
  • 0

    开心

  • 0

    板砖

  • 0

    感动

  • 0

    有用

  • 0

    疑问

  • 0

    难过

  • 0

    无聊

  • 0

    震惊

评论已有 0