Replica Set使用指南(在单机上配置)

    技术2022-05-19  19

    Replica Set使用指南(在单机上配置)

    简介:

    一个Replica-Set是在一组N个mongod服务一起协作来进行后援支持。

    搭建一个replica-set需要两个步骤:在每个节点上启动服务;初始化这个set。

    标准模式下,1个set包含3个节点。我们现在就在同一个服务器上搭建一个。

    一旦mongod服务节点都启动了,我们需要一个指令来初始化这个set。几秒钟之后,三个节点中会选择出一个

    主控节点(master node),之后我们就可以向这个set中写入或者查询数据了。

     

    步骤一:

    分别为3个节点分配数据存放的位置空间

    $  mkdir -p /data/r0

    $  mkdir -p /data/r1

    $  mkdir -p /data/r2

     

    之后,使用 --replSet 参数启动mongod服务,这个参数需要我们指定replica-set的名称,这里我们称我们的这个set为“foo”

    $ mongod --replSet foo --port 27017 --dbpath /data/r0

    $ mongod --replSet foo --port 27018 --dbpath /data/r1

    $ mongod --replSet foo --port 27019 --dbpath /data/r2

     

    现在3个节点都跑起来了。这时,每个节点应该都打出如下的警告信息:

    ————————

    Mon Aug  2 11:30:19 [startReplSets] replSet can't get local.

    system.replset config from self or any seed (EMPTYCONFIG)

    ————————

    不要紧张,这是因为我们还没有初始化这个set.

     

    步骤二:

    我们可以从任意3个节点中的一个来运行 replSetInitiate 命令来初始化这个set.

     

    [kyle@arete ~$]$ mongo localhost:27017

    MongoDB shell version: 1.6.3

    connecting to: localhost:27017/test

    > config = {_id: 'foo', members: [

                              {_id: 0, host: 'localhost:27017'},

                              {_id: 1, host: 'localhost:27018'},

                              {_id: 2, host: 'localhost:27019'}]

               }

     

    > rs.initiate(config);

    {

       "info" : "Config now saved locally.  Should come online in about a minute.",

        "ok" : 1

    }

     

    我们需要配置config这个对象,指明set的名称和这个set下的成员。然后将config传递给rs.initiate().

    如果到这里一切都顺利的话,我们会得要一个信息说:这个set会在1分钟内启动完成。在这个时间段内,有一个

    节点会被选择为主控节点(master节点)。

     

    如果想查看这个set的当前状态的话,使用rs.status这个命令:

    > rs.status()

    {

    "set" : "foo",

    "date" : "Mon Aug 02 2010 11:39:08 GMT-0400 (EDT)",

    "myState" : 1,

    "members" : [

    {

    "name" : "arete.local:27017",

    "self" : true,

    },

    {

    "name" : "localhost:27019",

    "health" : 1,

    "uptime" : 101,

    "lastHeartbeat" : "Mon Aug 02 2010 11:39:07 GMT-0400",

    },

    {

    "name" : "localhost:27018",

    "health" : 1,

    "uptime" : 107,

    "lastHeartbeat" : "Mon Aug 02 2010 11:39:07 GMT-0400",

    }

    ],

    "ok" : 1

    }

     

    这里有个值"myState",如果这个值为1,说明是主控节点(master);如果是 2 ,说明是从属节点(slave).

     

    我们还可以从 Replica Set Admin UI[ http://<hostname>:28017]查看,稍后会讲到这个。


    最新回复(0)