一、MongoDB副本集(repl set)介绍

早起版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主;

目前已经淘汰了master-slave模式,改为副本集,这种模式下有一个主(primary),和多个从(secondary),只读,支持给他们设置权重,当主宕掉后,权重最高的从切换为主;

在此架构中还可以建立一个仲裁(arbiter)的角色,它只负责裁决,而不存储数据

在此架构中读写数据都是在主上,要想实现负载均衡的目的需要手动指定读库的目标server

二、MongoDB副本集搭建

服务器环境准备

三台服务器都是CentOS release 6.5 (Final)

192.168.1.203(primary)

192.168.1.201(secondary)

192.168.1.202(secondary)

编辑三台机器的配置文件,加入如下内容

replication:

oplogSizeMB: 20 #oplog大小

replSetName: fansik #名称自定义

重启三台MongoDB服务

连接主,在主上运行命令mongo,然后

> use admin

>config={_id:"fanjinbao",members:[{_id:0,host:"192.168.1.203:27017"},{_id:1,host:"192.168.1.201:27017"},{_id:2,host:"192.168.1.202:27017"}]}

> rs.initiate(config)

> rs.add("192.168.1.201")

> rs.add("192.168.1.202")

> rs.status() # 查看状态

如果两台从上的状态为"stateStr" : "STARTUP",则需要进行如下操作> var config={_id:"fanjinbao",members:[{_id:0,host:"192.168.1.203:27017"},{_id:1,host:"192.168.1.201:27017"},{_id:2,host:"192.168.1.202:27017"}]}

> rs.initiate(config)

此时再次查看rs.status()会发现从的状态变为SECONDARY

三、MongoDB副本集测试

主上建库建集合

use mydb

db.acc.insert({AccountID:1,UserName:"123",passwd:"123456"})

show dbs

从上查看

show dbs如果出现系列错误

2016-05-13T00:03:36.719+0800 E QUERY    Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }

执行

rs.slaveOk()

show dbs就可以看到创建的数据库了

四、副本集更改权重模拟主宕机

默认三台机器权重都为1,如果任何一个权重设置为比其他的高,则该台机器马上切换为primary角色,所以我们预设三台机器的权重为别为203:3,201:2,202:1

在主上执行:

cfg = rs.conf()

cfg.members[0].priority = 3

cfg.members[1].priority = 2

cfg.members[2].priority = 1

rs.reconfig(cfg)

这样的话,第二个节点将会成为候选节点

主上丢弃掉从端口27017进入的数据包

iptables -I INPUT -p tcp --dport 27017 -j DROP

五、MongoDB备份和恢复

备份指定库

# mongodump -h ip -d dbname -o dir #-h后面跟服务器ip,-d后面跟database名字,不加则备份所有库,-o指定备份到哪里,他是一个目录

备份所有库

# mongodump -h 192.168.1.203 -o /tmp/

备份指定集合

# mongodump -d fansik -c zhangsan -o /tmp/fansik #-c指定集合的名字

导出集合为json文件

# mongoexport -d mydb -c fansik -o /tmp/test.json #-o后面跟的是一个文件的名字

恢复所有库

# mongorestore --drop dir/ #其中dir是备份所有库的目录名字 其中--drop可选,意思恢复前先将数据删除,不建议使用

恢复指定库

# mongorestore -d mydb /mydb #-d恢复的库名字,mydb是该库备份目录

恢复集合

# mongorestore -d mydb -c zhangsan /fansik/zhangsan.bson #-c后面是要恢复的集合的名字,然后指定恢复的集合文件,bson格式的文件

导入集合

# mongoimport -d mydb -c test --file /tmp/test.json

