一、mongodb的集群

mongodb有两种架构:

第一种架构:和mysql的结构类似,也有主从结构,但是他不能实现故障自动切换

于是有了第二种架构。官方不推荐使用这种架构。

第二种:mongodb的复制集(副本集)。

一般至少有3台机器,这两边也有主从,但是主从是通过选举出来的。

主负责读写(写入到oplog日志中),从负责监控主服务器,同步主的数据。一旦主挂掉,然后代替主。

二、设置副本集的参数

(1)replset:设置副本集名称

(2)oplogsize:设置oplog日志文件大小

(3)fastsync:完成快速同步。

(4)replindexprefetch:在实现复制时,根据索引实现数据预取

可以实现快速装载主节点上的数据的。尤其是在修改量特别大的情况下。

可以使用它。它只能在2.2版本以后才能使用。它也只能基于ID索引实现

三.设置集群

实验环境

主机              IP                虚拟通道

centos1       192.168.3.10         vmnet8

centos2       192.168.3.11         vmnet8

centos3       192.168.3.12         vmnet8

1.将三台服务器全部安装mongo

tar xf mongodb-linux-x86_64-amazon-3.2.7.tgz

mv mongodb-linux-x86_64-amazon-3.2.7 /usr/local/mongodb

创建数据目录

mkdir /data/db -p

创建配置文件

cd /usr/local/mongodb/

vim mongodb.conf   #增加以下内容

dbpath = /data/db

logpath = /data/mongo.log

logappend = true

port = 27017

noauth = true

fork = true

replSet = mongo

#注意这里的"s" 必须大写

将配置文件复制到其他的两台服务器上

启动mongdb

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf

child process started successfully, parent exiting

此时启动成功。

2.初始化副本集

连接任意一台mongo

> rs.status()   #查看状态

