http://blog.csdn.net/bloggongchang/article/details/7272403

一、MongoDB Replica Sets(副本集)简单的说就是有自动故障恢复功能的主从集群,主从集群和副本集的最为明显的区别是副本集没有固定的"主节点":整个集群会选举出来一个"主节点"当其不能正常工作时则变更到其他的节点,提高了系统的稳定性。

MongoDB Replica Sets的架构如图所示:

如上图所示,MongoDB Replica Sets的结构类似于以集群,完全可以把他当成一个集群,因为他确实与集群实现的作用是一样的:如果其中一个节点出现故障,其他的节点会马上将业务接管过来。而无需停机操作

二、MongoDB Replica Sets的配置步骤:

1:首先要做是启动三个节点

介绍一下涉及到的参数

--oplogSize 日志操作文件的大

--dbpath   数据文件路径

--logpath  日志文件路径

--port        端口号,默认是27017.我这里使用的也是这个端口号.

--replSet   复制集的名字,一个replica sets中的每个节点的这个参数都要用一个复制集名字,这里是test.

--replSet test/  这个后面跟的是其他standard节点的ip和端口

--maxConns   最大连接数

--fork       后台运行

--logappend   日志文件循环使用,如果日志文件已满,那么新日志覆盖最久日志。

--keyFile       标识同一集群的认证私钥

其中在启动节点时一定要加上oplogSize 的参数 为其设置大小,不然在64位操作系统上的mongodb,oplogs都相当大-可能是5%的磁盘空间,要根据情况设置个合理的值。

2:启动三个节点

启动第一个节点:/usr/local/mongodb/bin/mongod --port 28010 --oplogSize 10 --dbpath=/sdb1/liujijun/data/data/r0/ --logpath=/sdb1/liujijun/data/log/r0.log --replSet rs1/127.0.0.1:28011,127.0.0.1:28012 --maxConns 800 --fork --logappend

启动第二个节点: /usr/local/mongodb/bin/mongod --port 28012 --oplogSize 10 --dbpath=/sdb1/liujijun/data/data/r2/ --logpath=/sdb1/liujijun/data/log/r2.log --replSet rs1/127.0.0.1:28010,127.0.0.1:28011 --maxConns 800 --fork --logappend

启动第三个节点:/usr/local/mongodb/bin/mongod --port 28011 --oplogSize 10 --dbpath=/sdb1/liujijun/data/data/r1/ --logpath=/sdb1/liujijun/data/log/r1.log --replSet rs1/127.0.0.1:28010,127.0.0.1:28012 --maxConns 800 --fork --logappend

3:链接任选一个节点

# /usr/local/mongodb/bin/mongo --port 28010

> config={_id : 'rs1',members : [{_id : 0, host : 'localhost:28010'},{_id : 1, host : 'localhost:28011'},{_id : 2, host : 'localhost:28012'}]}//配置节点信息
{
        "_id" : "rs1",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "localhost:28010"
                },
                {
                        "_id" : 1,
                        "host" : "localhost:28011"
                },
                {
                        "_id" : 2,
                        "host" : "localhost:28012"
                }
        ]
}

> rs.initiate(config)//这个过程可能要等个一到两分钟的时间。
{
        "info" : "Config now saved locally.  Should come online in about a minute.",
        "ok" : 1
}
> rs.status()
{
        "set" : "rs1",
        "date" : ISODate("2012-02-19T06:01:34Z"),
        "myState" : 1,
        "members" : [
                {
                        "_id" : 0,
                        "name" : "localhost:28010",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "optime" : {
                                "t" : 1329630925000,
                                "i" : 1
                        },
                        "optimeDate" : ISODate("2012-02-19T05:55:25Z"),
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "localhost:28011",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 367,
                        "optime" : {
                                "t" : 1329630925000,
                                "i" : 1
                        },
                        "optimeDate" : ISODate("2012-02-19T05:55:25Z"),
                        "lastHeartbeat" : ISODate("2012-02-19T06:01:33Z"),
                        "pingMs" : 0
                },
                {
                        "_id" : 2,
                        "name" : "localhost:28012",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 367,
                        "optime" : {
                                "t" : 1329630925000,
                                "i" : 1
                        },
                        "optimeDate" : ISODate("2012-02-19T05:55:25Z"),
                        "lastHeartbeat" : ISODate("2012-02-19T06:01:33Z"),
                        "pingMs" : 0
                }
        ],
        "ok" : 1
}
PRIMARY>

配置到此结束。

备注:

如果要读写分离的话:db.getMongo().setSlaveOk()命令实现从库的可以查询的目的。在利用副本集时最好不要设置用户名和密码,因为这样会影响效率的,权限系统,非常耗资源,需要大量的运算。

