Mongodb 复制集Replica Set搭建与测试

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值