http://cn.docs.mongodb.org/manual/tutorial/convert-secondary-into-arbiter/
http://api.mongodb.org/wiki/current/Replica%20Set%20Tutorial.html
http://cn.docs.mongodb.org/manual/core/replication/
还是看官方文档吧!
新建目录
# mkdir -p /data/rs0 /data/rs1 /data/rs2
启动mongod replSet
# ./bin/mongod --port 11100 --dbpath /data/rs0 --replSet fish --smallfiles
# ./bin/mongod --port 11101 --dbpath /data/rs1 --replSet fish --smallfiles
# ./bin/mongod --port 11102 --dbpath /data/rs2 --replSet fish --smallfiles
mongod replSet 报错
Fri Nov 30 16:07:27 [rsStart] warning: getaddrinfo("lenovo11") failed: Name or service not known
Fri Nov 30 16:07:27 [rsStart] getaddrinfo("lenovo11") failed: Name or service not known
Fri Nov 30 16:07:27 [rsStart] trying to contact lenovo11:11100
Fri Nov 30 16:07:27 [rsStart] getaddrinfo("lenovo11") failed: Name or service not known
Fri Nov 30 16:07:27 [rsStart] couldn't connect to lenovo11:11100: couldn't connect to server lenovo11:11100
Fri Nov 30 16:07:27 [rsStart] getaddrinfo("lenovo11") failed: Name or service not known
Fri Nov 30 16:07:27 [rsStart] replSet can't get local.system.replset config from self or any seed (yet)
# /usr/local/mongodb/bin/mongo localhost:11100
> config = { _id: 'fish' ,members: [{_id:0,host:"127.0.0.1:11100"},{_id:1,host:"127.0.0.1:11101"},{_id:2,host:"127.0.0.1:11102}]}
> rs.initiate(config)
{
"startupStatus" : 4,
"info" : "fish",
"errmsg" : "all members and seeds must be reachable to initiate set",
"ok" : 0
}
> rs.status()
{
"startupStatus" : 4,
"errmsg" : "can't currently get local.system.replset config from self or any seed (EMPTYUNREACHABLE)",
"ok" : 0
}
> rs.conf()
null
> db.getReplicationInfo()
{ "errmsg" : "neither master/slave nor replica set replication detected" }
***************************************** 解决 **********************************************
问了公司一个高手,虽然有点不屑这种小问题,不过还是指出问题所在。
“这就是DNS的问题,它找不到“lenovo11”这个机器对应的ip。” ---> 原来是mongodb不能解析lenovo11.
在/etc/hosts 添加一行:
127.0.0.1 lenovo11
[root@lenovo11 mongodb]# ./bin/mongo localhost:11100
MongoDB shell version: 2.2.1
connecting to: localhost:11100/test
> config = { _id:'fish',members:[ {_id:0,host:'localhost:11100'}, {_id:1,host:'localhost:11101'}, {_id:2,host:'localhost:11102'}]}
{
"_id" : "fish",
"members" : [
{
"_id" : 0,
"host" : "localhost:11100"
},
{
"_id" : 1,
"host" : "localhost:11101"
},
{
"_id" : 2,
"host" : "localhost:11102"
}
]
}
> rs.initiate(config)
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
> rs.status()
{
"set" : "fish",
"date" : ISODate("2012-11-30T09:41:51Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "localhost:11100",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 172,
"optime" : Timestamp(1354268446000, 1),
"optimeDate" : ISODate("2012-11-30T09:40:46Z"),
"self" : true
},
{
"_id" : 1,
"name" : "localhost:11101",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 55,
"optime" : Timestamp(1354268446000, 1),
"optimeDate" : ISODate("2012-11-30T09:40:46Z"),
"lastHeartbeat" : ISODate("2012-11-30T09:41:50Z"),
"pingMs" : 1,
"errmsg" : "syncing to: localhost:11100"
},
{
"_id" : 2,
"name" : "localhost:11102",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 55,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2012-11-30T09:41:49Z"),
"pingMs" : 207
}
],
"ok" : 1
}
fish:PRIMARY> rs.conf
rs.conf( rs.config(
fish:PRIMARY> rs.conf()
{
"_id" : "fish",
"version" : 1,
"members" : [
{
"_id" : 0,
"host" : "localhost:11100"
},
{
"_id" : 1,
"host" : "localhost:11101"
},
{
"_id" : 2,
"host" : "localhost:11102"
}
]
}
fish:PRIMARY> rs.
rs.add( rs.constructor rs.isMaster( rs.status(
rs.addArb( rs.debug rs.propertyIsEnumerable( rs.stepDown(
rs.apply( rs.freeze( rs.prototype rs.syncFrom(
rs.call( rs.hasOwnProperty( rs.reconfig( rs.toLocaleString(
rs.conf( rs.help( rs.remove( rs.toString(
rs.config( rs.initiate( rs.slaveOk( rs.valueOf(
fish:PRIMARY> rs.isMaster()
{
"setName" : "fish",
"ismaster" : true,
"secondary" : false,
"hosts" : [
"localhost:11100",
"localhost:11102",
"localhost:11101"
],
"primary" : "localhost:11100",
"me" : "localhost:11100",
"maxBsonObjectSize" : 16777216,
"localTime" : ISODate("2012-11-30T09:45:59.351Z"),
"ok" : 1
}