mongo笔记之备份

1.停掉服务器 然后备份

Mongodb将所有数据都存放在"数据目录(data/db)"下,启动mongoDB时可以用–dbpath指定我们自己设置的数据存储目录
备份: 只需要创建数据存储目录的副本就可以了,直接copy一份。
恢复: 在MongoDB启动时用 --dbpath指定数据存储目录副本的位置。

2.不停服务器 直接备份

2.1使用mongodump和mongorestore

mongostore是能获取mongodump的输出结果,并将备份的数据插入到运行的MongoDB实例中
使用示例:
备份mongodump -d test -o backup
这里写图片描述
其中:-d 指定了要备份的数据库
-o 指定了备份的位置 此处表示 备份test数据库到与当前mongodump命令同一位置backup目录下
这里写图片描述
恢复mongorestore -d foo --drop backup/test
这里写图片描述
其中:-d 指定了要恢复的数据库,可以将备份的数据库恢复到与原来不同的数据库中,这里为foo
-drop 表示在恢复前删除集合foo(若foo已经存在).否则,数据就出现与现有集合数据合并,可能会覆盖一些文档.

优势:不用停掉服务器
不足之处:1.不是实时的快照;
2.在备份过程中会执行查询,对其他的业务查询会有性能上的影响

2.2使用fsync和锁

原理:
fsync命令会强制服务器将所有缓冲区写入磁盘,还可以选择上锁阻止对数据库的进一步写入,以保证数据的实时性。直到释放锁为止
使用:

use admin 
db.runCommand({fsync:1,lock:1});

至此,数据目录的数据就是一致的,且为数据的实时快照。因为上了写入锁,可以保证安全的将数据目录副本用作备份。

db.$cmd.sys.unlock.findOne();
db.currentOp();

这里写图片描述
运行db.currentOp(); 是为了确保已经解锁了.

优势:不用停掉服务器
是数据库的时候快照
不足之处:因为备份过程对数据库上了锁,所以会阻塞写入操作。
3.从属备份
当以复制(副本集)的方式运行MongoDB时,前面提到的备份技术就不仅能用在主服务器上,也可以用在从服务器上;
从服务器的数据几乎和主服务器同步;

在从服务器上备份是MongoDB推荐的备份方式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值