一、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. 【Linux】【Services】【SaaS】Docker+kubernetes(1. 基础概念与架构图)

    1.简介 1.1.  背景:公司正在进行敏捷开发环境的搭建,以取代传统的架构,好处大大的,我就不赘述了.公司原来负责这个项目的同事要转组,我只好交给另外同事继续,但是为了防止同样的事情,我也需要深入了 ...

  2. List如何一边遍历,一边删除?

    1.新手常犯的错误 可能很多新手(包括当年的我,哈哈)第一时间想到的写法是下面这样的: public static void main(String[] args) { List<String& ...

  3. CDN服务的含义

    CDN的全称是Content Delivery Network,即内容分发网络.CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全 ...

  4. 【Spark】【复习】Spark入门考前概念相关题复习

    Spark考前概念相关题复习 AUthor:萌狼蓝天 哔哩哔哩:萌狼蓝天 博客园:我的文章 - 萌狼蓝天 博客:萌狼工作室 - 萌狼蓝天 (mllt.cc) 选择题 Hadoop 1.HADOOP的三 ...

  5. python3.6.4 scrapy框架from PIL import Image报错 from . import _imaging as core

    scrapy框架爬取url下载图片时,用ImagesPipeline下载图片 from PIL import Image报错 from . import _imaging as core Import ...

  6. RDS备份到OSS增量+全量

    一.前言 阿里云的RDS备份是占用使用量的,你购买200G那备份使用量是100G左右,导致备份一般也就存半个月,2个全备份. 那半个月后之前的也就删除了,如果要持续保留更久将花费不少的金钱.所以这里用 ...

  7. Mysql资料 数据类型

    目录 一.类型 整型 浮点型 定点数 字符串 二进制数据 时间日期类型 二.长度和范围 三.使用建议 原则 存储引擎 text和blob 浮点数和定点数 四.属性 一.类型 整型 取值范围如果加了un ...

  8. Python 的元类设计起源自哪里?

    一个元老级的 Python 核心开发者曾建议我们( 点击阅读),应该广泛学习其它编程语言的优秀特性,从而提升 Python 在相关领域的能力.在关于元编程方面,他的建议是学习 Hy 和 Ruby.但是 ...

  9. 再识requests

    高级用法 本篇文档涵盖了 Requests 的一些高级特性. 会话对象 会话对象让你能够跨请求保持某些参数.它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 url ...

  10. linux 下查看文件修改时间

    linux 下查看文件修改时间 等 http://blog.sina.com.cn/s/blog_6285b04e0100f4xr.html 查看文件时间戳命令:stat awk.txtFile: ` ...