对MongoDB副本集建筑问题的总结和解决方案

对mondb复制集建筑问题的总结和解决方案

一个副本的mondb数据库设置由多个服务器组成,通过在主节点和其他节点,如果主节点停机将自动切换到从任意节点。如果以前的主节点的完成维修和正常操作的自动从节点转化为节点,数据不能被查询的节点,也可以在服务器上安装多个mondb端口。

在我过去的认知中,一旦系统正式启动,它可能不容易迁移服务器,尤其是涉及多个相关应用程序的服务器,涉及多个硬件服务器,因为这种迁移将起主导作用,并移动整个身体。



然而,这种情况仍然存在。就像我现在负责的是整个服务器迁移中机器迁移的一部分,其他人负责它。



该系统包括水槽收集数据,风暴数据分析,RabbitMQ消息分发,ehcache缓存升级,系统的性能,MonDB复制集数据存储、Tomcat管理系统中的应用,等等。





我主要负责RabbitMQ,Tomcat,Ehcache,mondb。安装Tomcat和Ehcache配置相对简单,但RabbitMQ需要依靠二郎,二郎也需要依靠一些其他的东西。这些事情需要root权限才能执行,但我们没有root权限,所以需要付出一点努力。



此外,mondb副本的设置也有点麻烦,但幸运的是,一切都按预期发展。通过经验猜想解决了以前没有遇到的问题。

为什么mondb副本集是一系列的问题,其中大部分是因为不动手的这段时间,但它是由新的人操作。

首先,根据我给他的文件,他一步一步地操作。结果,在港口,我不知道这是习惯还是什么,因为他设置的港口不是我们所要求的港口。



然后,当我让他把它换成所需的端口时,他有点困惑,他不知道是否应该删除所有的配置,或者该怎么做。



由于时间关系,我给了他一个通过使用配置优先级直接改变端口的方案:


配置= rs.conf()
成员{ 0 }。优先级= 2
Rs.reconfig(config)


因此,根据这一点,我们认为修改后的端口应该是底部(较低的IP和端口只是假定的,生产环境不能很容易地省略):




配置= rs.conf()
配置。成员{ 0 }。主机=192.168.117.88:37017
Rs.reconfig(config)


但结果是,当第三步抛出一个异常时,遗憾的是,当时没有截图忘记具体问题,但一般意义是端口成员不存在。

因此,我也为他提供了第二个方案,即先从会员中删除三名成员的非主要服务。


rs.remove(IP地址:端口)


然后将这个机器的端口改为我们需要的37017,然后通过添加成员的命令来添加。


Rs.add(IP地址:端口)


这样做了三次之后,三个服务器的端口被成功地修改为所需的端口。



在这个过程中,当修改到主服务时,因为在开始时设置了最高优先级,所以必须将另一个优先级设置为更高优先级的操作。

问题解决了,但我后来又想了。看来这个计划不是最好的,也不是最简洁的,因为当时没有考虑第一个计划的原因。后来,可能是因为原始端口没有重新启动。



如果我们先改变非主服务机器的端口重新启动,那么再使用第一个服务主机也是可行的,而且比第二个简单。如果有机会,我们必须试一试。

我认为这是可以的,然后我没有想到,当我们完成迁移时,我们被告知那些机器正在测试服务网络段,它们应该被转变为生产网络段。

所以所有的机器,IP,已经改变了,我们的mondb副本集重新配置。



但这次的问题是前面的更改端口是因为我至少可以保证两台机器正常运行,并且可以操作RS命令,但是这次IP改变了,这三台机器不能正常地成为主服务,因此RS命令失败。



几个折腾,还没有提出好的解决方案,所以我们只好把数据目录的内容全部删除,然后重新配置为真。

然而,在这个新手的操作中,应该在配置过程中执行以下命令:




配置= { _id:reptest,成员:{ { _id:0,主持人:192.168.0.160:57017 },{ _id:1,主持人:192.168.0.211:57017 },{ _id:主持人:192.168.0.213:57017 } } },
Rs.initiate(config)


情况就是这样。


配置= { _id:reptest,成员:{ { _id:0,主持人:192.168.0.160:57017 },{ _id:1,主持人:192.168.0.211:57017 },{ _id:主持人:192.168.0.213:57017 } } },
Rs.initiate()


也就是说,虽然分配给配置,但当加载没有被使用,它也忘了告诉他之前,发现问题。



We usually use on Linux operating system in window, CRT or putty will use these tools, these two tools have advantages and disadvantages, and I find that when we enter the operation mon shell, these two tools are different, you can use putty and CRT regression, it cannot mondb shell fallback.



所以当他击败rs.initiate()和想回到括号添加配置,他没有回头,只好回到车上。



在这个时候,rs.initiate()只能执行一次,然后在我的文档的操作是不同的。我该怎么办



在最后一个问题之后,这个问题似乎得到了很好的解决。我该怎么办我想我们可以用rs.add和修改配置来解决它。然后我们会告诉他这个想法。他做完手术后,真的做完了一次。



嗯,这两个问题这次已经基本解决了,我不知道其他朋友有没有更好的办法来解决这个问题,欢迎留言解决这个难题。

谢谢你的阅读。我希望你能帮助你,谢谢你对这个站的支持。