Windows Server R2搭建MongoDB集群以及数据的迁移

时间:2024-03-19 18:46:40

搭建MongoDB集群

1.拷贝部署文件

首先将MongoDB部署包拷贝到服务器D:\MongoDB目录下(先创建MongoDB文件夹)
注:有需要部署文件的小伙伴可以在评论区留言
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
2.修改mongoShare1.cfg文件
将MongoDB4.0目录下的mongoShare1.cfg的文件用notepad打开
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
设置语言格式为YAML
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
修改systemLog的path路径,主节点Share1 和仲裁节点Share3在同一台服务器上,备分节点Share2在另一台服务器上,由于主节点才有写操作,可实现读写分离。
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
同样将mongoShare1.bat文件用notepad打开,修改路径为mongoShare.cfg文件的路径
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
3.配置环境变量
找到D:\MongoDB\MongoDB4.0\bin路径复制
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
找到计算机属性中的环境变量中的path
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
点击编辑,将刚复制的D:\MongoDB\MongoDB4.0\bin加到path的最后。
注意:前面如果没有“;”,要先加个英文状态下的分号
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
4.命令行启动
cmd进入命令行,切换到D:\MongoDB\MongoDB4.0目录下,启动mongoShare1.bat文件
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
如果提示启动失败,因为缺少dll文件,建议安装电脑管家,在工具箱中的电脑诊所进行dll文件修复
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
修复完以后,点击vc_redist.x64.exe文件进行安装
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
安装成功以后,再次执行bat脚本,安装服务。
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
服务安装成功以后,进入服务启动mongoDB服务
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
由于集群节点部署在不同服务器上,所以防火墙要开入栈规则才可访问。
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
5.初始化设置
命令行输入mongo 内网ip:端口/admin,回车
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
进入系统后初始化配置,执行语句下列语句,需要修改的是各自对应的IP
config={_id: 'share1', members:[{_id: 0,host:'10.10.213.103:37017'},{_id:1,host:'10.10.213.102:37018'},{_id:2,host:'10.10.213.103:37019',arbiterOnly:true}]}
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
配置完以上语句后,继续执行rs.initiate(config),如果返回OK:1,则显示成功。
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移
Windows Server 2012 R2搭建MongoDB集群以及数据的迁移

集群数据迁移

集群数据迁移有多种情况:
1.原服务器和迁移的服务器不在同一个网络下且数据量不大
2.原服务器和迁移的服务器不在同一个网络下且数据量很大
3.原服务器和迁移的服务器均在同一个网络下

1.针对原服务器和迁移的服务器不在同一个网络下且数据量不大的情况,可以在新环境部署集群后通过新增节点来同步原主节点的数据,但如果网络波动的话,MongoDB自身会有重置机制,导致数据从头备份。

首先做服务器的端口映射,由于在不同网段,要保证端口之间能够访问。
映射命令nat server protocol tcp global 外网IP 外网端口 inside 内网IP 内网端口
映射以后输入save命令保存,在输入两次Y即可
取消映射undo nat server protocol tcp global 外网IP 外网端口

在新环境部署集群,完成后将主节点添加至原来的集群中进行数据同步。
注意:新增节点和删除节点都只能在主节点上操作
针对均是外网或均是内网的情况:rs.add(“IP:PORT”);
针对内外网交叉的情况下:需要将原有节点的Bind_ip设置为0.0.0.0(所有网段均可访问),然后再执行rs.add(“IP:PORT”);

重置原集群的配置

config={_id:'share1',"protocolVersion":1,members:[{_id:0,host:'127.0.0.1:37017'},{_id:1,host:'127.0.0.1:37018'},{_id:2,host:'127.0.0.1:37019',arbiterOnly:true},{_id:3,host:'新增的节点:新增节点的端口'}]}
rs.reconfig(config);

注:“protocolVersion”:1必须要加,4.0版本以后重置命令需要加的参数,否则会报错,会提示MongoDB版本过高。

当节点创建完成后,执行rs.status()查看状态,若为startup则为插入失败,若为startup2则为同步数据中,按数据量而定,数据量小,则短时间可恢复为secondary,数据量大时,待数据完全同步完成后可恢复为secondary。

待数据同步完成后,数据状态恢复为secondary,此时可通过rs.remove(“IP:PORT”);先移除新增节点,然后停止原集群,防止产生新数据。

启动新集群,将有数据的那个节点作为主节点进行配置启动,新集群就此部署完毕。

2.针对原服务器和迁移的服务器不在同一个网络下且数据量很大的情况,可以采取mongodb自身的导入导出语句,效率很快且保证数据的完整性。
备份语句:mongodump -h ip --port 端口 -o 存放路径

在原服务器上将数据备份好以后,可以通过FTP断点续传将数据传至新服务器上,然后将数据进行还原操作。
还原语句:mongorestore -h ip --port 端口 存放路径

3.针对原服务器和迁移的服务器均在同一个网络下的情况,可以采取mongodb自身的导入导出语句,也可以通过新增节点的方式。

常用的MongoDB命令:
初始化配置:rs.initiate(config)
重置配置:rs.reconfig(config)
强制重置配置(针对没有主节点的情况):rs.reconfig(config,{force:true})
为Secondary节点显式指定复制源:rs.syncFrom("IP:PORT")
报错 not master and slaveok=false:rs.slaveOk()
查看集群副本的状态:rs.status()rs.config()
主节点变成备份节点:rs.stepDown(time)rs.freeze(time)
复制延迟状态查看db.printReplicationInfo()db.printSlaveReplicationInfo()