MongoDB副本集搭建及备份恢复的更多相关文章

  1. windows版本 MongoDB副本集搭建及开启身份验证

    ------------恢复内容开始------------ ------------恢复内容开始------------ MongoDB副本集搭建 我搭建的是一个主节点,两个副节点 构建目录结构如下 ...

  2. mongodb副本集搭建过程中的问题和解决技巧

    在我以往的认知中,一个系统一旦正式上线,多半不会轻易的迁移服务器,尤其是那种涉及到多个关联应用,涉及到多台硬件服务器的系统,因为这种迁移将是牵一发而动全身的. 但是,却仍然有这种情况存在,就如我这几天 ...

  3. MongoDB 副本集搭建

    搭建mongodb副本集 [root@ mongodb]# cd /u02 [root@ u02]# mkdir -p mongodb/data_2777 [root@ u02]# mkdir -p ...

  4. MongoDB副本集--Secondary节点实例恢复

    场景描述 MongoDB副本集中有一台Secondary节点出现RECOVERING的状态 状态如下: arps:RECOVERING> rs.status() { "set" ...

  5. MongoDB 副本集搭建 & 副本集扩容

    副本集的搭建 创建多实例目录 [root@redis03 ~]# mkdir /server/mongodb/2801{7,8,9}/{conf,logs,pid,data} -p 编辑多实例配置文件 ...

  6. Mongodb副本集搭建经验

    一.环境配置经验 1.一般安装的副本集的时候,主实例可以有数据库和用户:从实例不能.仲裁机不能有任何数据库包括用户 2.搭建副本集的时候Host使用外网IP,否则使用Mongodb VUE 1.6.9 ...

  7. mongodb副本集搭建

    1.创建目录 mkdir -p /data/r1  /data/r2  /data/r3 2.启动: bin/mongod --config ../mongod.conf --replSet r1 b ...

  8. 在centos7上搭建mongodb副本集

    1.安装副本集介绍 副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的 ...

  9. mongodb 4.0副本集搭建

    近期有同学问mongodb副本集难不难部署,我的回答是不难,很快,几分钟搞定,比mysql MHA简单的不止一点半点. 那么到底如何部署呢?请看下文. 1.  准备工作 1.1 下载软件 选择版本并下 ...

随机推荐

  1. C++-static的用法

    static成员变量 为什么要有静态成员变量:1)不进入全局名字空间.2)实现信息隐藏 要点: 除了整型的const 静态成员变量可以在类体内初始化,其它值都需要在类体外的实现文件定义 static函 ...

  2. HDU 5451 广义斐波那契数列

    这道题目可以先转化: 令f(1) = 5+2√6 f(2) = f(1)*(5+2√6) ... f(n) = f(n-1)*(5+2√6) f(n) = f(n-1)*(10-(5-2√6)) = ...

  3. Program A-归并排序

    Description In this problem, you have to analyze a particular sorting algorithm. The algorithm proce ...

  4. java基础之 泛型

    泛型(Generic type 或者generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法 ...

  5. 【转发】Linux下清除系统日志方法

    摘要:相信大家都是用过Windows的人.对于Windows下饱受诟病的各种垃圾文件都需要自己想办法删除,不然你的系统将会变得越来越大,越来越迟钝!windows怎么清理垃圾相信大家都知道的,那么li ...

  6. vi编辑器选项

    Vi编辑器有一些选项设置可以帮助人们更好的使用. 在vi中选项分为两种: 1.  开关选项,如果要打开这类选项就使用ex命令——:set 选项:如果要关闭这类选项就是用ex命令——:set  no选项 ...

  7. WIN中SharePoint Server 2010 入门安装部署详解

    目前流行的原始安装文件基本都是这样的:Windows Server 2008 R2+SQL Server 2008R2+SharePoint Server 2010     这个初始环境原本也无可厚非 ...

  8. hdu 2055

    PS:上课的时候敲的..这道题简单..一次AC,不多说了.. 代码: #include "stdio.h"int main(){ int i,n,y; char x,a[26],b ...

  9. 搭建EJB3开发环境

    开发工具:myeclipse8.5.antjdk:1.5容器:jboss4.2.31.安装jboss:解压.配置JBOSS_HOME环境变量2.测试安装是否成功:启动%JBOSS_HOME%\bin\ ...

  10. HID高级攻击姿势:利用PowerShell脚本进行文件窃取

    0×01 引言 又到了期中考试了,我又要去偷答案了,一直发现远程下载运行exe的方式不太好,容易报毒所以这里打算用ps脚本. 0×02 关于HID HID是Human Interface Device ...