Mongodb的数据备份与删除

Mongodb的数据备份

对于数据备份官方文档给出了3种方案:1、通过操作系统自带的文件系统进行snapshot备份;2、通过dump;3、通过export。第三种我并不建议,因为很慢。第一种没有尝试过,看起来挺复杂;第二种用的较多。通常使用dump按照时间一段段导出数据,否则数据量大的话dump会卡死。


Mongodb的数据删除

从2.2版本开始,提供了ttl索引自动数据删除的功能。该功能还算实用,比客户端delete数据性能强多了。具体而言,需要先建立ttl索引,即给每一条数据添加一个或多个data类型的字段,然后对该字段建立索引(因为mongodb是schema free,所以不用提前建立字段)。ttl索引有两种删除数据的方式,一种是在ttl字段的时间点后多少秒进行数据删除,另一种是在到达某个固定时间时删除。在我们的场景中使用的是前一种,具体操作如下:


db.docinfo.ensureIndex( { "ttlCreate": 1 },{ expireAfterSeconds: 1444620 },{"background":true})


数据库中已有的数据量 是从12月11日下午2014/12/11 17:43:0开始,设置过期数据为 2014/12/12 17:43:0 (ttl过期时间为 从操作当天11点开始;2014-12-29 11:00:00 与 2014/12/12 17:43:0 的时间差的秒数为   1444620)。这里的background为后台建立索引,可以一边建立索引,一边删除数据,合适已有数据的情况下;也可以使用{"foreground":true},则先建立索引,完成后再删除数据。


数据写入格式例子:

db.docinfo.insert( {
   "ttlCreate": new Date(),  // or new Date('July 22, 2013 14:00:00')
   "id": 2,
   "user": "michael"
} )

从实际性能来看,一天可以删除400万条的数据(在读写查混合操作的情况下)。另外,如果执行count()语句对该删除操作有较大影响。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值