{

"info" : "run rs.initiate(...) if not yet done for the set",

"ok" : 0,

"errmsg" : "no replset config has been received",

"code" : 94

定义初始化配置文件

cfg={"_id":"mongo","members":[{"_id":0,"host":"192.168.3.10:27017"},{"_id":1,"host":"192.168.3.11:27017"},{"_id":2,"host":"192.168.3.12:27017"}]}

显示以下内容为定义成功。

{

"_id" : "mongo",

"members" : [

{

"_id" : 0,

"host" : "192.168.3.10:27017"

},

{

"_id" : 1,

"host" : "192.168.3.11:27017"

},

{

"_id" : 2,

"host" : "192.168.3.12:27017"

}

]

}

初始化配置文件.

初始化的时候注意关闭另外两台从服务器的Iptables,否则会报错。

> rs.initiate(cfg)

{ "ok" : 1 }

如果配置文件中有bind_ip=127.0.0.1初始化会报以下错误。

"errmsg" : "No host described in new configuration 1 for replica set mongo maps to this node",

>rs.status() 可以查看集群信息

 mongo:PRIMARY> db.isMaster()   #也可以查看本机的身份

{

"hosts" : [

"192.168.3.10:27017",

"192.168.3.11:27017",

"192.168.3.12:27017"

],

"setName" : "mongo",

"setVersion" : 1,

    "ismaster" : true,

"secondary" : false,

"primary" : "192.168.3.10:27017",

    "me" : "192.168.3.10:27017",

 

测试:

我们在主节点上插入数据

mongo:PRIMARY> use test

switched to db test

mongo:PRIMARY> db.test.insert({name:"xiaoming",age:50})

WriteResult({ "nInserted" : 1 })

mongo:PRIMARY> db.test.find()

{ "_id" : ObjectId("58b540f952cbd488f553914a"), "name" : "xiaoming","age" : 50 }

在从节点上查看数据

mongo:SECONDARY> rs.slaveOk()

mongo:SECONDARY> show dbs;

admin  0.000GB

local  0.000GB

test   0.000GB

mongo:SECONDARY> db.test.find()

{ "_id" : ObjectId("58b540f952cbd488f553914a"), "name" : "xiaoming", "age" : 50 }

测试数据库是否能够自动切换

我们停止主服务器。

退出第二台的mongo,重新登录

我们发现第二台mongo 自动成为了主。

mongdb集群的更多相关文章

  1. c# 链接mongDB集群实战开发3

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zuoming120/article/details/25702295 c# 链接mongDB集群 一 ...

  2. MongDB集群容灾方案步骤

    MongoDB复制集优/特点支持大数据量.高扩展性.高性能.灵活数据模型.高可用性.同步机制数据复制的目的是使数据得到最大的可用性,避免单点故障引起的整站不能访问的情况的发生,Mongodb的副本集在 ...

  3. MongDB集群部署

    http://blog.csdn.net/luonanqin/article/details/8497860 参数解释: dbpath:数据存放目录 logpath:日志存放路径 pidfilepat ...

  4. MongoDB集群架构及搭建

    MongoDB分布式集群 MongDB分布式集群能够对数据进行备份,提高数据安全性,以及提高集群提高读写服务的能力和数据存储能力.主要通过副本集(replica)对数据进行备份,通过分片(shardi ...

  5. 搭建mongodb集群(副本集+分片)

    搭建mongodb集群(副本集+分片) 转载自:http://blog.csdn.net/bluejoe2000/article/details/41323051 完整的搭建mongodb集群(副本集 ...

  6. Mongodb集群部署ReplicaSet+Sharding -摘自网络

    网上关于三种集群方式的搭建方式很多,都是分开来介绍的.Replica Set (复制集成)主要是做主从库的,但是没法实现负载均衡的效果,真正实现这个的,是Sharding(分片集群),通过数据分布在每 ...

  7. MongoDB集群

    高可用的MongoDB集群   1.序言 MongoDB 是一个可扩展的高性能,开源,模式自由,面向文档的数据库. 它使用 C++编写.MongoDB 包含一下特点: l  面向集合的存储:适合存储 ...

  8. CentOS 搭建Graylog集群详解

    1. Graylog2 简介 Graylog 是一个简单易用.功能较全面的日志管理工具,相比 ELK 组合, 优点: 部署维护简单,一体化解决方案,不像ELK三个独立系统集成. 查相比ES json语 ...

  9. 高可用的MongoDB集群

    1.序言 MongoDB 是一个可扩展的高性能,开源,模式自由,面向文档的数据库. 它使用 C++编写.MongoDB 包含一下特点: l  面向集合的存储:适合存储对象及JSON形式的数据. l ...

随机推荐

  1. RPC 框架

    RPC 谁能用通俗的语言解释一下什么是 RPC 框架? - 远程过程调用协议RPC(Remote Procedure Call Protocol) RPC就是要像调用本地的函数一样去调远程函数. 推荐 ...

  2. 【力扣】82. 删除排序链表中的重复元素 II

    存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字. 返回同样按升序排列的结果链表. 示例 1: 输入:hea ...

  3. Taro 3.5 canary 发布:支持适配 鸿蒙

    一.背景 鸿蒙作为华为自研开发的一款可以实现万物互联的操作系统,一经推出就受到了很大的关注,被国人寄予了厚望.而鸿蒙也没让人失望,今年 Harmony2.0 正式推出供用户进行升级之后,在短短的三个月 ...

  4. 关于finally中的语句和try中的return之间的执行顺序

    首先是第一种情况: 我们这里由于程序只是单一的,所以后面的代码只有主题部分: Public class test{ Public static void main(String[] args){ Sy ...

  5. Nginx SERVER块配置

    1 Listen 指令 Example Configuration Directives 2 server_name指令 2.1 规则 指令后可以跟多个域名,第一个是主域名 *泛域名:进支持在最前或最 ...

  6. 自定义 UITableViewCell 的 accessory 样式

    对于 UITableViewCell 而言,其 accessoryType属性有4种取值: UITableViewCellAccessoryNone, UITableViewCellAccessory ...

  7. [BUUCTF]REVERSE——[FlareOn4]IgniteMe

    [FlareOn4]IgniteMe 附件 步骤: 例行检查,32位程序,无壳 32位ida载入 当满足第10行的if条件时,输出G00d j0b!提示我们成功,看一下sub_401050函数 3.s ...

  8. Eclipse切换不同版本的jdk

    var会在java1.8中报错,安装10版本以上的jdk可以解决问题,但是安装后Eclipse无法正常工作,后来发现是Eclipse没有切换版本,在网上找了好多教程都是切换系统变量,后来我发现可以直接 ...

  9. CF1095B Array Stabilization 题解

    Content 有一个长度为 \(n\) 的数组 \(a_1,a_2,a_3,...,a_n\),现在需要从这些数中删除一个数,使得 \(\max\limits_{i=1}^na_i-\min\lim ...

  10. CF20B Equation 题解

    Content 解方程 \(ax^2+bx+c=0\). 数据范围:\(-10^5\leqslant a,b,c\leqslant 10^5\). Solution 很明显上求根公式. 先来给大家推推 ...