注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oracle、MySQL资料及经验

.

 
 
 

日志

 
 

MongoDB replica sets 复制集  

2016-07-07 16:23:05|  分类: hadoop与nosql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
主是通过选举产生的,主节点传输心跳信息息,主节点日志为oplog,异步复制,同MySQL主从复制。
数字越大,优先级越高。不推荐使用主从架构,推荐用复制集。
replSet 复制集名称,oplogsize 默认为磁盘空间的5%,只能在创建时修改,以后再改不生效。
fastsync 快速同步。
所有节点,事先时间同步。
配置文件mongod.conf 中指定replSet=rep001和bind_ip=10.1.5.112
然后登录主库 mongo 10.1.5.112:27018/admin
> rs.help()
        rs.status()                                { replSetGetStatus : 1 } checks repl set status
        rs.initiate()                              { replSetInitiate : null } initiates set with default settings
        rs.initiate(cfg)                           { replSetInitiate : cfg } initiates set with configuration cfg
        rs.conf()                                  get the current configuration object from local.system.replset
        rs.reconfig(cfg)                           updates the configuration of a running replica set with cfg (disconnects)
        rs.add(hostportstr)                        add a new member to the set with default attributes (disconnects)
        rs.add(membercfgobj)                       add a new member to the set with extra attributes (disconnects)
        rs.addArb(hostportstr)                     add a new member which is arbiterOnly:true (disconnects)
        rs.stepDown([stepdownSecs, catchUpSecs])   step down as primary (disconnects)
        rs.syncFrom(hostportstr)                   make a secondary sync from the given member
        rs.freeze(secs)                            make a node ineligible to become primary for the time specified
        rs.remove(hostportstr)                     remove a host from the replica set (disconnects)
        rs.slaveOk()                               allow queries on secondary nodes

        rs.printReplicationInfo()                  check oplog size and time range
        rs.printSlaveReplicationInfo()             check replica set members and replication lag
        db.isMaster()                              check who is primary

        reconfiguration helpers disconnect from the database so the shell will display
        an error, even if the command succeeds.

