MongoDB 主从和Replica Set
目前主要的MongoDB高可用架构包含:
主从架构
Replica set副本集方式
sharding分片
本文不讨论sharding,在另一篇博客中单独描述了sharding的架构和搭建方式,参考:MongoDB Sharding分片配置
一、主从架构
https://docs.mongodb.com/v3.6/core/master-slave/index.html
dbpath = /home/wang/mongodbDATA/master
port = 27017
bind_ip = 192.168.1.100 --3.6开始mongodb默认bind本地localhost
master = true
dbpath = /home/wang/mongodbDATA/slave
port = 27017
bind_ip = 192.168.1.101
source = 192.168.1.100:27017
slave = true
db.isMaster()
rs.printReplicationInfo() --只能在master执行
rs.printSlaveReplicationInfo() --只能在slave执行
Master-slave架构主库宕机后备库不能自动切换,因此官方推荐使用replica set。且自3.2版本以后shard环境已经不再允许使用master-slave只能使用replica set。
- 关闭master节点
- 关闭slave节点
- 备份并删除slave节点的dbpath下的所有local开头的文件
- 修改slave节点的配置文件,将其角色变为master。(注意此过程是不可逆的,原master节点想要成为slave必须重做一次full initial sync)
如何将主从架构转变为replica set架构:(事实上主从不能直接转化为副本集,只能先转为单节点replica set,然后rs.add()添加节点,这需要secondary进行数据初始化)

dbpath=/mongodb/data/
logpath=/mongodb/log/mongo.log
pidfilepath=/mongodb/mongo.pid
directoryperdb=true
logappend=true
replSet=rep
port=27017
oplogSize=10000
fork=true
noprealloc=true
use admin
cfg={ _id:"rep", members:[ {_id:0,host:'192.168.20.70:27017',priority:2}, {_id:1,host:'192.168.20.71:27017',priority:1},
{_id:2,host:'192.168.20.72:27017',arbiterOnly:true}] };
--priority的取值范围为0-1000,值越大优先级越高,可以为小数。
(一般不设为0,普通节点默认为1,仲裁节点默认为0,仲裁节点即便设置为1也会自动变成0)
--如果priority设为0,那么意味着此节点永远不会变为主,但是有投票权。
--修改此参数操作参见:https://docs.mongodb.com/manual/tutorial/adjust-replica-set-member-priority/index.html
--关于hidden副本集参见:https://docs.mongodb.com/manual/core/replica-set-hidden-member/#replica-set-hidden-members
###########
初始化生效:
###########
rs.initiate(cfg)
rs.status()
"stateStr" : "RECOVERING" --表示配置正在生效,生效后为PRIMARY/SECONDARY/ARBITER
注意slave默认是不允许读写的,如果想要读,那么需要执行rs.slaveOk()
MongoDB 主从和Replica Set的更多相关文章
- mongodb系列之--mongodb 主从配置与说明
一.为什么要配置mongodb的主从: 1.做主从,可以说是做数据的备份,有利于故障的恢复 2.做主从,可以做到读写分离,主节点负责写操作,从节点负责读操作,这样就把读写压力分开,保证系统的稳定性. ...
- mongodb 主从
mongodb 主从 因为条件限制我们把主从放在一台服务器上面 相关参数 在启动从的时候可以增加以下参数 --autoresync 当发现从服务器的数据不是最新时,开始从主服务器请求同步数据 --sl ...
- MongoDB自学------(4)MongoDB主从搭建
MongoDB复制原理 mongodb的复制至少需要两个节点.其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据. mongodb各个节点常见的搭配方式为:一主一从.一主多 ...
- MongoDB学习笔记——Replica Set副本集
副本集 可以将MongoDB中的副本集看作一组服务器集群由一个主节点和多个副本节点等组成,相对于之前讲到的主从复制提供了故障自动转移的功能 副本集实现数据同步的方式依赖于local数据库中的oplog ...
- mongodb复制集Replica Set使用简介
MongoDB高可用 对于MongoDB,可以支持使用单机模式提供服务,但是在实际的生产环境中,单机模式将面临很大的风险,一旦这个数据库服务出现问题,就会导致线上的服务出现错误甚至崩溃.因此,在实际生 ...
- mongodb主从备份 和 手动主从切换
环境: 主机A:172.16.160.91 主机B:172.16.160.92 配置主机A [root@master zhxf]# cat docker-compose.yml version: '3 ...
- MongoDB整理笔记のReplica oplog
主从操作日志oplog MongoDB的Replica Set架构是通过一个日志来存储写操作的,这个日志就叫做"oplog".oplog.rs是一个固定长度的capped coll ...
- MongoDB主从配置
master的配置 # cat mongod.conf dbpath = /app/sinova/mongodata/db #指定数据库目录 logpath = /app/sin ...
- mongodb主从(副本集附仲裁节点)部署带认证模式
环境:OS:CentOS 7DB:3.0.15机器角色:192.168.1.134:10001 主192.168.1.135:10002 从192.168.1.135:10003 仲裁节点 1.下载相 ...
随机推荐
- jdk8 分隔字符串最新方法
//已字符串分隔方法最新 方法 StringJoiner stringJoiner=new StringJoiner(","); stringJoiner.add("a& ...
- Session提要
Session即会话,批一种持续性的.双向的链接.Sesstion和Cookie本质上没有什么区别,都是针对HTTP协议的局限性而提出的一种保持客户端和服务器间保持会话连接状态的机制. S ...
- Hyperledger Fabric之模型
本文主要介绍Hyperledger Fabric的主要设计特点,为了满足功能丰富.可定制.企业化区块链解决方案. Assets - 资产定义,使得任何形式的资产,从食物到汽车到货币都可以进行自由的交换 ...
- .net 数据类型转换int.Parse()与int.TryParse
int.Parse()是一种类容转换:表示将数字内容的字符串转为int类型. 如果字符串为空,则抛出ArgumentNullException异常: 如果字符串内容不是数字,则抛出FormatExce ...
- IdnentiyServer-使用客户端凭据访问API
情景如下:一个客户端要访问一个api,不需要用户登录,但是又不想直接暴露api给外部使用,这时可以使用identityserver添加访问权限. 客户端通过clientid和secrect访问iden ...
- [android] 采用pull解析xml文件
/***********2016年5月6日 更新**********************/ 知乎:Android 中有哪几种解析 xml 的类,官方推荐哪种 ? 以及它们的原理和区别? 刘吉财: ...
- ANOVA (paper from the onlinestat)
Introduction Author(s) David M. Lane Prerequisites Variance, Significance Testing,All Pairwise Compa ...
- Flask 系列之 HelloWorld
说明 操作系统:Windows 10 Python 版本:3.7x 虚拟环境管理器:virtualenv 代码编辑器:VS Code 实验目标 创建一个显示 Hello World 页面的网站. 环境 ...
- Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/CanUnbuffer
在执行spark on hive 的时候在 sql.show()处报错 : Exception in thread "main" java.lang.NoClassDefFoun ...
- HTTP与HTTPs的区别?
简而言之: HTTPS = HTTP + SSL HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头 HTTP 是不安全的,而 HTTPS 是安 ...