您的位置:首页 > 数据库 > Mongodb

Mongodb 复制集Replica Set搭建与测试

2015-08-12 13:05 507 查看
Mongodb 复制集Replica Set搭建与测试

环境准备:

服务器:

192.168.0.33 CentOS release 5.5 (Final)

192.168.0.99 CentOS release 5.5 (Final)

Mongodb版本:

mongodb-linux-x86_64-rhel55-3.0.5.tgz

Replica Set

其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致

Replica Set使用的是n个mongod节点,构建具备自动的容错功能(auto-failover),自动恢复的(auto-recovery)的高可用方案。

默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务,这样就可以减少主节点的压力

Mongodb Replica Set环境搭建:

1.规划:

两台机器上构建一个集群分片:

规划对应的端口号:

192.168.0.33 Shard Server 1:28010

192.168.0.99 Shard Server 2:28011

192.168.0.99 Shard Server 3:28012

2.在服务器上创建目录:

192.168.0.33:

mkdir -p /appl/mongodb/data/r0

mkdir -p /appl/mongodb/data/log

mkdir -p /appl/mongodb/data/key

echo "this is rs1 super secret key" > /appl/mongodb/data/key/r0

chmod 600 /appl/mongodb/data/key/r*

192.168.0.99:

mkdir -p /appl/mongodb/data/r1

mkdir -p /appl/mongodb/data/r2

mkdir -p /data/log

mkdir -p /appl/mongodb/data/key

echo "this is rs1 super secret key" > /appl/mongodb/data/key/r1

echo "this is rs1 super secret key" > /appl/mongodb/data/key/r2

chmod 600 /appl/mongodb/data/key/r*

上传mongdb安装文件到两台服务器的/appl/mongodb和/appl/mongodb目录解压

tar -zxvf mongodb-linux-x86_64-rhel55-3.0.5.tgz

然后把解压的bin目录下的所有文件移动/appl/mongodb和/appl/mongodb目录下

3.启动Shard Server实例

启动Shard Server实例1(192.168.0.33)

/appl/mongodb/mongod --replSet rs1 --keyFile /appl/mongodb/data/key/r0 --fork --port 28010 --dbpath /appl/mongodb/data/r0 --logpath=/appl/mongodb/data/log/r0.log --logappend

启动Shard Server实例2(192.168.0.99)

/appl/mongodb/mongod --replSet rs1 --keyFile /appl/mongodb/data/key/r1 --fork --port 28011 --dbpath /appl/mongodb/data/r1 --logpath=/appl/mongodb/data/log/r1.log –logappend

启动Shard Server实例3(192.168.0.99)

/appl/mongodb/mongod --replSet rs1 --keyFile /appl/mongodb/data/key/r2 --fork --port 28012 --dbpath /appl/mongodb/data/r2 --logpath=/appl/mongodb/data/log/r2.log --logappend

4. 配置及初始化 Replica Sets创建数据目录:

config_rs1 = {_id: 'rs1', members: [

{_id: 0, host: '192.168.0.33:28010', priority:1},

{_id: 1, host: '192.168.0.99:28011'},

{_id: 2, host: '192.168.0.99:28012'}]}

rs.initiate(config_rs1);

[root@tts mongodb]# ./mongo --port 28010

MongoDB shell version: 3.0.5

connecting to: 127.0.0.1:28010/test

Welcome to the MongoDB shell.

For interactive help, type "help".

For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
>

> use adminuse admin

switched to db admin

>

>

> dbdb

admin

> config_rs1 = {_id: 'rs1', members: [ config_rs1 = {_id: 'rs1', members: [

... {_id: 0, host: '192.168.0.33:28010', priority:1}, {_id: 0, host: '192.168.0.33:28010', priority:1},

... {_id: 1, host: '192.168.0.99:28011'}, {_id: 1, host: '192.168.0.99:28011'},

... {_id: 2, host: '192.168.0.99:28012'}]} {_id: 2, host: '192.168.0.99:28012'}]}

{

"_id" : "rs1",

"members" : [

{

"_id" : 0,

"host" : "192.168.0.33:28010",

"priority" : 1

},

{

"_id" : 1,

"host" : "192.168.0.99:28011"

},

{

"_id" : 2,

"host" : "192.168.0.99:28012"

}

]

}

> rs.initiate(config_rs1);rs.initiate(config_rs1);

{ "ok" : 1 }

rs1:OTHER>

rs1:SECONDARY>

rs1:PRIMARY>

rs1:PRIMARY>

rs1:PRIMARY>

rs1:PRIMARY>

