首页 > 代码库 > 【MongoDB】 windows下建立双机主从

【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和端口的形式访问从服的,因为从服自己也是这么访问的。

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

 

【MongoDB】 windows下建立双机主从