Mongo的Replica Sets (复制集)的配置全过程和心得体会的更多相关文章

  1. 部署Replica Sets及查看相关配置

    MongoDB 支持在多个机器中通过异步复制达到故障转移和实现冗余.多机器中同一时刻只有一台是用于写操作.正是由于这个情况,为MongoDB 提供了数据一致性的保障.担当Primary 角色的机器能把 ...

  2. 单机Mongo复制集安装配置(数据库版本:4.x)

      官方文档: https://docs.mongodb.com/manual/tutorial/deploy-replica-set-with-keyfile-access-control/#dep ...

  3. 第39章:MongoDB-集群--Replica Sets(副本集)---副本集基本原理

    ①操作日志oplog Oplog是主节点的local数据库中的一个固定集合,按顺序记录了主节点的每一次写操作,MongoDB的复制功能是使用oplog来实现的,备份节点通过查询这个集合就可以知道需要进 ...

  4. MongoDB之Replica Set(复制集复制)

    MongoDB支持两种复制模式: 主从复制(Master/Slave) 复制集复制(Replica Set) 下面主要记录我在centos虚拟机上安装replica set,主要参考:http://d ...

  5. MongoDB for OPS 02:复制集 RS 配置

    写在前面的话 对于生产环境而言,除非是非常不重要的业务,且该业务允许我们出现一定时间的停机,我们一般才会使用单节点,且该单节点必须要有完善的备份手段. RS 复制集 我们这里采取一主两从的方式搭建复制 ...

  6. 第40章:MongoDB-集群--Replica Sets(副本集)---副本集的管理

    ①以单机模式启动成员 由于很多维护的工作需要写入操作,所以不合适在副本集中操作,可以以单机模式启动成员,也就是不要使用副本的选项,就跟以前启动单独的服务器一样.一般使用一个跟副本集配置中不一样的端口号 ...

  7. Mariadb之半同步复制集群配置

    首先我们来了解下在mariadb/mysql数据库主从复制集群中什么是同步,什么是异步,什么是半同步:所谓同步就是指主节点发生写操作事件,它不会立刻返回,而是等到从节点接收到主节点发送过来的写操作事件 ...

  8. Java应用服务器之tomcat会话复制集群配置

    会话是识别用户,跟踪用户访问行为的一个手段,通过cookie(存在客户端)或session(存在服务端)来判断本次请求是那个客户端发送过来:常用的会话保持有绑定会话,就是前边我们聊的在代理上通过算法或 ...

  9. 第38章:MongoDB-集群--Replica Sets(副本集)---多机的搭建

    ①机器环境 182.48.115.236    master-node(主节点) 182.48.115.237    slave-node1(从节点) 182.48.115.238    slave- ...

随机推荐

  1. 【先定一个小目标】Asp.net Core 在IIS上的托管运行

    1.安装 .NET Core Framework 下载.net core地址:官网地址 2.Install IIS 在控制面板->程序与功能->Internet Infomation Se ...

  2. Lena Sort 构造题,很多细节的模拟

    https://www.hackerrank.com/contests/101hack46/challenges/lena-sort 把题目转换成一颗二叉树,也就是当前的节点是cur,然后大的,放右边 ...

  3. hadoop-2.4.1集群搭建及zookeeper管理

    准备 1.1修改主机名,设置IP与主机名的映射 [root@xuegod74 ~]# vim /etc/hosts 192.168.1.73 xuegod73 192.168.1.74 xuegod7 ...

  4. GatewayWorker+Laravel demo

    GatewayWorker 结合 Laravel 使用的简单案例,重点是在Laravel中使用GatewayClient发送消息 主要流程:GatewayWorker主要负责推送消息给客户端但不接受客 ...

  5. 一段js实现复制文本内容到剪切板

    <script type="text/javascript"> function copyUrl2() { var Url2=document.getElementBy ...

  6. Context namespace element 'annotation-config' and its parser class [org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser]

    严重: Exception sending context initialized event to listener instance of class org.springframework.we ...

  7. Codeforces_791_B. Bear and Friendship Condition_(dfs)

    B. Bear and Friendship Condition time limit per test 1 second memory limit per test 256 megabytes in ...

  8. Swift 性能相关

    起初的疑问源自于「在 Swift 中的, Struct:Protocol 比 抽象类 好在哪里?」.但是找来找去都是 Swift 性能相关的东西.整理了点笔记,供大家可以参考一下. 一些疑问 在正题开 ...

  9. SourceTree 常用操作

    1.Sourcetree 每次拉取提交都需要输入密码(是有多个项目,他们的账户不一样) 输入以下命令: git config --global credential.helper osxkeychai ...

  10. 关闭警告&关闭eslint

    1.main.js中添加 vue.config.productiontip = false  这样即可去除警告!  第一个除了那个配置意外,还需要将 NODE_ENV 设置为 production 参 ...