rs1:PRIMARY> rs.status() rs.status()

{

"set" : "rs1",

"date" : ISODate("2015-08-12T01:58:49.221Z"),

"myState" : 1,

"members" : [

{

"_id" : 0,

"name" : "192.168.0.33:28010",

"health" : 1,

"state" : 1,

"stateStr" : "PRIMARY",

"uptime" : 575,

"optime" : Timestamp(1439344688, 1),

"optimeDate" : ISODate("2015-08-12T01:58:08Z"),

"electionTime" : Timestamp(1439344692, 1),

"electionDate" : ISODate("2015-08-12T01:58:12Z"),

"configVersion" : 1,

"self" : true

},

{

"_id" : 1,

"name" : "192.168.0.99:28011",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 62,

"optime" : Timestamp(1439344688, 1),

"optimeDate" : ISODate("2015-08-12T01:58:08Z"),

"lastHeartbeat" : ISODate("2015-08-12T01:58:48.769Z"),

"lastHeartbeatRecv" : ISODate("2015-08-12T01:58:48.649Z"),

"pingMs" : 3,

"configVersion" : 1

},

{

"_id" : 2,

"name" : "192.168.0.99:28012",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 62,

"optime" : Timestamp(1439344688, 1),

"optimeDate" : ISODate("2015-08-12T01:58:08Z"),

"lastHeartbeat" : ISODate("2015-08-12T01:58:48.769Z"),

"lastHeartbeatRecv" : ISODate("2015-08-12T01:58:48.793Z"),

"pingMs" : 3,

"configVersion" : 1

}

],

"ok" : 1

}

rs1:PRIMARY>

5. 查看复制集状态

rs1:PRIMARY> rs.status()rs.status()

{

"set" : "rs1",

"date" : ISODate("2015-08-12T04:54:45.515Z"),

"myState" : 1,

"members" : [

{

"_id" : 0,

"name" : "192.168.0.33:28010",

"health" : 1, --1 表明正常; 0 表明异常

"state" : 1, -- 1 表明是 Primary; 2 表明是 Secondary;

"stateStr" : "PRIMARY",

"uptime" : 8950,

"optime" : Timestamp(1439346099, 2),

"optimeDate" : ISODate("2015-08-12T02:21:39Z"),

"electionTime" : Timestamp(1439346601, 1),

"electionDate" : ISODate("2015-08-12T02:30:01Z"),

"configVersion" : 1,

"self" : true

},

{

"_id" : 1,

"name" : "192.168.0.99:28011",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 8715,

"optime" : Timestamp(1439346099, 2),

"optimeDate" : ISODate("2015-08-12T02:21:39Z"),

"lastHeartbeat" : ISODate("2015-08-12T04:54:45Z"),

"lastHeartbeatRecv" : ISODate("2015-08-12T04:54:43.878Z"),

"pingMs" : 4,

"configVersion" : 1

},

{

"_id" : 2,

"name" : "192.168.0.99:28012",

"health" : 1,

"state" : 2,

"stateStr" : "SECONDARY",

"uptime" : 8387,

"optime" : Timestamp(1439346099, 2),

"optimeDate" : ISODate("2015-08-12T02:21:39Z"),

"lastHeartbeat" : ISODate("2015-08-12T04:54:45.002Z"),

"lastHeartbeatRecv" : ISODate("2015-08-12T04:54:45.359Z"),

"pingMs" : 2,

"configVersion" : 1

}

],

"ok" : 1

}

rs1:PRIMARY>

注:

Mongodb启动

在192.168.0.33启动主节点

/appl/mongodb/mongod --replSet rs1 --keyFile /appl/mongodb/data/key/r0 --fork --port 28010 --dbpath /appl/mongodb/data/r0 --logpath=/appl/mongodb/data/log/r0.log --logappend

在192.168.0.99启动两个备节点:

/appl/mongodb/mongod --replSet rs1 --keyFile /appl/mongodb/data/key/r1 --fork --port 28011 --dbpath /appl/mongodb/data/r1 --logpath=/appl/mongodb/data/log/r1.log --logappend

/appl/mongodb/mongod --replSet rs1 --keyFile /appl/mongodb/data/key/r2 --fork --port 28012 --dbpath /appl/mongodb/data/r2 --logpath=/appl/mongodb/data/log/r2.log --logappend

Mongodb连接

连接主节点:

./mongo -u root -p root 192.168.0.33:28010/admin

连接2个备节点:

./mongo -u root -p root 192.168.0.99:28011/admin

./mongo -u root -p root 192.168.0.99:28012/admin
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: