MongoDB的replica set架构是通过一个日志来存储写操作的,这个日志就叫做 oplog 。oplog.rs 是一个固定长度的 Capped Collection,它存在于local数据库中,用于记录replicaSets操作日志。在默认情况下,对于64位的MongoDB,oplog是比较大的,可以达到5%的磁盘空间,oplog的大小是可以通过mongod的参数 “ -oplogSize”来改变oplog的日志大小。

oplog内容样例:

> use local

> show collections

> db.oplog.rs.find()

新版有个问题,无法再像旧版一样直接操作了,必须先添加一个管理员用户,之后切换到管理员身份,再进行操作,具体可以见日志。

rs1:PRIMARY> show dbsshow dbs

2016-07-22T17:44:25.491+0800 E QUERY    [thread1] Error: listDatabases failed:{

"ok" : 0,

"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",

"code" : 13

} :

_getErrorWithCode@src/mongo/shell/utils.js:25:13

Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1

shellHelper.show@src/mongo/shell/utils.js:761:19

shellHelper@src/mongo/shell/utils.js:651:15

@(shellhelp2):1:1

rs1:PRIMARY> use localuse local

switched to db local

rs1:PRIMARY> show collectionsshow collections

2016-07-22T17:44:40.317+0800 E QUERY    [thread1] Error: listCollections failed: {

"ok" : 0,

"errmsg" : "not authorized on local to execute command { listCollections: 1.0, filter: {} }",

"code" : 13

} :

_getErrorWithCode@src/mongo/shell/utils.js:25:13

DB.prototype._getCollectionInfosCommand@src/mongo/shell/db.js:773:1

DB.prototype.getCollectionInfos@src/mongo/shell/db.js:785:19

DB.prototype.getCollectionNames@src/mongo/shell/db.js:796:16

shellHelper.show@src/mongo/shell/utils.js:754:9

shellHelper@src/mongo/shell/utils.js:651:15

@(shellhelp2):1:1

rs1:PRIMARY> use adminuse admin

switched to db admin

rs1:PRIMARY> db.createUser(db.createUser(

...       {      {

...         user: "bbb",        user: "bbb",

...         pwd: "bbb",        pwd: "bbb",

...         roles: [ { role: "root", db: "admin" } ]        roles: [ { role: "root", db: "admin" } ]

...       }      }

...     )    )

Successfully added user: {

"user" : "bbb",

"roles" : [

{

"role" : "root",

"db" : "admin"

}

]

}

rs1:PRIMARY> show dbsshow dbs

2016-07-22T17:45:54.756+0800 E QUERY    [thread1] Error: listDatabases failed:{

"ok" : 0,

"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",

"code" : 13

} :

_getErrorWithCode@src/mongo/shell/utils.js:25:13

Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1

shellHelper.show@src/mongo/shell/utils.js:761:19

shellHelper@src/mongo/shell/utils.js:651:15

@(shellhelp2):1:1

rs1:PRIMARY> db.auth('bbb','bbb')db.auth('bbb','bbb')//此处认证过了才可以操作

1

rs1:PRIMARY> use localuse local

switched to db local

rs1:PRIMARY> show collectionsshow collections

me

oplog.rs

replset.election

startup_log

system.replset

rs1:PRIMARY> db.oplog.rs.find()db.oplog.rs.find()

{ "ts" : Timestamp(1469180416, 1), "h" : NumberLong("6313428569778261950"), "v" : 2, "op" : "n", "ns" : "", "o" : { "msg" : "initiating set" } }

{ "ts" : Timestamp(1469180428, 2), "t" : NumberLong(1), "h" : NumberLong("2174888517165095400"), "v" : 2, "op" : "n", "ns" : "", "o" : { "msg" : "new primary" } }

{ "ts" : Timestamp(1469180731, 1), "t" : NumberLong(1), "h" : NumberLong("-1515174104405674576"), "v" : 2, "op" : "c", "ns" : "admin.$cmd", "o" : { "create" : "system.version" } }

{ "ts" : Timestamp(1469180731, 2), "t" : NumberLong(1), "h" : NumberLong("7948077691112953460"), "v" : 2, "op" : "i", "ns" : "admin.system.version", "o" : { "_id" : "authSchema", "currentVersion" : 5 } }

{ "ts" : Timestamp(1469180731, 3), "t" : NumberLong(1), "h" : NumberLong("-9003778602149648332"), "v" : 2, "op" : "c", "ns" : "admin.$cmd", "o" : { "create" : "system.users" } }

{ "ts" : Timestamp(1469180731, 4), "t" : NumberLong(1), "h" : NumberLong("-5105507245190417325"), "v" : 2, "op" : "i", "ns" : "admin.system.users", "o" : { "_id" : "admin.bbb", "user" : "bbb", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "9hPZ67Nn1d9ZFSKfxfPmHw==", "storedKey" : "wbVBdAFG3tKPU0QwgoqA93XaSFY=", "serverKey" : "0FXoMrw01NIiYr8HNZ9p5mGhK8k=" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] } }

rs1:PRIMARY>

查看master的oplog元数据信息:

> db.printReplicationInfo()

查看salve的同步状态:

> db.printSlaveReplicationInfo()

rs1:PRIMARY> db.printReplicationInfo()db.printReplicationInfo()

configured oplog size:   2124.869140625MB

log length start to end: 315secs (0.09hrs)

oplog first event time:  Fri Jul 22 2016 17:40:16 GMT+0800 (CST)

oplog last event time:   Fri Jul 22 2016 17:45:31 GMT+0800 (CST)

now:                     Fri Jul 22 2016 17:52:59 GMT+0800 (CST)

