Mongodb复制集配置

环境:

192.168.99.129 master
192.168.99.130 slave1

1、配置复制集

在两台服务器上分别执行

mongod --replSet "rs0"

执行mongo命令,先添加一台

rs.initiate( {
   _id : "rs0",
   members: [ { _id : 0, host : "master:27017" } ]
})

再添加另外一台

rs.add("slave1")

执行rs.status()查看复制集节点的状态

rs0:PRIMARY> rs.status()
{
    "set" : "rs0",
    "date" : ISODate("2017-01-01T05:08:29.623Z"),
    "myState" : 1,
    "term" : NumberLong(3),
    "heartbeatIntervalMillis" : NumberLong(2000),
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(1483247303, 1),
            "t" : NumberLong(3)
        },
        "appliedOpTime" : {
            "ts" : Timestamp(1483247303, 1),
            "t" : NumberLong(3)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1483247303, 1),
            "t" : NumberLong(3)
        }
    },
    "members" : [
        {
            "_id" : 0,
            "name" : "master:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 38,
            "optime" : {
                "ts" : Timestamp(1483247303, 1),
                "t" : NumberLong(3)
            },
            "optimeDate" : ISODate("2017-01-01T05:08:23Z"),
            "infoMessage" : "could not find member to sync from",
            "electionTime" : Timestamp(1483247282, 1),
            "electionDate" : ISODate("2017-01-01T05:08:02Z"),
            "configVersion" : 2,
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "slave1:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 33,
            "optime" : {
                "ts" : Timestamp(1483247303, 1),
                "t" : NumberLong(3)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1483247303, 1),
                "t" : NumberLong(3)
            },
            "optimeDate" : ISODate("2017-01-01T05:08:23Z"),
            "optimeDurableDate" : ISODate("2017-01-01T05:08:23Z"),
            "lastHeartbeat" : ISODate("2017-01-01T05:08:29.007Z"),
            "lastHeartbeatRecv" : ISODate("2017-01-01T05:08:27.902Z"),
            "pingMs" : NumberLong(0),
            "syncingTo" : "master:27017",
            "configVersion" : 2
        }
    ],
    "ok" : 1
}

2、验证复制集

在主节点插入数据后,看从节点是否存在同样的数据,但在从节点执行查询数据库指令时抛错

rs0:SECONDARY> show dbs
2016-12-31T20:49:59.362-0800 E QUERY    [main] Error: listDatabases failed:{
    "ok" : 0,
    "errmsg" : "not master and slaveOk=false",
    "code" : 13435,
    "codeName" : "NotMasterNoSlaveOk"
} :

因为从节点默认是不允许读写的,解决这个问题,有两种方式

在从节点上执行rs.slaveOk()

或者在主节点上执行db.getMongo().setSlaveOk()

在主节点上插入数据

rs0:PRIMARY> db.student.insert({"name":"xiaoming"})
WriteResult({ "nInserted" : 1 })
rs0:PRIMARY> db.student.find()
{ "_id" : ObjectId("58688fa863a36c070316cd69"), "name" : "xiaoming" }

在从节点上查询

rs0:SECONDARY> db.student.find()
{ "_id" : ObjectId("58688fa863a36c070316cd69"), "name" : "xiaoming" }
时间: 2024-12-31 21:36:32

Mongodb复制集配置的相关文章

mongodb复制集配置步骤

mongodb复制集配置步骤 2012-11-09 14:10:24|  分类: mongodb|举报|字号 订阅 复制升级版的主从复制,它实现了故障自动转移功能,同时从节点支持读 一,节点类型: a)    主节点:支持读写 b)    从节点:支持读(需设置) c)    仲裁节点:参与投票同时也支持读(需设置) 二,实验 主节点:192.168.129.47 从节点:192.168.129.48 仲裁节点:192.168.129.49 1.主节点配置如下: vi  /etc/rc.loca

spring mongodb 复制集配置(实现读写分离)

注:mongodb当前版本是3.4.3 spring连接mongodb复制集的字符串格式: mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]] mongodb:// 前缀,代表这是一个Connection String username:[email protected] 如果启用了用户认证,需要指定用户密码 hostX:por

