您的位置:首页 > 运维架构 > 网站架构

Replica sets架构复制集(3)详…

2014-07-25 16:15 190 查看
准备增加一个端口为28013的端口新节点,见代码

[root@dota ~]# mkdir -p /data/data/r3

[root@dota ~]# echo "this is rs1 super secret key" >
/data/key/r3

[root@dota ~]# chmod 600 /data/key/r3

[root@dota ~]# /usr/local/mongodb/bin/mongod --replSet rs1
--keyFile /data/key/r3 --fork --port 28013 --dbpath /data/data/r3
--logpath=/data/log/r3.log --logappend

[root@dota ~]# forked process: 3965

all output going to: /data/log/r3.log

添加新节点到现有的replica sets中

[root@dota ~]# /usr/local/mongodb/bin/mongo --port 28010

MongoDB shell version: 2.0.4

connecting to: 127.0.0.1:28010/test

PRIMARY> rs.add("localhost:28013")

{ "ok" : 1 }

状态1,执行初始化,代码如下

PRIMARY> rs.status()

{

"set" : "rs1",

"date" : ISODate("2014-07-25T06:35:44Z"),

"myState" : 1,

"syncingTo" : "localhost:28012",

"members" : [

{

"_id" :
0,

"name" :
"localhost:28010",

"health" :
1,

"state" :
1,

"stateStr" :
"PRIMARY",

"optime" :
{

"t"
: 1406270123000,

"i"
: 1

},

"optimeDate"
: ISODate("2014-07-25T06:35:23Z"),

"self" :
true

},

{

"_id" :
1,

"name" :
"localhost:28011",

"health" :
1,

"state" :
2,

"stateStr" :
"SECONDARY",

"uptime" :
11420,

"optime" :
{

"t"
: 1406270123000,

"i"
: 1

},

"optimeDate"
: ISODate("2014-07-25T06:35:23Z"),

"lastHeartbeat"
: ISODate("2014-07-25T06:35:43Z"),

"pingMs" :
0

},

{

"_id" :
2,

"name" :
"localhost:28012",

"health" :
1,

"state" :
2,

"stateStr" :
"SECONDARY",

"uptime" :
417,

"optime" :
{

"t"
: 1406270123000,

"i"
: 1

},

"optimeDate"
: ISODate("2014-07-25T06:35:23Z"),

"lastHeartbeat"
: ISODate("2014-07-25T06:35:43Z"),

"pingMs" :
0

},

{

"_id" :
3,

"name" :
"localhost:28013",

"health" :
1,

"state" :
3,

"stateStr"
: "RECOVERING",

"uptime" :
21,

"optime" :
{

"t"
: 0,

"i"
: 0

},

"optimeDate"
: ISODate("1970-01-01T00:00:00Z"),

"lastHeartbeat"
: ISODate("2014-07-25T06:35:43Z"),

"pingMs" :
20,

"errmsg" : "initial sync need a member to be primary or
secondary to do our initial
sync"
}

],

"ok" : 1

}

上面可以看到,这个节点还不可用

状态2 这些数据同步,代码如下

PRIMARY> rs.status()

{

"set" : "rs1",

"date" : ISODate("2014-07-25T06:37:31Z"),

"myState" : 1,

"syncingTo" : "localhost:28012",

"members" : [

{

"_id" :
0,

"name" :
"localhost:28010",

"health" :
1,

"state" :
1,

"stateStr" :
"PRIMARY",

"optime" :
{

"t"
: 1406270123000,

"i"
: 1

},

"optimeDate"
: ISODate("2014-07-25T06:35:23Z"),

"self" :
true

},

{

"_id" :
1,

"name" :
"localhost:28011",

"health" :
1,

"state" :
2,

"stateStr" :
"SECONDARY",

"uptime" :
11527,

"optime" :
{

"t"
: 1406270123000,

"i"
: 1

},

"optimeDate"
: ISODate("2014-07-25T06:35:23Z"),

"lastHeartbeat"
: ISODate("2014-07-25T06:37:29Z"),

"pingMs" :
0

},

{

"_id" :
2,

"name" :
"localhost:28012",

"health" :
1,

"state" :
2,

"stateStr" :
"SECONDARY",

"uptime" :
524,

"optime" :
{

"t"
: 1406270123000,

"i"
: 1

},

"optimeDate"
: ISODate("2014-07-25T06:35:23Z"),

"lastHeartbeat"
: ISODate("2014-07-25T06:37:29Z"),

"pingMs" :
0

},

{

"_id" :
3,

"name" :
"localhost:28013",

"health" :
1,

"state" :
3,

"stateStr" : "RECOVERING",

"uptime" :
128,

"optime" :
{

"t"
: 0,

"i"
: 0

},

"optimeDate"
: ISODate("1970-01-01T00:00:00Z"),

"lastHeartbeat"
: ISODate("2014-07-25T06:37:29Z"),

"pingMs" :
0,

"errmsg" : "initial
sync couldn't connect to localhost:28012"

}

],

"ok" : 1

}

