`
zhaoshijie
  • 浏览: 2262711 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mongodb副本集(三个节点:一主一从一仲裁)-配置文件方式启动

 
阅读更多
关键字:Mongodb副本集(三个节点:一主一从一仲裁)-配置文件方式启动

1.建立数据文件夹

一般情况下不会把数据目录建立在mongodb的解压目录下,不过这里方便起见,就建在mongodb解压目录下吧。

[plain] view plaincopy

    mkdir -p /mongodb/data/master  
    mkdir -p /mongodb/data/slaver  
    mkdir -p /mongodb/data/arbiter   
    #三个目录分别对应主,备,仲裁节点 

2.建立配置文件

由于配置比较多,所以我们将配置写到文件里。

[plain] view plaincopy

    #master.conf 
    dbpath=/mongodb/data/master 
    logpath=/mongodb/log/master.log 
    pidfilepath=/mongodb/master.pid 
    directoryperdb=true 
    logappend=true 
    replSet=testrs 
    bind_ip=10.10.148.130 
    port=27017 
    oplogSize=10000 
    fork=true 
    noprealloc=true 

[plain] view plaincopy

    #slaver.conf 
    dbpath=/mongodb/data/slaver 
    logpath=/mongodb/log/slaver.log 
    pidfilepath=/mongodb/slaver.pid 
    directoryperdb=true 
    logappend=true 
    replSet=testrs 
    bind_ip=10.10.148.131 
    port=27017 
    oplogSize=10000 
    fork=true 
    noprealloc=true 

[plain] view plaincopy

    #arbiter.conf 
    dbpath=/mongodb/data/arbiter 
    logpath=/mongodb/log/arbiter.log 
    pidfilepath=/mongodb/arbiter.pid 
    directoryperdb=true 
    logappend=true 
    replSet=testrs 
    bind_ip=10.10.148.132 
    port=27017 
    oplogSize=10000 
    fork=true 
    noprealloc=true 

参数解释:

dbpath:数据存放目录

logpath:日志存放路径

pidfilepath:进程文件,方便停止mongodb

directoryperdb:为每一个数据库按照数据库名建立文件夹存放

logappend:以追加的方式记录日志

replSet:replica set的名字

bind_ip:mongodb所绑定的ip地址

port:mongodb进程所使用的端口号,默认为27017

oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%

fork:以后台方式运行进程

noprealloc:不预先分配存储


3.启动mongodb

进入每个mongodb节点的bin目录下

[java] view plaincopy

    ./monood -f master.conf 
    ./mongod -f slaver.conf 
    ./mongod -f arbiter.conf 

注意配置文件的路径一定要保证正确,可以是相对路径也可以是绝对路径。


4.配置主,备,仲裁节点

可以通过客户端连接mongodb,也可以直接在三个节点中选择一个连接mongodb。

[plain] view plaincopy

    ./mongo 10.10.148.130:27017   #ip和port是某个节点的地址 
    >use admin 
    >cfg={ _id:"testrs", members:[ {_id:0,host:'10.10.148.130:27017',priority:2}, {_id:1,host:'10.10.148.131:27017',priority:1},  
    {_id:2,host:'10.10.148.132:27017',arbiterOnly:true}] }; 
    >rs.initiate(cfg)             #使配置生效 

       cfg是可以任意的名字,当然最好不要是mongodb的关键字,conf,config都可以。最外层的_id表示replica set的名字,members里包含的是所有节点的地址以及优先级。优先级最高的即成为主节点,即这里的10.10.148.130:27017。特别注意的是,对于仲裁节点,需要有个特别的配置——arbiterOnly:true。这个千万不能少了,不然主备模式就不能生效。

      配置的生效时间根据不同的机器配置会有长有短,配置不错的话基本上十几秒内就能生效,有的配置需要一两分钟。如果生效了,执行rs.status()命令会看到如下信息:

[plain] view plaincopy

    { 
            "set" : "testrs", 
            "date" : ISODate("2013-01-05T02:44:43Z"), 
            "myState" : 1, 
            "members" : [ 
                    { 
                            "_id" : 0, 
                            "name" : "10.10.148.130:27017", 
                            "health" : 1, 
                            "state" : 1, 
                            "stateStr" : "PRIMARY", 
                            "uptime" : 200, 
                            "optime" : Timestamp(1357285565000, 1), 
                            "optimeDate" : ISODate("2013-01-04T07:46:05Z"), 
                            "self" : true 
                    }, 
                    { 
                            "_id" : 1, 
                            "name" : "10.10.148.131:27017", 
                            "health" : 1, 
                            "state" : 2, 
                            "stateStr" : "SECONDARY", 
                            "uptime" : 200, 
                            "optime" : Timestamp(1357285565000, 1), 
                            "optimeDate" : ISODate("2013-01-04T07:46:05Z"), 
                            "lastHeartbeat" : ISODate("2013-01-05T02:44:42Z"), 
                            "pingMs" : 0 
                    }, 
                    { 
                            "_id" : 2, 
                            "name" : "10.10.148.132:27017", 
                            "health" : 1, 
                            "state" : 7, 
                            "stateStr" : "ARBITER", 
                            "uptime" : 200, 
                            "lastHeartbeat" : ISODate("2013-01-05T02:44:42Z"), 
                            "pingMs" : 0 
                    } 
            ], 
            "ok" : 1 
    } 

如果配置正在生效,其中会包含如下信息:

[plain] view plaincopy

    "stateStr" : "RECOVERING" 


同时可以查看对应节点的日志,发现正在等待别的节点生效或者正在分配数据文件。

       现在基本上已经完成了集群的所有搭建工作。至于测试工作,可以留给大家自己试试。一个是往主节点插入数据,能从备节点查到之前插入的数据(查询备节点可能会遇到某个问题,可以自己去网上查查看)。二是停掉主节点,备节点能变成主节点提供服务。三是恢复主节点,备节点也能恢复其备的角色,而不是继续充当主的角色。二和三都可以通过rs.status()命令实时查看集群的变化。
分享到:
评论

相关推荐

    Mongodb分片副本集集群搭建

    10. 配置文件和参数设定:正确设定MongoDB配置文件中的各项参数对于集群的稳定运行至关重要,包括但不限于配置文件路径、日志文件路径、端口号、副本集名称等。 总结以上知识点,搭建MongoDB分片副本集集群需要考虑...

    mongdb副本集结构的配置

    2. **初始化配置文件**:为每个节点创建一个配置文件,指定副本集名称、初始成员等信息。 3. **启动MongoDB实例**:以副本集模式启动每个实例,使用`--replSet`参数指定副本集名称。 4. **配置副本集**:在一个...

    MongoDB思维导图,常用命令及安装使用等

    - 在三个节点上以副本集的方式启动MongoDB服务。 - 通过Shell连接到任意MongoDB实例,执行`rs.initiate()`方法初始化副本集。 - **副本集更新**: - 添加成员:`rs.add("172.16.250.240:27017")` - 删除成员:`...

    mongodb多实例副本集群详细搭建

    本示例中的环境为四台服务器,每台服务器上将启动三个MongoDB实例。这些实例将分别扮演主节点(Primary)、从节点(Secondary)以及仲裁节点(Arbiter)的角色。具体来说: - **主节点(Primary)**:负责处理写入操作,并将...

    mongodb集群配置文档

    这段配置定义了一个名为`policydb`的副本集,其中包含了三个成员:一个主节点、一个备节点和一个仲裁节点。主节点的优先级设置为2,备节点优先级为1,而仲裁节点不参与数据同步,只负责投票决策。 **3. 配置其他分...

    CentOS 6.4创建Mongodb副本集

    在实际部署中,建议至少有三个节点来组成副本集,因为奇数个节点可以避免选举过程中的平票情况,提高系统的稳定性。同时,为了监控和管理副本集,可以使用`rs.status()`、`rs.add()`、`rs.remove()`等MongoDB的管理...

    Mongodb复制集(集群)搭建demo.doc

    在上述环境中,配置文件应分别针对三个节点设置不同的端口和数据存储路径,然后依次启动每个服务。初始化和添加成员的操作需要在MongoDB shell中执行,确保所有节点成功加入复制集并正常运行。 总之,MongoDB复制集...

    MongoDB-replication-guide.pdf

    - **部署复制集**: 介绍了如何部署一个基本的复制集,包括配置文件的编写、启动和管理等步骤。 - **部署用于测试和开发的复制集**: 介绍如何快速搭建一个用于测试或开发环境的复制集。 - **部署地理冗余复制集**: ...

    mongodb集群搭建教程

    该模式的核心在于建立一个主节点和一个或多个从节点,确保每个从节点能够与主节点保持同步。 **关键特点**: - **主服务器唯一性**:集群中必须有一个明确的主服务器,且只能有一个。 - **从服务器配置**:从...

    mongodb数据库集群及启动命令和可视化工具

    在创建集群时,我们通常会设置至少三个副本集成员,其中一个是主节点,其他是从节点,仲裁者则用于解决选举过程中的冲突。 要启动一个MongoDB集群,你需要完成以下步骤: 1. **配置文件**:为每个节点创建一个配置...

    MongoDB介绍和副本集群搭建

    1. **初始化复制集**:首先需要启动至少三个 MongoDB 实例作为集群成员,然后通过命令行初始化复制集。 2. **配置复制集成员**:指定哪些实例作为主节点,哪些作为从节点。 3. **设置仲裁节点**:可选步骤,用于在主...

    MongoDb集群

    MongoDB集群是指通过在网络中连接多台MongoDB服务器实例,使其协作完成数据库的读写、复制、故障恢复等任务的一种数据库架构方式...同时,仲裁节点不应与数据节点部署在同一台机器上,以防硬件故障同时影响到多个节点。

    MongoDB集群搭建

    2. **服务器准备**:假设您已经准备好三台服务器用于部署MongoDB副本集,分别为`10.10.8.64`、`10.10.8.65`和`10.10.8.66`。确保这三台服务器之间能够互相通信,并且已经安装了必要的软件环境。 #### 三、部署步骤 ...

    MongoDB分布式集群搭建

    - 创建并编写配置文件,指定节点的角色和相关设置。 - 设置Read Preferences Modes,允许客户端将读请求定向到副本节点。 #### 四、总结 MongoDB的集群部署模式提供了灵活的数据管理和高度可扩展性的解决方案。...

    高可用mongodb集群搭建

    为了构建一个高可用的MongoDB集群,我们需要确定每个组件的数量,例如:三个mongos实例、三个config server实例和三个shard server实例(每个shard有一个副本集和一个仲裁者)。这样的配置确保了即使某些节点出现...

    mongodb3.4集群搭建

    configserver本身也是一个集群,至少包含三个节点以保持数据的一致性和完整性。配置服务器集群中的每一个节点都保存相同的配置信息,从而避免单点故障问题。 **1.3 shard** 分片(sharding)是一种水平分割数据的...

    mogodb作业.pdf

    在本例中,我们将创建一个分片节点副本集,包括三个节点:primary、secondary 和 arbiter。primary 节点负责处理写操作,secondary 节点负责处理读操作,arbiter 节点负责仲裁primary 节点的选举。 创建副本集 ...

    mongodb安装集群

    通过初始化副本集,可以指定主从关系和仲裁节点等。 1. **初始化 shard1 副本集**: ```bash ./mongodb/bin/mongo --port 22001 config = {_id: 'shard1', members: [ {_id: 0, host: '192.168.2.1:22001', ...

Global site tag (gtag.js) - Google Analytics