配置MongoDB复制集

什么是复制集? 复制集是额外的数据副本,是跨多个服务器同步数据的过程,复制集提供了冗余并增加了数据可用性,通过复制集可以对硬件故障和中断的服务进行恢复.复制集的优势如下: 让数据更安全 高数据可用性(24*7) 灾难恢复 无停机维护(如备份.索引重建.故障转移) 读缩放(额外的副本读取) 副本集对应用程序是透明的 复制集工作原理 MongoDB的复制集至少需要两个节点.其中一个是主节点(Primary),负责处理客户端的请求,其余的都是从节点(Secondary),负责复制主节点上的数据.Mon

MongoDB 复制集节点增加移除及节点属性配置

复制集(replica Set)或者副本集是MongoDB的核心高可用特性之一,它基于主节点的oplog日志持续传送到辅助节点,并重放得以实现主从节点一致.再结合心跳机制,当感知到主节点不可访问或宕机的情形下,辅助节点通过选举机制来从剩余的辅助节点中推选一个新的主节点从而实现自动切换.对于一个已经存在的MongoDB Replica Set集群,可以对其进行节点的增加,删除,以及修改节点属性等等.本文即是围绕这些进行描述. 有关MongoDB复制集概念及其搭建,可以参考:MongoDB 复制集(

MongoDB复制集及数据分片详解

前言 MongoDB是一个由C++语言编写的基于分布式文件存储的数据库,是当前NoSQL数据库中比较热门的一种,旨在为Web应用提供可扩展的高性能数据存储解决方案.本文介绍MongoDB复制集及数据分片. MongoDB 简介 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.支持的数据结构非常松散,因此可以存储比较复杂的数据类型.最大的特点是其支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询

mongodb复制集的实现

复制集(Replica Sets),是一个基于主/从复制机制的复制功能,进行同一数据的异步同步,从而使多台机器拥有同一数据的都多个副本,由于有自动故障转移和恢复特性,当主库宕机时不需要用户干预的情况下自动切换到其他备份服务器上做主库,一个集群最多可以支持7个服务器,并且任意节点都可以是主节点.所有的写操作都被分发到主节点,而读操作可以在任何节点上进行,实现读写分离,提高负载. 资源有限测试一个VM开3个实例: 环境:centos7.0 192.168.1.21:20011 P 192.168.1

一步一步教你搭建基于docker的MongoDB复制集群环境

一步一步教你搭建基于docker的MongoDB复制集群环境 1.安装docker 2.创建MongoDB的Image 3.搭建MongoDB的集群 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中. 1.ubuntu14.04安装docker 参考文档 http://docs.docker.com/installation/ubuntulinux/ 参考文档 http://docs.docker.com/mac/started/ pc@pc-Th

MongoDB复制集数据库拆分和版本升级实战

MongoDB复制集数据库拆分和版本升级实战 问题描述 复制集rs_1上承载了所有的数据库业务,而加内存已经无法满足应用程序压力. 解决方案 考虑拆分复制集rs_1的部分数据库到rs_2,并同时升级数据库版本到2.6. 架构图 准备 评估升级可能性 1. 连接2.6 mongo shell到2.4 复制集辅助成员,在admin库执行db.upgradeCheckAllDBs().   2. 评估升级到2.6的应用程序兼容性问题,参考:http://docs.mongodb.org/manual/

MongoDB复制集架构

MongoDB复制集架构 由数据结点,投票结点组成,需要配置集群信息,可自动检测集群中的结点健康状态,当有结点出故障时,自动下线和切换主从结点.适用于数据量较大,高可用服务 通常,为了防止单点故障应用程序需要做集群.然而在数据库中除了防止单点故障,还需要做到数据库备份,读写分离,故障转移等.而 MongoDB 的 Replica Set 恰恰都能满足这些要求. Replica Set角色 Replica Set 的成员是一堆有着同样的数据内容 mongod 的实例集合,包含以下三类角色: 主节点