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

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

时间: 2024-11-03 16:54:23

【MongoDB】 windows下建立双机主从的相关文章

mongodb windows下的安装

(1)上mongodb的官网下载windows版本的mongo的安装包,安装包是绿色版的解压出来就可以直接使用. (2)将解压出来的bin文件夹复制到c:\mongoDB下(c:\mongoDB这个文件夹可随意选择,不一定要在c盘) (3)在c:\mongoDB文件夹下新建data文件夹 (4)在c:\mongoDB\data文件夹下新建db和log文件夹 (5)在c:\mongoDB\data\log文件夹下新建momgoDB.log,用于存放mongoDB的日志 (6)启动mongoDB的服

windows下的mysql主从同步

mysql主从同步: 1.为什么要主从同步? 在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一.尤其是在大规模系统中,数据库集群已经成为必备的配置之一.集群的好处主要有:查询负载.数据库复制备份等.其中Master负责写操作的负载,也就是说一切写的操作都在Master上进行,而读的操作则分摊到Slave上进行.这样一来的可以大大提高读取的效率.写操作涉及到锁的问题,不管是行锁还是表锁还是块锁,都是比较降低系统执行效率的事情.我们这样的分离是把写操作集中在一个节点上,而读操作其其他

windows下的Redis主从集群搭建

Redis官方不提供Windows版本,目前Windows下的版本是有微软开源团队(Microsoft Open Tech group)维护. http://redis.cn/ redis中文网 windows版本下载地址:https://github.com/MicrosoftArchive/redis/releases,默认安装后使用的配置文件是redis.windows-service.conf Redis有强大的主从复制功能,一个master可以有多个slave,而一个slave又可以有

windows下建立文件的换行符^M导致linux下的shell脚本运行错误的解决方案

经常在windows下编辑的文件远程传送到linux下的时候每行末尾都会出现^M,这将导致shell脚本运行错误,主要是因为dos下的编辑器和linux下的编辑器对文件末行的回车符处理不一致导致. 主要解决如下: (1)在VI编辑器中将^M删除: 将VI编辑器切换到命令模式下,输入 :%s/^M//g (注意^M 不是shift ^ +M 而是ctrl+v 加上ctrl+m)  s///g是shell的替换命令 此命令必须是手动打上,不可复制. (2)dos2unix 命令 dos2unix f

Windows下mysql5.5主从同步

前置条件: A主机(作为主服务器) 环境:Win7,mysql5.5 IP:172.17.42.82 B主机(作为从服务器) 环境:Win7,mysql5.5 IP:172.17.42.156 主服务器配置: 1.在A的mysql数据库中建立一个同步专用账户slave 命令:GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO [email protected]'172.17.42.156' IDENTIFIED BY '517na.com'; 注释:17

CentOS7.4下建立DNS主从服务器(二)

(一)DNS主从同步的原理:1.master DNS服务器每次修改完成并重启服务后,将传送notify给所有的slave DNS服务器: 2.slave DNS服务器将查询master服务器的SOA记录: 3.master DNS服务器收到请求后将SOA记录发送给Slave DNS服务器,Slave DNS服务器收到后同时对比查询结果中的serial值: 4.如果serial值不大于本机的话将结束数据同步过程:但是如果serial值大于本机的话,slave DNS将发送zone transfer

windows下建立软链

使用junction,地址:https://technet.microsoft.com/en-us/sysinternals/bb896768 安装: 1.下载junction.exe后,将文件copy至C:\Windows\System32: 2.双击运行,选择agree,安装完成: 3.打开命令行窗口,进行软链的创建和删除: 创建命令: junction D:\java\iapp\resource “D:\webresource” junction D:\java\student\resou

[转帖]Windows下cwRsyncServer双机连续同步部署

https://www.cnblogs.com/nulige/p/7607503.html 找时间做一下测试 应该能更好的实现 自动部署的功能. 下载cwRsyncServer服务器端与客户端的安装文件:服务端下载:cwRsyncServer_4.0.5_Installer.zip客户端下载:cwRsync_4.0.5_Installer.zip 服务端的配置(192.168.0.21):安装服务端软件cwRsyncServer_4.0.5,安装时需要输一个用户名和密码,输入本机administ

windows下建立共享文件夹

1.按windows + r键,出现运行的窗口: 2.在窗口里按格式输入要连接的ip; 3.输入成功后点确定就能看到对方建的共享文件夹. 示例如下: 原文地址:https://www.cnblogs.com/zhuyunbk/p/11834525.html