> rs.initiate()          --初始化
{
        "info2" : "no configuration specified. Using a default configuration for the set",
        "me" : "biee.localdomain:27017",
        "ok" : 1
}
rep001:PRIMARY> rs.status()             --查看状态
{
        "set" : "rep001",
        "date" : ISODate("2016-06-29T03:31:32.529Z"),
        "myState" : 1,
        "term" : NumberLong(1),
        "heartbeatIntervalMillis" : NumberLong(2000),
        "members" : [
                {
                        "_id" : 0,
                        "name" : "biee.localdomain:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 2076,
                        "optime" : {
                                "ts" : Timestamp(1467171044, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2016-06-29T03:30:44Z"),
                        "infoMessage" : "could not find member to sync from",
                        "electionTime" : Timestamp(1467171043, 2),
                        "electionDate" : ISODate("2016-06-29T03:30:43Z"),
                        "configVersion" : 1,
                        "self" : true
                }
        ],
        "ok" : 1
}
rep001:PRIMARY> db.isMaster()     --是否主节点
{
        "hosts" : [
                "biee.localdomain:27017"
        ],
        "setName" : "rep001",
        "setVersion" : 1,
        "ismaster" : true,
        "secondary" : false,
        "primary" : "biee.localdomain:27017",
        "me" : "biee.localdomain:27017",
        "electionId" : ObjectId("7fffffff0000000000000001"),
        "maxBsonObjectSize" : 16777216,
        "maxMessageSizeBytes" : 48000000,
        "maxWriteBatchSize" : 1000,
        "localTime" : ISODate("2016-06-29T03:35:41.696Z"),
        "maxWireVersion" : 4,
        "minWireVersion" : 0,
        "ok" : 1
}

rep001:PRIMARY> rs.add("10.1.5.117:27018")        --添加节点
{ "ok" : 1 }
rep001:PRIMARY> rs.add("10.1.5.123")
{ "ok" : 1 }
rep001:PRIMARY> rs.status()
{
        "set" : "rep001",
        "date" : ISODate("2016-06-29T03:37:59.395Z"),
        "myState" : 1,
        "term" : NumberLong(1),
        "heartbeatIntervalMillis" : NumberLong(2000),
        "members" : [
                {
                        "_id" : 0,
                        "name" : "biee.localdomain:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 2463,
                        "optime" : {
                                "ts" : Timestamp(1467171471, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2016-06-29T03:37:51Z"),
                        "electionTime" : Timestamp(1467171043, 2),
                        "electionDate" : ISODate("2016-06-29T03:30:43Z"),
                        "configVersion" : 3,
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "10.1.5.117:27018",
                        "health" : 1,
                        "state" : 0,
                        "stateStr" : "STARTUP",
                        "uptime" : 14,
                        "optime" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                        "lastHeartbeat" : ISODate("2016-06-29T03:37:57.745Z"),
                        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                        "pingMs" : NumberLong(0),
                        "configVersion" : -2
                },
                {
                        "_id" : 2,
                        "name" : "10.1.5.123:27017",
                        "health" : 1,
                        "state" : 0,
                        "stateStr" : "STARTUP",
                        "uptime" : 7,
                        "optime" : {
                                "ts" : Timestamp(0, 0),
                                "t" : NumberLong(-1)
                        },
                        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                        "lastHeartbeat" : ISODate("2016-06-29T03:37:57.745Z"),
                        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                        "pingMs" : NumberLong(0),
                        "configVersion" : -2
                }
        ],
        "ok" : 1
}

rep001:SECONDARY> rs.slaveOk()                              --从节点执行后,才能查询 allow queries on secondary nodes


第二种配置方式:
config = {      "id" : "rep001",
       "members" : [
                {
                        "_id" : 0,
                        "host" :"10.1.5.112:27017"
                },
                {
                        "_id" : 1,
                        "host" :"10.1.5.117:27018"
                },
                {
                        "_id" : 2,
                        "host" :"10.1.5.123:27017"
                }
       ]
}

--查看复制集成员

config.members

--进行复制集初始化

rs.initiate(config)

{ "ok" : 1 }


==========================================================
主节点关掉后,其他节点就会成为主节点。
rs.conf()   --显示配置信息
rep001:PRIMARY> rs.conf()
{
        "_id" : "rep001",
        "version" : 3,
        "protocolVersion" : NumberLong(1),
        "members" : [
                {
                        "_id" : 0,
                        "host" : "10.1.5.112:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
                        "_id" : 1,
                        "host" : "10.1.5.123:27017",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                },
                {
                        "_id" : 2,
                        "host" : "10.1.5.117:27018",
                        "arbiterOnly" : false,
                        "buildIndexes" : true,
                        "hidden" : false,
                        "priority" : 1,
                        "tags" : {

                        },
                        "slaveDelay" : NumberLong(0),
                        "votes" : 1
                }
        ],
        "settings" : {
                "chainingAllowed" : true,
                "heartbeatIntervalMillis" : 2000,
                "heartbeatTimeoutSecs" : 10,
                "electionTimeoutMillis" : 10000,
                "getLastErrorModes" : {

                },
                "getLastErrorDefaults" : {
                        "w" : 1,
                        "wtimeout" : 0
                },
                "replicaSetId" : ObjectId("577477f4440cd2181f51d15a")
        }
}


在主节点修改配置信息:
config1=rs.conf() 
config1.members[0].priority=2  --指定优先级,该值越高,则越能成为主节点。
rs.reconfig(config1)  --重新加载配置
rs.conf()    --可看到优先级
优先级高的上线后,无法成为主节点,但过会就自动触发。
rs.addArb(hostportstr)   --选举节点,不能成为主节点和从节点

可以配置从节点延时多少时间,配置方法同指定优先级。

删除节点:
rep001:PRIMARY> rs.remove("10.1.5.117:27018")
{ "ok" : 1 }




  评论这张
 
阅读(74)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017