mongodb 等待写入复制
来源:互联网 发布:电路板绘制软件 编辑:程序博客网 时间:2024/06/14 17:04
如果希望不管发生什么都将写入操作保存到副本集中,那么必须要确保写入操作被同步到副本集的"大多数"
可以使用getLastError命令来检查写入是否成功,有一个特殊的关键字"w"就是"majority"
rs0:PRIMARY> db.runCommand({"getLastError":1,"w":"majority"})
{
"lastOp" : {
"ts" : Timestamp(1465822911, 1),
"t" : NumberLong(7)
},
"connectionId" : 1,
"n" : 1,
"syncMillis" : 0,
"wtime" : 0,
"writtenTo" : [
"mongodb2:27017",
"mongodb3:27017"
],
"err" : null,
"ok" : 1
}
当使用了w参数后,就会出现writtenTo字段.如果secondary节点挂了,这时候主节点无法将这个操作复制到副本集中,那么getLastError会一直等待下去.因此要给wtimeout设置一个等待时间.例如这里设置等待1s:
rs0:PRIMARY> db.runCommand({"getLastError":1,"w":"majority","wtimeout":1000})
{
"lastOp" : {
"ts" : Timestamp(1465823080, 1),
"t" : NumberLong(7)
},
"connectionId" : 1,
"n" : 1,
"syncMillis" : 0,
"wtime" : 0,
"writtenTo" : [
"mongodb2:27017",
"mongodb3:27017"
],
"err" : null,
"ok" : 1
}
"w"还可以是其它值,mongodb允许w为任意整数,例如w为2表示写操作复制到两个成员,否则会一直等待(包括主节点).
如果有两个个数据中心,想将数据至少复制到每个数据中心的一台机器上,可以使用对数据中心成员分类,使用config中的tags字段
第一.先将每个数据中心的成员打上tags
var config=rs.config()
config.members[0].tags={"dc":"east"}
config.members[1].tags={"dc":"east"}
config.members[2].tags={"dc":"west"}
config.members[3].tags={"dc":"west"}
tags是一个数组,"dc"是标识,"east"和"west"是值,这些都可以自己定义
第二.创建规则,通过配置getLastErrorMode字段实现,每条规则的形式为:"name":{"key":number}.其中name是规则的名字,自己定,key就是上面tags的标识,number表示复制操作至少复制到多少个分组上,每个分组内至少一台机器上.
config.settings={}
config.settings.getLastErrorModes=[{"eachDC":{"dc":2}}]
rs.reconfig(config)
上面的意思就是创建了一个规则叫eachDC,保证dc分组中至少复制到2个分组中,每个分组中至少一台主机上,由于上面我们dc只有两个分组分别为"east"和"west",那么这就实现了两个中心至少一台机器保证复制成功.
最后就可以使用getLastError来对应这条规则:
db.runCommand({"getLastError":1,"w":"eachDC","wtimeout":1000})
0 0
- mongodb 等待写入复制
- MongoDB 复制
- 【MongoDB】复制
- MongoDb复制-主从复制
- MongoDB写入windows service
- MOngoDB写入图片
- (转)mongodb写入安全级别
- 【MONGODB】验证MONGODB 主从复制
- MongoDB 主从复制配置
- mongodb- 主从复制
- mongodb复制集搭建
- mongodb主从复制
- mongodb主从复制
- MongoDB主从复制
- mongodb主从复制配置
- MongoDB主从复制
- mongodb主从复制
- MongoDB 主从复制
- unity直接播放mp3
- scala学习五:scala函数式编程
- TI CC3200 SDK开发详解——SDK目录结构详解
- 第三方平台、服务器笔记
- phalcon在win10下的安装
- mongodb 等待写入复制
- HDU2024
- oracle创建库和表
- 实战Walker之闪屏界面的实现分析
- Python中的函数
- Spring常用注解
- UML建模详解(9)—Rose将C++代码自动生成UML类图详解
- Windows下单机安装Spark开发环境
- 制作简单的太阳系