热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Mongo服务器集群配置学习二-mysql教程

所谓副本集就是有自动故障恢复功能的主从集群,学习一中的主从复制和副本集最大的区别就是:副本集没有固定的主节点,整个集群结构会动态选举出一个主节点,当其坏掉,则会动态变更到其他节点,而主从复制又要人为的去切换。副本集的节点称为活跃节点和备份

所谓副本集就是有自动故障恢复功能的主从集群,学习一中的主从复制和副本集最大的区别就是:副本集没有固定的主节点,整个集群结构会动态选举出一个主节点,当其坏掉,则会动态变更到其他节点,而主从复制又要人为的去切换。副本集的节点称为活跃节点和备份

所谓副本集就是有自动故障恢复功能的主从集群,学习一中的主从复制和副本集最大的区别就是:副本集没有固定的“主节点”,整个集群结构会动态选举出一个“主节点”,当其坏掉,则会动态变更到其他节点,而主从复制又要人为的去切换。副本集的节点称为活跃节点和备份节点。

想配置如下图的副本集集群,很简单一个活跃节点,一个备份节点,当然由于活跃节点是动态推选出来的,不能指定,配置完之后可以看看哪台是活跃点,虚拟主机,我希望是A。

对于副本集,需要指定一个副本集的名称,本例为replicademo,用来确定该名称的副本集集群都有哪些主机

下面对A和B进行配置,配置文件如下

A:

dbpath=D:\mongodb\test\replicaSet\A\Data bind_ip=127.0.0.1 port=11111 replSet=replicademo/127.0.0.1:22222

B:

dbpath=D:\mongodb\test\replicaSet\B\Data bind_ip=127.0.0.1 port=22222 replSet=replicademo/127.0.0.1:11111

replSet参数为“副本集名称”/主机地址:端口号,注意“/”必须要有

然后分别启动A和B

随便在其中一台节点上进行副本集初始化配置,首先切换到admin库,并执行下面脚本

db.runCommand({"replSetInitiate": { "_id":'replicademo', "members":[ { "_id":1, "host":"127.0.0.1:11111" }, { "_id":2, "host":"127.0.0.1:22222" } ] } })

脚本中各字段代表的含义是

1. “_id” : “replicademo”, 这个键指明了副本集的名称

2. “members” :[...], 这个键指明服务器列表,我们以后还可以往副本集中加入服务器

3. “_id” : N, 内嵌文档的键,用于唯一标示副本集中的某一台服务器

4. “host”:host address, 指明服务器的主机和端口号

这样我们再来看A和B两台的shell

A:

B:

由此看来A这台是活跃节点,在活跃节点上进行状态查询

rs.status()

展示如下图信息

可以清楚的看到副本集集群中各节点的状态。

状态查询之所以要在动态节点上进行,是因为备份节点默认不支持查询操作,可以做下面的实验。在A上插入数据,并可以在A查到

replicademo:PRIMARY> use person switched to db person replicademo:PRIMARY> db.person.info.insert({name:"tom"}) replicademo:PRIMARY> db.person.info.find() { "_id" : ObjectId("516a629b91dee924cc38e01a"), "name" : "tom" }

在备份节点上进行这条数据的查询,很显然报错了。

默认情况下SECONDARY不能读写,如果想进行读取操作,可以执行rs.slaveOk(),就可以从SECONDARY读取了。

replSet里只能有一个Primary库,只能从Primary写数据,不能向SECONDARY写数据

replicademo:SECONDARY> use person switched to db person replicademo:SECONDARY> db.person.info.find() error: { "$err" : "not master and slaveOk=false", "code" : 13435 }

副本集故障切换

当A不能工作了,会发生什么情况,我先把A关掉,A和B的shell也关闭,再重新启动B的shell。会发现B并没有变成活跃节点,仍然是备份节点。

