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学习笔 ...
随机推荐
- rsync增量同步标志位详细解释
rsync非常强大,下面是我用rsync做目录备份时用到的参数: rsync -ruPi -plEt /home/op/photo/ /remote_backup/photo/ --dry-run - ...
- 《奋斗吧!菜鸟》 第八次作业:Alpha冲刺 Scrum meeting 3
项目 内容 这个作业属于哪个课程 任课教师链接 作业要求 https://www.cnblogs.com/nwnu-daizh/p/11012922.html 团队名称 奋斗吧!菜鸟 作业学习目标 A ...
- 【习题 4-6 UVA - 508】Morse Mismatches
[链接] 我是链接,点我呀:) [题意] 给你每个字母对应的摩斯密码. 然后每个单词的莫斯密码由其组成字母的莫斯密码连接而成. 现在给你若干个莫斯密码. 请问你每个莫斯密码对应哪个单词. 如果有多个单 ...
- 洛谷 P2712 摄像头
题目描述 食品店里有n个摄像头,这种摄像头很笨拙,只能拍摄到固定位置.现有一群胆大妄为的松鼠想要抢劫食品店,为了不让摄像头拍下他们犯罪的证据,他们抢劫前的第一件事就是砸毁这些摄像头. 为了便于砸毁摄像 ...
- innodb_support_xa=1
mysql> show create table t; CREATE TABLE `t` ( `id` ) NOT NULL AUTO_INCREMENT, `num` ) DEFAULT NU ...
- [DLX精确覆盖] hdu 3663 Power Stations
题意: 给你n.m.d,代表有n个城市.m条城市之间的关系,每一个城市要在日后d天内都有电. 对于每一个城市,都有一个发电站,每一个发电站能够在[a,b]的每一个连续子区间内发电. x城市发电了.他相 ...
- Android--真机调试程序方法
方法例如以下: (1)手机通过数据线连接到手机上. (2)在手机中设置:设置-->应用程序-->开发-->USB调试 (3)在CMD中測试一下.连接是否正常,CMD中命令例如以下: ...
- php抓取网页
用php抓取页面的内容在实际的开发其中是很实用的,如作一个简单的内容採集器,提取网页中的部分内容等等.抓取到的内容在通过正則表達式做一下过滤就得到了你想要的内容.下面就是几种经常使用的用php抓取网页 ...
- Empower Developers
 Empower Developers Timothy High THingS ARE uSuAlly EASiER SAid THAn donE, and software architects ...
- 时间格式字符串转化为date和时间戳
NSString *dateStr=@"2012-05-17 11:23:23"; NSLog(@"dateStr=%@",dateStr); NSDateFo ...