一.为什么要配置mongodb的主从:

1.做主从,可以说是做数据的备份,有利于故障的恢复

2.做主从,可以做到读写分离,主节点负责写操作,从节点负责读操作,这样就把读写压力分开,保证系统的稳定性.

二.主从服务器的实现原理

首先,主节点会把本服务的与写有关的操作记录下来,读操来不记录,这些操作就记录在local数据库中的oplog.$admin这个集合中,这是一个固定集合,大小是可以配置的,主要是通过配置oplogSize这个参数来实现,单位是M,大小一般为磁盘剩余空间的5%左右.因为是固定集合所以当固定集合放满日志的时候,新进来的日志就会把最旧的日志覆盖掉,如果这个值设置的不合理,导致数据很快的被覆盖,而从节点没有来得及更新,这样就会产生数据不同步的情况.设置为主节点的local数据库有会有oplog.$admin与slave这两个集合.slave记录的是从节点的信息.

从节点与主节点的数据同步主要是从节点定时的会去连接主节点,请求主节点的操作日志,从而对自己的数据副表进行同样的操作来达到数据的同步.从节点的local数据库中会多了source与me这两个集合,source是记录主节点的信息,me是记录从节点的标识

三.mongodb主从配置中的知识点

1.主节点的配置主要是通过在启动mongodb时带上--master这个参数

2.从节点主要是通过参数--slave和--source 这两个参数 --source这个参数的值是 ip:端口

四.配置主从

首先要准备至少两台服务器,我这里准备的两台是192.168.1.1,192.168.1.2,并且这两台服务器都要装好了mongodb,怎么安装这里就不说明了.通信接口是27017,接下来我们就来开始动手吧

1.配置主节点

创建数据的存放目录与日志的存放目录:

mkdir /mongodb/master

mkdir /mongodb/log

接着把主节点的配置写在一个配置文件中,从而来启动的时候能用--config这个参数来指定配置,配置文件内容如下.

dbpath=/mongodb/master

logpath=/mongodb/log/master.log

master=true

fork=true

port=27017

oplogSize=2048

写好配置文件后,我们就可以启动一个主节点了:

/mongodb/bin/mongod --config /mongodb/bin/mongodb.conf

2.配置从节点

创建数据的存放目录与日志的存放目录:

mkdir /mongodb/slave

mkdir /mongodb/log

接着写从节点的配置文件.

dbpath=/mongodb/slave

logpath=/mongodb/log/slave.log

slave=true

source=192.168.1.2:27017

fork=true

port=27017

autoresync=true

写好配置文件后,我们就可以启动一个主节点了:

/mongodb/bin/mongod --config /mongodb/bin/mongodb.conf

到这里基本主从就配置完了,你可以查看主节点的local数据库里有没有slave,oplog.$admin,从节点中有没有source,me这几个集合

接下来你可以主节点创建数据库插入数据看看从节点是否同步过去了.这些都可以通过查看日志来查看的

五.查看主从的状态

db.printReplicationInfo():查看主节点的状态

db.printSlaveReplicationInfo():查看从节点的状态

六.改变oplogSize的大小

变更oplog的大小,这是一个挺大的工程
  首先要停掉主节点,然后删除local数据库.
  rm /data/db/local.*
  接着再以--oplogSize来重新定义大小.
  mongod --master --oplogSize 多少MB
  再以--autoresync的选项重启所有从节点.

注:如果是在linux中记得在防火墙中开放主从连接的端口

主从的架构所要面临的问题:

1.如果读写都是对主节点的操作,那主节点无疑是压力过大.

2.如果主节点挂掉了,那这个架构就失效了

3.如果多个从节点从主节点复制数据,主节点压力会不会过大.

