zoukankan      html  css  js  c++  java
  • 【MongoDB】 windows下建立双机主从

    【双机配置】

    服务端:

        两台 Dell R730 双路E5 服务器

        使用一个内网环境,网段20, ping 测试互通

        主服ip: 192.168.20.176: 27017

        从服ip: 192.168.20.178: 27015

    客户端: ThinkPad T460P

    【系统环境】

    服务端: windows Server 2012 R2

    客户端: Win10

    MongoDB版本 3.2.10

    【文件夹建立】

    双机主从配置建议将双机的文件夹配置保持一致,但是对mongoDB的配置来讲这个可以不那么重视。

    花了5分钟学习,发现其实就是给定一个时间从机向主机请求同步而已。同步的内部机制等空一点研究源码。

    这里我的文件夹建立是 D:Mongos 作为整个MongoDB的根目录,数据目录暂时也放在这下。

    数据目录: .DB   主服的数据放在这文件夹下 .Master , 从服的数据对应为  .Slave

    日志在 .Log下

    【脚本和运行效果】

    mongoDB的配置脚本非常简单,这里给出命令即可

    先来主服的, 务必使用 --master进行标记。

    .Mongod.exe --dbpath [your path] --master -- port 27017

    从服:

    .mongod.exe --slave --dbpath [your Path] --source 192.168.20.176 --port 27015 --slavedelay 5

    其中 slavedelay指定从服每多少秒执行一次同步。

    运行效果如图:

    主服:

    启动成功

    需要说明一下,最下面一条信息是从服启动后建立了到主服的连接,所以有一个Connection accepted。

    接下来是从服:

    可以看到最下面一组红框的信息是每5s出现一次,代表在同步主服的信息。

    【启动主备服务】

    主服上运行 mongo.exe, 自动连接到 test, 这个和单机是一样的。

    等了很久,没有看到mongo shell出现,说明启动没成功。

    据说第一次启动很慢,不知道是有多慢

    等了挺久,突然好了。

    之前几个客户端都没法访问到,下次测试一下什么原因。

    从服上同样启动mongo.exe,不过要指定一下从服的端口,即27015

    这里是为了测试同步是否成功,所以访问本地的test。

    【同步测试】

    写数据的一方从客户端(ThinkPad上)操作,然后分别在两个服务器客户端上读一次看是否同步。
    为了便于区分,在一次写操作后先读一次从服,5s后再读一次。

    客户端的写操作对主服进行。

    插入操作很简单,我们在test下操作即可 【该命令由客户端发送】

    可以看到查询结果是正确的。

    我们在从服上执行find()命令:

    可以看到之前是报错了的。

    实际上主从模式下,从服仅仅作为备份,是不允许直接访问和操作的。但是我们可以给从服配置一个读权限,即 rs.slaveOk()

    之后就能查询了。 两条记录是因为我在主服下开的客户端也执行了一个查询。

    到此可证明主从部署建立成功。

    【待解决】

    最后遇到一些问题:

    按官方说法,我应该是能从客户端(另一台pc)通过指定ip和端口的形式访问从服的,因为从服自己也是这么访问的。

    然而我的连接请求却被从服拒绝了,有点奇怪。

  • 相关阅读:
    MFC子窗体、父窗体
    私有云计算安全问题不容忽视
    云计算更多的是一种模式而不是技术
    原型模式向量的原型
    企业发票异常分析分离进项与销项
    考试系统框架搭建
    抽象工厂模式人与肤色
    工厂方法模式加密算法
    简单工厂模式女娲造人
    企业发票异常分析导入,清洗
  • 原文地址:https://www.cnblogs.com/DannielZhang/p/6064922.html
Copyright © 2011-2022 走看看