快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰集团:8天学习MongoDB 专题——第五天 主从复制



从这一篇开始我们主要评论争论mongodb的支配技巧。

我们知道sql server能够做到读写分离,双机热备份和集群支配,当然mongodb也能做到,实际利用中我们不盼望数据库采纳单点支配,假如碰着数据库宕机或者被息灭性破坏那是多么的糟糕。

一:主从复制

1: 首先看看模型图

2:澳门新葡亰集团 从上面的图形中我们可以阐发出这种架构有如下的好处:

数据备份。

数据规复。

读写分离。

3:下面我们就逐一实践

实际利用中我们肯定是多办事器支配,限于自己懒的装虚拟机,就在一台机械上实践了。

第一步:我们把mongodb文件夹放在D盘和E盘,模拟放在多办事器上。

第二步:启动D盘上的mongodb,把该数据库指定为主数据库,着实敕令很简单:>mongodb --dbpath='XXX' --master,

端口照样默认的27017.

第三步:同样的要领启动E盘上的mongodb,指定该数据库为从属数据库,敕令也很简单,当然我们要换一个端口,比如:8888。

source 表示主数据库的地址。

>mongod --dbpath=xxxx --port=8888 --slave --source=127.0.0.1:27017

第四步:从图中的血色区域我们发清楚明了一条:“appl澳门新葡亰集团ied 1 operations"这样的语句,并且发生的光阴相隔10s,也就阐明从属数据库每10s就向主数据库同步数据,同步依据也便是探求主数据库”OpLog“日志,可以在图中血色区域内发明”sync_pullOp澳门新葡亰集团Log“字样。

接下来我们要做的便是测试,惊疑的发明数据已经同步更新,爽啊。

4:假如我还想增添一台从属数据库,然则我不想在启动时就指定,而是后期指定,那么mongodb可否做的到呢?谜底肯定是可以的。

我们的主或者从属数据库中都有一个叫做local的聚拢,主如果用于寄放内部复制信息。

好,那么我们就试一下,我在F盘再拷贝一份mongodb的运行法度榜样,cmd窗口很多多少啊,大年夜家不要搅散了。

看上面的log,提示没有主数据库,不要紧,某一天我们良心发明,给他后期补贴一下,哈哈,再开一个cmd窗口,语句也便是在sources中add一个host地址,着末发明数据也同步到127.0.0.1:5555这台从属数据库中....

5: 读写分离

这种手段在大年夜一点的架构中都有实现,在mongodb中着实很简单,在默认的环境下,从属数据库不支持数据的读取,然则不要紧,在驱动中给我们供给了一个叫做“slaveOkay"来让我们可以显示的读取从属数据库来减轻主数据库的机能压力,这里就不演示了。

二:副本集

这个也是很牛X的主从集群,不过跟上面的集群照样有两点区其余。

:该集群没有特定的主数据库。

:假如哪个主数据库宕机了,集群中就会推荐出一个从属数据库作为主数据库顶上,这就具备了自动故障规复功能,很牛X的啊。

好,我们现在就来试一下,首先把所有的cmd窗口关掉落从新来,清掉落db下的所有文件。

第一步:既然我们要建立集群,就得取个集群名字,这里就取我们的公司名shopex, --replSet表示让办事器知道shopex下还有其他数据库,这里就把D盘里面的mongodb法度榜样打开,端口为2222。指定端口为3333是shopex集群下的另一个数据库办事器。

第二步:既然上面说3333是另一个数据库办事器,不要急,现在就澳门新葡亰集团来开,这里把E盘的mongodb法度榜样打开。

第三步:ok,看看上面的日志血色区域,彷佛我们还没有做完,是的,log信息奉告我们要初始化一下“副本集“,既然日志这么说,那我也就 这么做,随便连接一下哪个办事器都行,不过必然要进入admin聚拢。

第四步: 开启成功后,我们要看看谁才能成为主数据库办事器,可以看到端口为2222的已经成为主数据库办事器。

第五步:我们知道sql澳门新葡亰集团 server里面有一个叫做仲裁办事器,那么mongodb中也是有的,跟sql server一样,仲裁只介入投票选举,这里我们 把F盘的mongodb作为仲裁办事器,然后指定shopex集群中的任一个办事器端口,这里就指定2222。

然后我们在admin聚拢中应用rs.addArb()追加即可。

追加好了之后,我们应用rs.status()来查看下集群中的办事器状态,图中我们可以清楚的看到谁是主,照样从,照样仲裁。

不是说该集群有自动故障规复吗?那么我们就可以来试一下,在2222端口的cmd办事器按Ctrl+C来KO掉落该办事器,立马我们发明在3333端口的从属办事器即可顶上,着末大年夜家也可以再次应用rs.status()来看下集群中办事器的状态。

您可能还会对下面的文章感兴趣: