mongo的副本集创建
mongo的副本集建议至少3台机器,当然你也可以选择一台机器开三个端口
我这里有两台机器,分别是172.16.31.105和172.16.31.106 ,105上是主,106上从和仲裁(一主一从一仲裁),端口分别是1111 222 333
1.安装mongo到三个配置中
安装包最好去官网下载,下载解压即可
创建配置文件 (3个配置文件都一样,端口区分一下就好了)
mkdir -p /usr/local/mongodb/conf
mkdir -p /home/data/mongodb/data
vim /usr/local/mongodb/conf/mongodb.conf
#bind_ip=0.0.0.0port=1111
dbpath=/home/data/mongodb/data
logpath=/home/data/mongodb/mongodb.log
logappend=true
oplogSize=2048
maxConns=2000
replSet=test #副本集的名称
noauth=true
httpinterface=true
2. 之后分别启动3个mongo
mongod -f /usr/local/mongodb/conf/mongodb.conf --replSet test --logappend & #启动方式都一样注意指明启动配置文件就好了
--replSet test声明启动后的创建的副本集名称为test
3.启动后选择一台作为主(这里我选择105)
mongo localhost:1111
config_test={"_id":"test",members:[
{_id:0,host:"172.16.31.105:1111"},
{_id:1,host:"172.16.31.106:2222"},
{_id:2,host:"172.16.31.106:3333"},
]};
初始化副本集
rs.initiate(config_test) #必须是config_集合名称
如果有报错,请检查其他两个mongo是否正常,需要初始化的mongo不能有数据,如果有的话删点数据重新初始化正常的话会显示
'info' : 'Config
now saved locally. Should come online in about a minute.',查看副本集状态
rs.status();
test:PRIMARY> rs.status()
{
"set" : "test",
"date" : ISODate("2017-01-04T10:00:49Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "172.16.31.105:1111",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 103102,
"optime" : Timestamp(1483443161, 8667),
"optimeDate" : ISODate("2017-01-03T11:32:41Z"),
"electionTime" : Timestamp(1483491644, 1),
"electionDate" : ISODate("2017-01-04T01:00:44Z"),
"self" : true
},
{
"_id" : 1,
"name" : "172.16.31.106:2222",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 32411,
"optime" : Timestamp(1483412761, 19758),
"optimeDate" : ISODate("2017-01-03T03:06:01Z"),
"lastHeartbeat" : ISODate("2017-01-04T10:00:48Z"),
"lastHeartbeatRecv" : ISODate("2017-01-04T10:00:48Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "still syncing, not yet to minValid optime 586b17b4:50d3"
},
{
"_id" : 2,
"name" : "172.16.31.106:3333",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 32417,
"optime" : Timestamp(1483443161, 8667),
"optimeDate" : ISODate("2017-01-03T11:32:41Z"),
"lastHeartbeat" : ISODate("2017-01-04T10:00:49Z"),
"lastHeartbeatRecv" : ISODate("2017-01-04T10:00:48Z"),
"pingMs" : 0,
"syncingTo" : "172.16.31.105:27016"
}
],
"ok" : 1
}
{
"set" : "test",
"date" : ISODate("2017-01-04T10:00:49Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "172.16.31.105:1111",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 103102,
"optime" : Timestamp(1483443161, 8667),
"optimeDate" : ISODate("2017-01-03T11:32:41Z"),
"electionTime" : Timestamp(1483491644, 1),
"electionDate" : ISODate("2017-01-04T01:00:44Z"),
"self" : true
},
{
"_id" : 1,
"name" : "172.16.31.106:2222",
"health" : 1,
"state" : 3,
"stateStr" : "RECOVERING",
"uptime" : 32411,
"optime" : Timestamp(1483412761, 19758),
"optimeDate" : ISODate("2017-01-03T03:06:01Z"),
"lastHeartbeat" : ISODate("2017-01-04T10:00:48Z"),
"lastHeartbeatRecv" : ISODate("2017-01-04T10:00:48Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "still syncing, not yet to minValid optime 586b17b4:50d3"
},
{
"_id" : 2,
"name" : "172.16.31.106:3333",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 32417,
"optime" : Timestamp(1483443161, 8667),
"optimeDate" : ISODate("2017-01-03T11:32:41Z"),
"lastHeartbeat" : ISODate("2017-01-04T10:00:49Z"),
"lastHeartbeatRecv" : ISODate("2017-01-04T10:00:48Z"),
"pingMs" : 0,
"syncingTo" : "172.16.31.105:27016"
}
],
"ok" : 1
}
同时也可以到106上查看日志
2017-01-02T09:05:59.890-0500 [rsHealthPoll] replSet member 172.16.31.106:2222 is now in state SECONDARY
4.导入你的数据到主库上,并查看状态
后期待续
本文介绍了MongoDB的副本集创建过程,强调至少需要3台机器,以172.16.31.105(主)、172.16.31.106(从和仲裁)为例,详细讲解了安装、配置文件创建、启动MongoDB服务以及设置副本集名称的步骤。
725

被折叠的 条评论
为什么被折叠?