上面可以看到初始化还没有完成,新建的节点还是不能用。与28012初始化失败。

删除节点:

只需要执行

PRIMARY> rs.remove("localhost:28013")

PRIMARY> rs.remove("localhost:28014")

具体见代码如下

PRIMARY> rs.remove("localhost:28014")

Fri Jul 25 15:28:32 DBClientCursor::init call() failed

Fri Jul 25 15:28:32 query failed : admin.$cmd { replSetReconfig: {
_id: "rs1", version: 4, members: [ { _id: 0, host:
"localhost:28010" }, { _id: 1, host: "localhost:28011" }, { _id: 2,
host: "localhost:28012" }, { _id: 3, host: "localhost:28013" } ] }
} to: 127.0.0.1:28010

Fri Jul 25 15:28:32 Error: error doing query: failed
shell/collection.js:151

Fri Jul 25 15:28:32 trying reconnect to 127.0.0.1:28010

Fri Jul 25 15:28:32 reconnect 127.0.0.1:28010 ok

SECONDARY> show dbs

admin (empty)

local 1.203125GB

test 0.203125GB

PRIMARY> rs.remove("localhost:28013")

Fri Jul 25 15:29:08 DBClientCursor::init call() failed

Fri Jul 25 15:29:08 query failed : admin.$cmd { replSetReconfig: {
_id: "rs1", version: 5, members: [ { _id: 0, host:
"localhost:28010" }, { _id: 1, host: "localhost:28011" }, { _id: 2,
host: "localhost:28012" } ] } } to: 127.0.0.1:28010

Fri Jul 25 15:29:08 Error: error doing query: failed
shell/collection.js:151

Fri Jul 25 15:29:08 trying reconnect to 127.0.0.1:28010

Fri Jul 25 15:29:08 reconnect 127.0.0.1:28010 ok

进入primary后,执行

rs.status()可看到

PRIMARY> rs.status()

{

"set" : "rs1",

"date" : ISODate("2014-07-25T07:29:36Z"),

"myState" : 1,

"syncingTo" : "localhost:28012",

"members" : [

{

"_id" :
0,

"name" :
"localhost:28010",

"health" :
1,

"state" :
1,

"stateStr" :
"PRIMARY",

"optime" :
{

"t"
: 1406273348000,

"i"
: 1

},

"optimeDate"
: ISODate("2014-07-25T07:29:08Z"),

"self" :
true

},

{

"_id" :
1,

"name" :
"localhost:28011",

"health" :
1,

"state" :
2,

"stateStr" :
"SECONDARY",

"uptime" :
26,

"optime" :
{

"t"
: 1406273348000,

"i"
: 1

},

"optimeDate"
: ISODate("2014-07-25T07:29:08Z"),

"lastHeartbeat"
: ISODate("2014-07-25T07:29:35Z"),

"pingMs" :
0

},

{

"_id" :
2,

"name" :
"localhost:28012",

"health" :
1,

"state" :
2,

"stateStr" :
"SECONDARY",

"uptime" :
26,

"optime" :
{

"t"
: 1406273348000,

"i"
: 1

},

"optimeDate"
: ISODate("2014-07-25T07:29:08Z"),

"lastHeartbeat"
: ISODate("2014-07-25T07:29:35Z"),

"pingMs" :
0

}

],

"ok" : 1

}

PRIMARY>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: