mongo一主多从

为什么要做一主多从?

mongodb天生就是为了分布式而生的,为了保证数据读写分离和数据安全,把数据放在不同的机子上,可以减少主节点的读压力,而让从节点去承受读请求压力。

主节点用于写,然后同步到从节点去。同样当主节点挂掉之后,由于还有从节点,可以进行自动选举,重新生成一个主节点。我之前使用的单个主从,一旦主节点挂了,从节点无法自动根据选举机制成为主节点,这样会造成一直等待的结果。根据实验和经验,奇数个实例或者说节点利用率更高,也更有容灾性。

我在自己的项目中也开始决定这么做,不过由于我没有太多闲置的云服务器,所以我运行三个不同端口的实例来做这个一主二从。

分别写三个配置文件:

master:

port=27017      

fork=true      

logpath=/usr/local/mongodb/logs/mongodb.log  

logappend=true  

dbpath=/usr/local/mongodb/data  

maxConns=1024    

master=true      

oplogSize=2048

slave1:

port=27018  

fork=true      

logpath=/usr/local/mongodb/logs/slave1.log  

logappend=true  

dbpath=/usr/local/mongodb/data/slave1  

maxConns=1024    

slave=true      

oplogSize=2048
source=127.0.0.1:27017 autoresync=true

slave2:

port=27019 

fork=true      

logpath=/usr/local/mongodb/logs/slave2.log  

logappend=true  

dbpath=/usr/local/mongodb/data/slave2 

maxConns=1024    

slave=true      

oplogSize=2048
source=127.0.0.1:27017 autoresync=true

然后连续起三个实例:

mongod -f /usr/local/mongodb/conf/mongod.conf & mongod -f /usr/local/mongodb/conf/slave1.conf & mongod -f /usr/local/mongodb/conf/slave2.conf

当然如果之前有数据,还需要导出历史数据,命令如下:

mongodump -h dbhost -d dataname [-c collectioName] -o /out/path

导出的bson的格式数据,非常的省内存。

导入数据命令如下:

mongorestore -h dbhost -d databaseName /out/path

引入单个collection:

mongorestore --collection people --db accounts dump/accounts/people.bson

感谢mongo,让主从架构变得如此简单。

更多关于mongorestore的命令参数和使用,见这个链接

我是实践派之mongo的一主多从的更多相关文章

  1. 《大话操作系统——做坚实的project实践派》(2)

      <大话操作系统--做坚实的project实践派>(2) 

  2. Docker Mongo数据库主主同步配置方法

    一.背景 不多说,请看第一篇<Docker Mongo数据库主从同步配置方法> 二.具体操作方法 1.创建目录,如创建~/test/mongo_sr1和-/test/mongo_sr2两个 ...

  3. 《大话操作系统——做坚实的project实践派》(6)

     继续写硬件体系.这个不写完.不会写操作系统内核.由于根基不正,则难于达到上层境地.

  4. 《大话操作系统——做坚实的project实践派》(5)

    有人说我不是仅仅会玩X86吗?我如今铁板钉钉的申明:我事实上兼通:ARM.IA-32.IA-32e.AMD64. ​了解MIPS.但没做过MIPS由于确实没有对应的MIPS硬件平台. ​

  5. 《大话操作系统——做坚实的project实践派》(3)

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG1ub3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...

  6. 《大话操作系统——做坚实的project实践派》(4)

     操作系统内核必需要关注一个详细硬件平台的设备 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG1ub3M=/font/5a6L5L2T/fontsi ...

  7. 《大话操作系统——做坚实的project实践派》(7)

     写操作系统内核须要了解一个详细计算平台的CPU,包含这个CPU里的寄存器和异常中断处理机制

  8. 《大话操作系统——扎实project实践派》(8.2)(除了指令集.完)

  9. ajax的再次封装!(改进版) —— new与不 new 有啥区别?

    生命不息重构不止! 上一篇写了一下我对ajax的再次封装的方法,收到了很多有价值的回复,比如有童鞋建议用$.extend,一开始还以为要做成插件呢,后来才知道,原来这个东东还可以实现合并.省着自己再去 ...

随机推荐

  1. 1cocos2dx扩展UI控制,CCControlSlider,CCScale9Sprite(九妹图。),CCControlSwitch,CCControlButton

     UI控件来自cocos2dx的扩展库.完好了UI方面的元素,使cocos2dx更加丰富多彩.使用扩展库需包括: #include "cocos-ext.h" USING_NS ...

  2. Android Studio之同一应用创建多个Activity(一)

    1. 2. 3. 4. 本文主要是构建多个Activity的过程.

  3. leetcode第13题--Roman to Integer

    Problem: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range ...

  4. MEF简介及简单的Demo

    MEF简介及简单的Demo 文章开始之前,首先简单介绍一下什么是MEF,MEF,全称Managed Extensibility Framework(托管可扩展框架).单从名字我们不难发现:MEF是专门 ...

  5. SQL Server中如何备份存储过程(SP)和函数(Fun)

    考虑到安全因素,我们经常需要对数据库的存储过程(SP)和函数(Fun)进行备份 下面提供了一种简单的方式, 存储过程(SP)SQL代码如下: select p.name as SpName,m.def ...

  6. linux sendmail 邮件服务器架设(fedora 8)

    linux sendmail 邮件服务器架设(fedora 8) 2009-01-22 17:27 3316人阅读 评论(2) 收藏 举报 邮件服务器linuxprotocolscaching测试lo ...

  7. C#程序员阅读的书籍

    推荐几本C#程序员阅读的书籍   楼主这些年一直追随微软技术,也看了不少书籍,整理出一些个人认为不错的经典,推荐给各位阅读,以共同进步. 推荐顺序是由浅入深,深入浅出. <Professiona ...

  8. Android控件RecyclerView与ListView的异同

    在我的一篇介绍Android新控件RecyclerView的博客(Android L新控件RecyclerView简介)中,一个读者留言说RecyclerView跟ListView之间好像没有什么不同 ...

  9. Json.Net6.0

    Json.Net6.0入门学习试水篇   前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表 ...

  10. IP地址爬取

    ip_spider.py= = = #!/usr/bin/python # coding: utf-8 import os import sys import requests import re i ...