rs1:PRIMARY>  db.printSlaveReplicationInfo() db.printSlaveReplicationInfo()

source: localhost:28011

syncedTo: Fri Jul 22 2016 17:45:31 GMT+0800 (CST)

0 secs (0 hrs) behind the primary

source: localhost:28012

syncedTo: Fri Jul 22 2016 17:45:31 GMT+0800 (CST)

0 secs (0 hrs) behind the primary

rs1:PRIMARY>

mongodb复制集里查看主从操作日志oplog的更多相关文章

  1. MongoDB复制集的工作原理介绍(二)

    复制集工作原理 1)数据复制原理 开启复制集后,主节点会在 local 库下生成一个集合叫 oplog.rs,这是一个有限集合,也就是大小是固定的.其中记录的是整个mongod实例一段时间内数据库的所 ...

  2. MongoDB复制集概念架构浅析

    一.复制集的作用 (1) 高可用 防止设备(服务器.网络)故障. 提供自动failover 功能. 技术来保证数 (2) 灾难恢复 当发生故障时,可以从其他节点恢复. (3) 功能隔离 用于分析.报表 ...

  3. mongodb复制集Replica Set使用简介

    MongoDB高可用 对于MongoDB,可以支持使用单机模式提供服务,但是在实际的生产环境中,单机模式将面临很大的风险,一旦这个数据库服务出现问题,就会导致线上的服务出现错误甚至崩溃.因此,在实际生 ...

  4. MongoDb复制集实现故障转移,读写分离

    前言 数据库技术是信息系统的一个核心技术,发展很快,各种功能类型数据库层出不穷,之前工作中使用过关系型数据库(mysql.oracle等).面相对象数据库(db4o).key-value存储(Memc ...

  5. MongoDB 复制集 (一) 成员介绍

       一 MongoDB 复制集简介          MongoDB的复制机制主要分为两种:          Master-Slave    (主从复制)      这个已经不建议使用       ...

  6. MongoDB复制集之将现有的单节点服务器转换为复制集

    服务器情况:   现有的单节点 Primary     192.168.126.9:27017   新增的节点    Secondry  192.168.126.8:27017    仲裁节点     ...

  7. MongoDB复制集

    1.1 MongoDB复制集简介 一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合.复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础. 1.1.1 复制集的目的 ...

  8. MongoDB 复制集节点增加移除及节点属性配置

    复制集(replica Set)或者副本集是MongoDB的核心高可用特性之一,它基于主节点的oplog日志持续传送到辅助节点,并重放得以实现主从节点一致.再结合心跳机制,当感知到主节点不可访问或宕机 ...

  9. MongoDB实战指南(七):MongoDB复制集之复制集工作机制

    http://www.cnblogs.com/longshiyVip/p/5097336.html 概述了复制集,整体上对复制集有了个概念,但是复制集最重要的功能之——自动故障转移是怎么实现的呢?数据 ...

随机推荐

  1. Resistance

    题意: 给出一个由n个节点和m个二元电阻元件组成的电路,求问节点1到节点n的等效电阻. 解法: 应用电子电路分析中的基尔霍夫定律,对于每一个点有流量平衡,得 对于点$x$有 $$I_{出} + \su ...

  2. nohup、&、tail 在服务启动中的用法

    在利用命令行启动各类服务的时候,控制台一般会显示相关日志信息,如果weblogic的启动,我们可能有这样需求:启动服务器后即使关闭控制服务器依然运行 ,日志不但可以在控制台显示同时也记录里后台日志文件 ...

  3. 09.客户端集成IdentityServer

    09.客户端集成IdentityServer 新建API的项目 dotnet new webapi --name ClientCredentialApi 在我们上一节课的代码IdentityServe ...

  4. .NET Core 3.0之深入源码理解Configuration(三)

      写在前面 上一篇文章讨论了文件型配置的基本内容,本篇内容讨论JSON型配置的实现方式,理解了这一种配置类型的实现方式,那么其他类型的配置实现方式基本可以触类旁通.看过了上一篇文章的朋友,应该看得出 ...

  5. 51nod - 1659 - 数方块 - 简单数学

    https://www.51nod.com/Challenge/Problem.html#!#problemId=1659 随便弄了一下发现公式,然后从cheatsheet抄一抄平方和公式,发现可以提 ...

  6. CSA Round #53 (Div. 2 only) Histogram Partition(模拟)

    传送门 题意 给出一个数组A,你有一个数组B(一开始全为0),询问多少次操作后B转化为A 一次操作:选择一段区间,加上某个正整数 分析 构建一个栈, 输入一个数,若当前栈空或栈顶元素比输入小,则加入栈 ...

  7. lightoj 1422【区间DP·分类区间首元素的情况】

    题意: 给你n天分别要穿的衣服种类,可以套着穿, 一旦脱下来就不能再穿,求n天至少要几件. 思路: 区间DP dp[i][j]代表i到j需要至少几件衣服 第i天的衣服在第i天穿上了,dp[i][j]= ...

  8. 各种移动GPU压缩纹理的使用方法

    本文系原创整理,欢迎转载,请标明链接 http://www.cnblogs.com/luming1979 有问题欢迎加qq群讨论:366239605 介绍了各种移动设备所使用的GPU,以及各个GPU所 ...

  9. Node.js 使用Stream的pipe(管道)方法实现文件复制

    Stream模块有一个pipe方法,可以将两个流串起来,实现所有的数据自动从Readable流进入Writable流 "use strict"; const fs = requir ...

  10. C 语言实例 - 连接字符串

    C 语言实例 - 连接字符串 C 语言实例 C 语言实例 使用 strcat() 连接两个字符串. 实例 #include <stdio.h> int main() { ], s2[], ...