原因如下:当SECONDARY Down掉,剩下一个PRIMARY,此时副本集运行不会出问题,因为不用选择PRIMARY节点,当PRIMARY Down掉,此时副本集只剩下一个SECONDARY,它只有1票,不超过总节点数的半数,它不会选举自己为PRIMARY节点。

所以副本集中只有2台备份服务器是不合理的。

添加删除节点

上面的情况已经看到只有2个备份节点是不合理的,解决方案是要不就再加一台备份节点,美国空间,使得投票能正常选出活跃节点,另一种方法是增加仲裁节点。

先说下副本集中有3中节点:

standard:常规节点,服务器空间,也就是我上个例子中用到的A和B都是常规节点,它既存储完整的数据副本又参加投票,可以成为活跃节点

passive:副本节点,它虽存储完整的数据副本又参加投票,但是不可以成为活跃节点

arbiter:仲裁节点,只参与投票,不接受数据的复制,不可以成为活跃节点

1.副本集replicademo中添加一个常规节点

启动另一台节点服务器C

dbpath=D:\mongodb\test\replicaSet\C\Data

bind_ip=127.0.0.1
port=33333
replSet=replicademo/127.0.0.1:11111,127.0.0.1:22222

在活跃节点上执行rs.add("127.0.0.1:33333")

执行完成之后查询配置如下,可以看到C已经加入到副本集。

如果要删除某一个节点可以执行rs.remove("主机名:端口号")

执行之后查看配置,发现节点已经被删除

2.副本集replicademo中添加一个仲裁节点

在活跃节点上执行rs.add("127.0.0.1:33333",true)

此时在查询状态,如下图,节点C的stateStr="ARBITER",已经变为仲裁节点。


推荐阅读
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 随着SEO技术的发展,越来越多的企业和个人开始重视网络营销。然而,要让网站在搜索引擎中获得良好的排名,不仅需要提升网站内容的质量,还需要构建高质量的外部链接。本文将详细介绍什么是高质量的外部链接以及如何有效构建这些链接。 ... [详细]
  • 开发笔记:前端之前端初识
    开发笔记:前端之前端初识 ... [详细]
  • 本文详细介绍了MySQL故障排除工具及其使用方法,帮助开发者和数据库管理员高效地定位和解决数据库性能问题。 ... [详细]
  • MOSS2007 中型服务场配置指南:网络负载均衡集群设置
    本文详细介绍了如何在MOSS2007环境中配置网络负载均衡集群,包括安装和配置网络负载均衡功能的具体步骤。通过本文,读者可以了解如何在多台Web服务器上安装并配置网络负载均衡,以实现高效的服务分发。 ... [详细]
  • 主机托管是指企业将服务器托管在专业数据中心,以替代自建数据中心的方式。这种方式不仅节省了成本,还提供了多种技术和管理上的优势。然而,主机托管也存在一些潜在的挑战,特别是在部署多个应用时。本文将详细探讨主机托管的主要利弊,帮助企业做出更明智的决策。 ... [详细]
  • Python学习day3网络基础之网络协议篇
    一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ... [详细]
  • http:blog.csdn.netzeo112140articledetails7675195使用TCPdump工具,抓TCP数据包。将数据包上传到PC,通过Wireshark查 ... [详细]
  • 本文详细介绍了如何在Windows操作系统中通过Samba服务访问Red Hat Linux中的资源,包括配置Samba服务器、设置工作组名称、添加用户和共享目录等步骤。 ... [详细]
  • Java作为全球最流行的编程语言之一,应用广泛。本文将详细介绍Java开发的相关岗位及其具体职责,帮助读者更好地了解这一领域的职业发展路径。 ... [详细]
  • 本文介绍了在 CentOS 7 系统中如何查看所有活动进程及其运行时间。通过使用 `netstat` 和 `ps` 命令,您可以轻松获取进程的详细信息,包括启动时间、用户、终端和命令等。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
author-avatar
凯瑞德医药科技发展有限公司_997
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有