mongodb系列之--mongodb 主从配置与说明的更多相关文章

  1. mongodb系列之---副本集配置与说明

    在配置副本集之前,我们先来了解一些关于副本集的知识. 1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置 ...

  2. MongoDB(四)-- 主从配置

    一.前言 虽然MongoDB官方已经不建议使用主从模式了,但是 熟悉下 也是有用的,替代方案是采用副本集的模式.slave默认情况下是不支持读写的,但是master会把数据同步到slave,不支持客户 ...

  3. Mongodb系列之--mongodb的启动与关闭

    Mongodb的开启   默认启动:   $ ./mongodb   默认数据保存路径:/data/db/ 默认端口:27017   修改默认路径:   --dbpath $ ./mongdb --d ...

  4. mongodb 的主从配置

    mongoDB主从配置如下: 主库: port=27017 dbpath=/usr/local/mongodb/data logpath=/usr/local/mongodb/log/mongodb. ...

  5. 14.MongoDB系列之配置分片

    1. 启动服务器 1.1 启动配置服务器 配置服务器是集群的大脑,保存着关于每个服务器包含哪些数据的所有元数据,因此,必须首先创建配置服务器. 由于资源限制,在同一机器上启动三个进程 # mkdir ...

  6. MongoDB系列之三(副本集配置)

    今天我测试了一下MongoDB的副本集的配置. 首先从概念上说一下MongoDB副本集和主从复制的区别.其实副本集(Replica Set)是主从复制的高级形式.高级在哪里呢?主动复制实现了数据备份+ ...

  7. mongodb主从配置信息查看与确认

    在local库中不仅有主从日志 oplog集合,还有一个集合用于记录主从配置信息 system.replset: > use local > show collections > d ...

  8. MongoDB系列之二(主动复制)

    目前我正在进行MongoDB的双机热备方面相关的工作.根据我目前看到的MongoDB方面的材料,MongoDB的实际部署有三种方式,分别是“主动复制”,“副本集”以及“分片副本集”. 首先我们从最简单 ...

  9. mongoDB系列之(二):mongoDB 副本集

    1. 什么是副本集 副本集就是mongoDB副本所组成的一个集群. 同期原理是,写操作发生在主库,从库同步主库的OpLog日志. 集群中没有特定的主库,主库是选举产生,如果主库down了,会再选举出一 ...

随机推荐

  1. PHP+MySQL 分页那点事

    分页技术随处可见,这可以算得上是最为基础的网站功能了.于是今天尝试着用PHP来实现一个分页的小例子. 准备工作 环境准备 Apache MySQL PHP 工作环境 数据库准备 建库 建表 预存数据 ...

  2. Android在一个TextView里显示不同样式的字体

    在同一个TextView里显示不同样式的字体 public void setSpan(Object what, int start, int end, int flags); 样式1:背景色.粗体.字 ...

  3. No Team Selected:A team must be selected to run 'ProjectName' on iPhoneName

    1. 现象:发布在 app store 的 qzone,app bundle identifier:com.tencent.qzone证书支持com.tencent.*然后自已写的测试demo,bun ...

  4. springmvc文件上传和拦截器

    文件上传 用到这两个包 配置视图解析器:springmvc配置文件配置 <!-- id必须要是"multipartResolver" --> <bean id=& ...

  5. 3-sum问题

    给定一个整数数组,判断能否从中找出3个数a.b.c,使得他们的和为0,如果能,请找出所有满足和为0个3个数对. #define SIZE 10 void judgeAndPut(int* arr, i ...

  6. 【ShaderToy】边栏的小雨伞

    写在前面 我在9月份的时候对博客的主页换了个模板,一些童鞋可能会发现边栏多了个小雨伞的动画,再细心的同学可能会发现如果一直开着我的博客电脑耗电更快了--当然啦,也有可能你看到的是一团黑,这说明你该换更 ...

  7. 剑指offer面试题5 从头到尾打印链表(java)

    注:(1)这里体现了java数据结构与C语言的不同之处 (2)栈的操作直接利用stack进行 package com.xsf.SordForOffer; import java.util.Stack; ...

  8. JDBC的使用五大步骤以及查询操作-数据库编程(二)

    jdbc的使用步骤 1.加载jdbc的驱动. 2.打开数据库的连接. 3.建立一个会话,然后执行增删改查等基本的操作. 4.对结果进行处理 5.对环境进行清理,比如关闭会话等. 查询操作 首先用Cla ...

  9. Android项目开发填坑记-Fragment的onBackPressed

    Github版 CSDN版 知识背景 Fragment在当前的Android开发中,有两种引用方式,一个是 Android 3.0 时加入的,一个是supportV4包中的.这里简称为Fragment ...

  10. Android开发学习之路--Annotation注解简化view控件之初体验

    一般我们在写android Activity的时候总是会在onCreate方法中加上setContentView方法来加载layout,通过findViewById来实现控件的绑定,每次写这么多代码总 ...