MongoDB复制选举原理以及复制集的管理

MongoDB复制集的节点是通过选举产生主节点的。

复制的原理:复制是基于操作日志oplog,相当于MySQL的二进制日志,只记录发生改变的记录。复制将主节点的oplog日志同步并应用到其他从节点的过程

选举的原理:节点类型分为标准节点,被动节点,仲裁节点。

                     (1)只有标准节点可能被选为活跃(primary)节点,有选举权。被动节点有完整副本,不可能成为活跃节点,有选举权。仲裁节点不复制数据,不可能成为活跃节点,只有选举权。

                     (2)标准节点与被动节点的区别:priority值高者是标准节点,低着则为被动节点。

                     (3)选举规则是票数高者获胜,priority是优先权为0-1000的值,相当于额外增加0-1000的票数。选举结果:票数高者获胜:若票数相同,数据新者获胜

下图为MongoDB复制集节点间选举的结构图

下面我会通过几个实验来验证复制集的选举原理

一、 创建四个节点,端口分别为27017,27018,27019,27020,其中27017和27018作为标准节点,27019作为被动节点,27020作为仲裁节点

1 创建三个节点的数据存放路径和日志存放路径,其中27017为默认节点,所以不需要创建

2 对27017的配置文件进行更改,将可以访问的地址改为所有,同时开启复制集模块,将复制集名称定为kgcrs

3 第一个实例的配置文件改完之后复制三分,分别作为剩下三个实例的配置文件,完成之后再逐个修改

4 对第二个实例的配置文件进行修改,其中需要定义好数据的存放路径和日志文件的存放路径,接着将端口改为27018

4 接着更改第三个实例的配置文件,同样要修改文件路径,将端口改为27019

5 第四个实例将端口改为27020

6 开启这四个实例

7 查看这四个实例的端口

二 验证复制集的选举原理

(1)配置复制集的优先级

1 进入第一个实例,配置四个节点的复制集,设置两个标准节点,一个被动节点和一个仲裁节点

2 复制集配置完成后就可以进行初始化

3 初始化完成后查看该复制集的状态,可以看到27017变为了活跃节点,27018和27019变为了从节点,最后的27020是仲裁节点

(2)模拟节点故障

1 关闭活跃节点

2 进入另一个标准节点,可以发现第二个标准节点成为了活跃节点

3 接着我再关闭第二个标准节点

4 进入被动节点进行查看,可以发现角色并没有切换,依然是从节点

5 接着我再次将两个标准节点打开

6 进入第一个标准节点进行查看,可以发现它已经变成了活跃节点

最后总结:如果主节点出现故障,另一个标准节点将会选举成为新的主节点,如果所有标准节点都出现故障,被动节点也不会成为主节点

三 MongoDB复制集管理

(1)配置允许在从节点上读取数据

默认MongoDB复制集的从节点不能读取数据,可以使用rs.slaveOK()命令允许能够在从节点读取数据

1 在从节点上对数据库进行查看时并不会显示信息

2 执行rs.slaveOK()后再次进行查看便可以显示了

(2)查看复制状态信息

可以使用rs.printReplicationInfo()和rs.printSlaveReplicationInfo()命令来查看复制集状态

这里rs.printReplicationInfo()可以查看日志文件的大小,rs.printSlaveReplicationInfo()会显示有哪些节点会对数据进行复制,可以看到这里并没有仲裁节点,因为仲裁节点不会复制数据

(3)更改oplog大小

oplog即operations log的简写,储存在local数据库中。oplog中新操作会自动替换旧的操作,以保证oplog不会超出预设的大小。默认情况下,oplog大小会占用64位实例5%的可用磁盘空间

在MongoDB复制过程中,主节点应用业务操作修改到数据库中,然后记录这些操作到oplog中,从节点复制这些oplog,然后应用这些修改。这些操作是异步的。如果从节点的操作已经被主节点落下很远,oplog在从节点还没执行完,oplog可能已经轮滚一圈了,从节点跟不上同步,复制就会停下,从节点需要从节点需要重新做完整的同步,为了避免这种情况,尽量保证主节点的oplog足够大,能够存放相当长时间的操作记录。

可以调用db.runCommand命令来更改oplog的大小

1 这里我是在从节点上进行的操作,最后将该节点改为主节点即可

  首先查看当前日志的大小,这里显示为990M

2 关掉该节点,先将它从复制集中移除,让它变成一个单实例,然后才好进行操作

3 对该节点的配置文件进行更改

4 修改这个节点的端口号,接着注释掉复制集模块

5 文件更改完成后就可以启动该实例了

6 首先将该实例的日志文件进行完整性的备份

7 接着进入该实例的local数据下删除原有的oplog

8 接着重新创建一份oplog,大小由自己自行定义

9 再次关闭该节点,因为我们还是要把这个实例加到复制集当中

10 再次对主配置文件进行配置,将端口改为原来的27018,同时开启复制集模块,最后写上oplog的大小

11 文件配置完成后再次启动该实例

12 进入到这个实例中可以看到它已经被添加到复制集当中,角色为从,oplog大小为2048M

(4)部署认证复制

下面演示了如何部署带用户身份认证的MongoDB复制集

1 在活跃节点中创建root用户,密码为123

2 在四个实例的配置文件中分别开启密码认证模块,认证类型为文件认证,并且写上密码文件的路径,文件配置玩成后重启四个实例

3 依照配置文件里指定的路径分别创建四个密码文件,权限设为600

4 在没有输入验证的情况下查看下数据库信息和复制集的状态,可以看到是不会显示我们想要的信息的

5 在admin数据库下输入验证就可以进行查看

©著作权归作者所有:来自51CTO博客作者BK白小白的原创作品,如需转载,请注明出处,否则将追究法律责任

转:http://blog.51cto.com/13706760/2175709

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 1. 副本集概述 某些情况下,副本可以提供更高的读取容量,就像客户端可以发送读操作到不同的服务器。在不同数据中心维...
    LLLeon阅读 10,432评论 2 7
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,862评论 2 89
  • 日子就这样过去了。不管你愿意或不愿意,珍惜或不珍惜。虽然,我想努力地抓住些什么,但一切都是徒劳。天色渐渐变暗,又要...
    禾麦清风阅读 122评论 0 1
  • 训练大脑,增强意志力 从研究人员研究人脑以来,人们一直认为大脑构造是固定不变的,人的脑容量是一个固定值,不能通过外...
    东方欲晓_莫道君行早阅读 375评论 0 0
  • 今天在监考,闲来无事便写了点自己最近的经历体会,以及看书感受。 1:今天看到一个妈妈在问一个正面管教的导师:...
    小太阳Varen阅读 234评论 0 0