MongoDB整理笔记のReplica oplog

主从操作日志oplog

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

rs1:PRIMARY> use local
switched to db local
rs1:PRIMARY> show collections
oplog.rs
system.replset
rs1:PRIMARY> db.oplog.rs.find()
{ "ts" : { "t" : 1338457763000, "i" : 1 }, "h" : NumberLong(0), "op" : "n", "ns" : "", "o" : { "msg" :
"initiating set" } }
{ "ts" : { "t" : 1338459114000, "i" : 1 }, "h" : NumberLong("5493127699725549585"), "op" : "i",
"ns" : "test.c1", "o" : { "_id" : ObjectId("4fc743e9aea289af709ac6b5"), "age" : 29, "name" :
"Tony" } }
rs1:PRIMARY>

字段说明

ts: 某个操作的时间戳
   op: 操作类型,如下:
    i: insert
   d: delete
   u: update
   ns: 命名空间,也就是操作的collection name
   o: document 的内容

查看master 的oplog 元数据信息:

rs1:PRIMARY> db.printReplicationInfo()
configured oplog size: 47.6837158203125MB
log length start to end: 1351secs (0.38hrs)
oplog first event time: Thu May 31 2012 17:49:23 GMT+0800 (CST)
oplog last event time: Thu May 31 2012 18:11:54 GMT+0800 (CST)
now: Thu May 31 2012 18:21:58 GMT+0800 (CST)
rs1:PRIMARY>

configured oplog size: 配置的oplog 文件大小
   log length start to end: oplog 日志的启用时间段
   oplog first event time: 第一个事务日志的产生时间
   oplog last event time: 最后一个事务日志的产生时间

now: 现在的时间

查看slave 的同步状态

rs1:PRIMARY> db.printSlaveReplicationInfo()
source: localhost:28011
syncedTo: Thu May 31 2012 18:11:54 GMT+0800 (CST)
= 884secs ago (0.25hrs)
source: localhost:28012
syncedTo: Thu May 31 2012 18:11:54 GMT+0800 (CST)
= 884secs ago (0.25hrs)
rs1:PRIMARY>

字段说明

source: 从库的IP 及端口
   syncedTo: 目前的同步情况,延迟了多久等信息

主从配置信息

在local库中不仅有主从日志oplog集合,还有一个集合用于记录主从配置信息,即:system.replset

rs1:PRIMARY> use local
switched to db local
rs1:PRIMARY> show collections
oplog.rs
system.replset
rs1:PRIMARY> db.system.replset.find()
{ "_id" : "rs1", "version" : 1, "members" : [
{
"_id" : 0,
"host" : "localhost:28010"
},
{
"_id" : 1,
"host" : "localhost:28011"
},
{
"_id" : 2,
"host" : "localhost:28012"
}
] }
rs1:PRIMARY>

从这个集合中可以看出,Replica Sets 的配置信息,也可以在任何一个成员实例上执行rs.conf()来查看配置信息。

时间: 2024-10-25 02:24:09

MongoDB整理笔记のReplica oplog的相关文章

MongoDB整理笔记のReplica Sets

MongoDB支持在多个机器中通过异步复制达到故障转移和实现冗余.多机器中同一时刻只有一台机器是用于写操作,正因为如此,MongoDB提供了数据一致性的保障.而担当primary角色的机器,可以把读的操作分发给slave. MongoDB高可用分两种:   Master-Slave 主从复制 只需要在某一个服务启动时加上–master 参数,而另一个服务加上–slave 与–source 参数,即可实现同步.MongoDB 的最新版本已不再推荐此方案. Replica Sets 复制集 Mono

MongoDB整理笔记のReplica Sets + Sharding

MongoDB Auto-Sharding 解决了海量存储和动态扩容的问题,但离实际生产环境所需的高可靠.高可用还有些距离,所以有了"Replica Sets + Sharding"的解决方案. shard: 使用Replica Sets,确保每个数据节点都具有备份,自动容错转移,自动回复能力. config: 使用3个配置服务器,确保元数据的完整性. route: 使用3个路由进程,实现负载均衡,提高客户端接入性能. 配置Replica Sets + Sharding 架构图: 配置

MongoDB整理笔记の管理Replica Sets

一.读写分离 从库能进行查询,这样可以分担主库的大量的查询请求.   1.先向主库中插入一条测试数据 [[email protected] bin]# ./mongo --port 28010 MongoDB shell version: 1.8.1 connecting to: 127.0.0.1:28010/test rs1:PRIMARY> db.c1.insert({age:30}) db.c2rs1:PRIMARY> db.c1.find() { "_id" :

MongoDB整理笔记のCapped Collection

1.简单介绍 capped collections 是性能出色的有着固定大小的集合,以LRU(Least Recently Used 最近最少使用)规则和插入顺序进行age-out(老化移出)处理,自动维护集合中对象的插入顺序,在创建时要预先指定大小.如果空间用完,新添加的对象将会取代集合中最旧的对象. 2.功能特点 可以插入及更新,但更新不能超出collection 的大小,否则更新失败.不允许删除,但是可以调用drop() 删除集合中的所有行,但是drop 后需要显式地重建集合.在32 位机

MongoDB整理笔记の增加节点

MongoDB Replica Sets 不仅提供高可用性的解决方案,它也同时提供负载均衡的解决方案,增减Replica Sets 节点在实际应用中非常普遍,例如当应用的读压力暴增时,3 台节点的环境已不能满足需求,那么就需要增加一些节点将压力平均分配一下.   两种方式:一是通过oplog增加节点,二是通过数据库快照和oplog来增加节点 通过oplog增加节点   1.配置并启动新节点,启用28013这个端口给新的节点 [email protected] ~]# mkdir -p /data

MongoDB整理笔记の安装及配置

1.官网下载 地址:http://www.mongodb.org/downloads mongodb-linux-x86_64-2.4.9.tgz (目前为止,64位最新版本) 2.解压 切换到下载目录下,命令行输入: tar zxf mongodb-linux-x86_64-2.4.9.tgz 3.创建数据库文件夹和日志文件 命令行输入: mkdir /usr/local/mongodb/data touch /usr/local/mongodb/logs 上面两行命令代表,所有与mongod

MongoDB整理笔记のMapReduce

MongDB的MapReduce相当于MySQL中的“group by”,所以在MongoDB上使用Map/Reduce进行并行“统计”很容易. 使用MapReduce要实现两个函数Map函数和Reduce函数,Map函数调用emit(key,value),遍历collection中的所有记录,将key和value传递给Reduce函数进行处理.Map函数和Reduce函数可以使用JS来实现,可以通过db.runCommand或mapReduce命令来执行一个MapReduce操作. 示例she

MongoDB整理笔记のSharding分片

这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在sharding 的各个节点上,使用者通过简单的配置就可以很方便地构建一个分布式MongoDB 集群.MongoDB 的数据分块称为 chunk.每个 chunk 都是 Collection 中一段连续的数据记录,通常最大尺寸是 200MB,超出则生成新的数据块.要构建一个 MongoDB Sharding Cluster,需要三种角色:    Shard Server    即存储实际数据的分片,每个Shard 可以是一个mongod

MongoDB整理笔记のCRUD

添加 下面我们来建立一个test 的集合并写入一些数据.建立两个对象j 和t , 并保存到集合中去.在例子里 “>” 来表示是 shell 输入提示符    > j = { name : "mongo" };    {"name" : "mongo"}    > t = { x : 3 };    { "x" : 3 }    > db.things.save(j);    > db.things