MongoDB副本集搭建及备份恢复
一、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副本集搭建及备份恢复的更多相关文章
- windows版本 MongoDB副本集搭建及开启身份验证
------------恢复内容开始------------ ------------恢复内容开始------------ MongoDB副本集搭建 我搭建的是一个主节点,两个副节点 构建目录结构如下 ...
- mongodb副本集搭建过程中的问题和解决技巧
在我以往的认知中,一个系统一旦正式上线,多半不会轻易的迁移服务器,尤其是那种涉及到多个关联应用,涉及到多台硬件服务器的系统,因为这种迁移将是牵一发而动全身的. 但是,却仍然有这种情况存在,就如我这几天 ...
- MongoDB 副本集搭建
搭建mongodb副本集 [root@ mongodb]# cd /u02 [root@ u02]# mkdir -p mongodb/data_2777 [root@ u02]# mkdir -p ...
- MongoDB副本集--Secondary节点实例恢复
场景描述 MongoDB副本集中有一台Secondary节点出现RECOVERING的状态 状态如下: arps:RECOVERING> rs.status() { "set" ...
- MongoDB 副本集搭建 & 副本集扩容
副本集的搭建 创建多实例目录 [root@redis03 ~]# mkdir /server/mongodb/2801{7,8,9}/{conf,logs,pid,data} -p 编辑多实例配置文件 ...
- Mongodb副本集搭建经验
一.环境配置经验 1.一般安装的副本集的时候,主实例可以有数据库和用户:从实例不能.仲裁机不能有任何数据库包括用户 2.搭建副本集的时候Host使用外网IP,否则使用Mongodb VUE 1.6.9 ...
- mongodb副本集搭建
1.创建目录 mkdir -p /data/r1 /data/r2 /data/r3 2.启动: bin/mongod --config ../mongod.conf --replSet r1 b ...
- 在centos7上搭建mongodb副本集
1.安装副本集介绍 副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的 ...
- mongodb 4.0副本集搭建
近期有同学问mongodb副本集难不难部署,我的回答是不难,很快,几分钟搞定,比mysql MHA简单的不止一点半点. 那么到底如何部署呢?请看下文. 1. 准备工作 1.1 下载软件 选择版本并下 ...
随机推荐
- bitset常用函数用法记录 (转载)
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值.位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法.标准库提供了bitset类使得处理位集合更容易一些.要使 ...
- (转)iOS应用架构谈 view层的组织和调用方案
前言 <iOS应用架构谈 开篇>出来之后,很多人来催我赶紧出第二篇.这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分. 现在好啦,第二 ...
- [vijos P1531] 食物链
做出的第一道NOI题目?(噗,还是看题解才会的…按某篇解题说的,这题就比我年轻四岁…T T 做的第一道IOI题目是USACO上的Packing Rectangles...这题比我还老!)对我等弱渣来说 ...
- 使用Myeclipse创建自定义签名debug keystore
1.在已经创建后的android项目上右击鼠标,如图所示 2.选择next下一步 3.选择create new keystore 注意 这里密码要输入android 4.点击next,录入基本信息 ...
- CodeForces 540C Program D
Description You play a computer game. Your character stands on some level of a multilevel ice cave. ...
- iOS开发多线程篇—线程间的通信(转)
这里转载 给自己一个备份 一.简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转 ...
- poj2129 dp
//Accepted 320 KB 47 ms //dp //dp[i][j]=1 表示用s1的前i个,s2的前j个字符能构成s3的前i+j-1个字符 //dp[i][j]=0 表示构不成 //dp[ ...
- form表单select联动
下拉列表:二级联动菜单 Select对象的常用属性 options[]:返回所有option组成的一个数组: name:名称 value:option的value的值 length:设置或读取opti ...
- 预编译 .pch文件
如果工程导入了其他编程语言文件混编的时候 .pch文件会在程序开始的时候导入所有头文件,需要 '预编写命令' 区分编程语言的头文件. 下面报错就是因为工程导入了.c 文件 .pch全局导入了O ...
- AutoCAD ObjectARX(VC)开发基础与实例教程2014版光盘镜像
AutoCAD ObjectARX(VC)开发基础与实例教程2014,最新版,光盘镜像 作者:张帆 朱文俊 编著 出版社:中国电力出版社 出版时间:2014年6月 点击一下