MongoDB(五) oplog日志解释及实战恢复(3.6版本)

MongoDB oplog日志解释及实战恢复(3.6版本)

MongoDB-oplog日志(介绍):

注意:这是replica set或者master/slave模式专用

oplog介绍:

在replica set中oplog是一个定容集合(capped collection),它的默认大小是磁盘空间的5%(可以通过–oplogSizeMB参数修改),位于local库的db.oplog.rs,有兴趣可以看看里面到底有些什么内容。

其中记录的是整个mongod实例一段时间内数据库的所有变更(插入/更新/删除)操作。当空间用完时新记录自动覆盖最老的记录。

其覆盖范围被称作oplog时间窗口。需要注意的是,因为oplog是一个定容集合,所以时间窗口能覆盖的范围会因为你单位时间内的更新次数不同而变化。

查看当前的oplog时间窗口预计值:(复制集-主节点)

rs.printReplicationInfo()
MongoDB-oplog日志(实战恢复):

oplog存放在local库,只能够在本地访问,mongos节点无法查看与操作

创建备份目录:(mongodb真实数据节点)
mkdir /tmp/backup

全量备份数据:(mongodb真实数据节点)

mongodump -h 10.0.0.10 --port 28017 --oplog -o /tmp/backup

img

mongodb数据操作:(mongodb真实数据节点)

mongo  10.0.0.10:28017/admin

use world
db.city1.insert({id:1})
db.city2.insert({id:2})
db.city.drop()
show tables;

备份本地oplog.rs表:(mongodb真实数据节点)

mongodump -h 10.0.0.10 --port 28017 -d local -c oplog.rs  -o /tmp/backup/

img

截取oplog并恢复到drop之前的位置:(mongodb真实数据节点)
mongo 10.0.0.10:28017/admin

#查看操作为change的oplog
use local
db.oplog.rs.find({op:"c"}).pretty();

it  #如果查询change操作日志太多,it 可以翻页
---------------------------------------------------------
#找到drop city表的Timestamp值
{
    "ts" : Timestamp(1551436566, 2),    <-------------------#Timestamp值(注意!!!)
    "t" : NumberLong(12),
    "h" : NumberLong("1619926712190147662"),
    "v" : 2,
    "op" : "c",
    "ns" : "world.$cmd",
    "ui" : UUID("45f54a7b-4d6c-4a53-bfad-e685645791b6"),
    "wall" : ISODate("2019-03-01T02:36:09.239Z"),
    "o" : {
        "drop" : "city"
    }
}
---------------------------------------------------------
cp /tmp/backup/local/oplog.rs.bson /tmp/backup/oplog.bson
rm -rf /tmp/backup/local/

恢复:(mongodb真实数据节点)

#查看oplog表找到的Timestamp值是逗号分隔,在恢复时手动修改为“冒号”
mongorestore -h 10.0.0.10 --port 28017 --oplogReplay --oplogLimit "1551436566:2" --drop /tmp/backup/

img

mongo 10.0.0.10:28017/admin

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在输入中…………

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值