MongoDB 学习笔记(七):主从复制与副本集
一、主从复制
1、主从复制是一个简单的数据库同步备份的集群技术,如下图:要明确的知道主服务器与从服务器,且从服务器要明确的知道主服务器的存在。
2、在MongoDB中在启动数据库服务时,可以用master参数来指定主服务器,如下图:bind_ip是主数据库所在服务器IP
而用slave参数可以指定从服务器,如下图:source参数用于指定主服务器
以上两个数据库的关系如下图:这样过后,在主数据库中的操作就会立马在从数据库中进行复制。
3、常用配置参数
- --only:用于配置从服务器,指定复制某个数据库。默认是复制全部数据库。
- --slavedelay:用于配置从服务器,指定从主服务器同步数据的延迟(单位是秒)。
- --fastsync:用于配置从服务器,把内存中的数据马上写回主服务器数据库,然后从服务器进行复制。
- --autoresync:用于配置从服务器,如果从服务器是在主服务器运行一端时间之后才挂上来的,那么指定了此项参数后,从服务器会同步挂接上来之前那段时间主服务器中的数据;如果没有此参数,那么只会从当前挂接时间进行主从复制。
- --oplogSize:用于配置主服务器,配置主服务器的日志大小。日志会把主服务器的操作都记录下来,从服务器从主服务器的日志中读取数据,然后在自己的数据库中操作一次来完成主从复制。主服务器数据库操作记录存储在local数据库的oplog.$main集合中,它的每一个文档都会保存一个服务器的操作。
4、利用shell动态添加和删除从服务器
如下图所示,这是在上面那台从服务器中shell界面的操作结果,可以得知从服务器关于主服务器的信息全部保存在从服务器的local数据库的sources集合中。所以只要对该集合进行操作就可以动态的配置从服务器。
删除这台从服务器配置的主服务器,如下图:
为从服务器挂接主服务器,如下图:
二、副本集
1、如下图所示有一个数据库集群,集群中有三台数据库服务器,一台活跃服务器和两台备份服务器。当活跃服务器A发生故障时,会根据权重算法从备份服 务器B和C中选出B作为新的活跃服务器,而当A恢复时当成备份服务器,继续加入到整个数据库集群中工作,这就是MongoDB的副本集。
2、配置一个副本集
首先采用如下图的三个配置配置启动三台数据库服务器,三台服务器相互指向下一个服务器形成一个环。
然后就需要初始化副本集。进入到这三台数据库服务器中任何一个的admin数据库,执行如下图的操作来初始化副本集:这里没有设置这三台服务器的权重,MonggoDB推选活跃服务器的策略是随机的。
分别进入到这三台服务器的shell界面,如下:可以发现端口号为3333的服务器被推选成了活跃服务器,而其它两台就是备份服务器
在活跃服务器shell中可以使用“rs.status()”来查看副本集的状态。
此时如果把端口3333的活跃服务器关掉后,如下图所示:端口为2222的服务器就成为了活跃服务器。如果又把端口为3333的服务器启动,可以发现端口3333的服务器就成为了备份服务器。
3、节点
- standard:常规节点,参与投票,有可能成为活跃节点。如上的三台服务器都没有设置此参数,默认就是常规节点。
- passive:副本节点,参与投票,但不能成为活跃节点。
- arbiter:仲裁节点,只是参与投票,不复制节点,也不能成为活跃节点。
4、高级参数
- priority:设置权重。可设置0到1000之间,0代表的是副本节点,1到1000是常规节点。
- arbiterOnly:true表示设置仲裁节点。
- 用法:在前面的初始化副本集中,只设置了_id和host两个key,此时就可以加上priority与arbiterOnly等key来初始化副本集。
5、优先级
如下图所示,本来A是活跃节点,B和C为副本集,B节点是在1秒之前进行复制更新的,C节点是在5秒之前进行复制更新的,A宕机之后会自动选择B为活跃节点(复制更新时间离宕机时间最近)。这种优先级优先于权重,会先考虑时间的优先级。
6、读写分离操作
注意:默认情况下非活跃服务器(副本节点)是不能进行数据库读操作的。如下图:
如果要设置副本节点也可以进行读操作,那么可以设置slaveOkay参数为true。但是此属性在shell中无法完成,这个特性是被写到MongoDB的高级驱动程序中的。
MongoDB 学习笔记(七):主从复制与副本集的更多相关文章
- MongoDB 学习笔记之 分片和副本集混合运用
分片和副本集混合运用: 基本架构图: 搭建详细配置: 3个shard + 3个replicat set + 3个configserver + 3个Mongos shardrsname Primary ...
- MongoDB学习笔记(五)--复制集 && sharding分片
主从复制 主从节点开启 主节 ...
- MongoDB学习笔记(六)--复制集+sharding分片 && 总结
复制集+sharding分片 背景 主机 IP 服务及端口 Server A ...
- MongoDB学习笔记七:管理
[启动和停止MongoDB]『从命令行启动』执行mongod,启动MongoDB服务器.mongod有很多可配置的启动选项:在命令行运行mongod --help可以查看所有选项.一些主要选项如下: ...
- MongoDB学习笔记(四)--索引 && 性能优化
索引 基础索引 ...
- MongoDB的主从复制和副本集
mongoDB的两个特性主从复制和副本集,实现了数据的同步备份 一.主从复制 主从复制是一个简单的数据库同步备份的集群技术.例如主服务器宕机了,可以直接使用从服务器,主服务器恢复后在进行同步,保证了业 ...
- MongoDB主从复制和副本集
MongoDB有主从复制和副本集两种主从复制模式,主从复制最大的问题就是无法自动故障转移,MongoDB副本集解决了主从模式无法自动故障转义的特点,因此是复制的首选.对于简单的主从复制无法自动故障转移 ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- MongoDB学习笔记系列~目录
MongoDB学习笔记~环境搭建 (2015-03-30 10:34) MongoDB学习笔记~MongoDBRepository仓储的实现 (2015-04-08 12:00) MongoDB学习笔 ...
随机推荐
- linux邮件服务
linux本地常见邮件服务有: Centos5:默认使用sendmail邮件服务,开启方式/etc/init.d/sedmail start Centos6:默认使用postfix邮件服务,开启方式/ ...
- 46.object类型
主要知识点 1.field分类 2.object field类型的存储 一.field类型分类 1.multivalue field { "tags": [ "tag1& ...
- Git 基础教程 之 Bug分支和Stash
在Git中,每个Bug都可以通过一个新的临时分支修复,修复后,合并分支,然后删除. ① 当接到一个Bug任务时,但dev上进行的工作还没有提交时: ② git stash 把现场工作“储藏 ...
- Python SQLAlchemy ORM示例
SQLAlchemy的是Python的SQL工具包和对象关系映射,给应用程序开发者提供SQL的强大功能和灵活性. 安装 pip install mysql-python pip install sql ...
- 关于autoupgader的狗屎问题
由于win7和xp的权限问题,导致这个自动升级玩意不正常.这个狗屎问题很简单,把exe文件的兼容性设定该一下.真是气死洒家了.
- MySQL用Load Data local infile 导入部分数据后中文乱码
今天在两台MySQL服务器之间导数据,因为另一个MySQL服务器是测试用的,差一个月的数据,从现有MySQL服务器select到一个文件,具体语句是: select * from news where ...
- UVA - 348Optimal Array Multiplication Sequence(递推)
id=19208">题目:Optimal Array Multiplication Sequence 题目大意:给出N个矩阵相乘.求这些矩阵相乘乘法次数最少的顺序. 解题思路:矩阵相乘 ...
- csu 1030: 素数槽
素数槽 Description 处于相邻的两个素数p和p + n之间的n - 1个连续的合数所组成的序列我们将其称为长度为n的素数槽.比如,‹24, 25, 26, 27, 28›是处于素数23 ...
- Ubuntu下启动Eclipse报错:A Java RunTime Environment (JRE) or Java Development Kit (JDK) must
原以为是jdk的环境变量配置错误了,于是从网上找了各种配置环境变量的方法.也注意空格的问题,可无论怎么改,还是这样报错!后来在网上看到一种奇怪的方法.我也不知道为什么这样就OK了? 方法:进入你的ec ...
- jQuery高性能自己定义滚动栏美化插件
malihu是一款高性能的滚动栏美化jQuery插件. 该滚动栏美化插件支持水平和垂直滚动栏,支持鼠标滚动,支持键盘滚动和支持移动触摸屏. 而且它能够和jQuery UI和Bootatrap完美的结合 ...