千家信息网

MongoDB trouble shoot sharded clusters

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,MongoDB trouble shoot sharded clusters前言Part1:写在最前在MongoDB sharding环境中,我们会遇到一些常见的错误,本文就MongoDB官网列出的错
千家信息网最后更新 2025年02月23日MongoDB trouble shoot sharded clusters



MongoDB trouble shoot sharded clusters

前言

Part1:写在最前

在MongoDB sharding环境中,我们会遇到一些常见的错误,本文就MongoDB官网列出的错误进行翻译。



Part2:整体环境

MongoDB 3.4.4



实战

Part1:某个应用或者Mongos宕机

如果每个应用程序服务器都有自己的mongos实例,其他应用程序服务器可以继续访问数据库。 此外,mongos实例不保持持久状态,并且可以重新启动(启动过程中为unavailable),而不会丢失任何状态或数据。 当一个mongos实例启动时,它会从configserver取回数据,并可以开始路由查询。



Part2:在sharding集群中,其中一个mongod进程宕机

对于sharding环境,副本集提供了非常好的高可用能力。如果宕机的是主库,则副本集会选出一个新的主库。如果宕机的是从库,则副本集会让这台从库与主库断开连接,并且这台从库的数据不会被清空。在三个成员副本集中,即使该组的单个成员遇到灾难性故障,另外两个成员也有完整的数据副本。

经常去检查可用性是否中断以及是否有故障,如果系统出现不可恢复的故障,尽快替换掉出问题的服务器,并将一台新的成员加入到副本集中,以保证整个副本集集群的高可用性。



Part3:sharding中的所有成员都unavailable

如果副本集分片的所有成员都不可用,则该分片中保留的所有数据都不可用。但是,所有其他分片上的数据将保持可用,并且可以将数据读取和写入其他分片。?但是,应用程序必须能够处理部分结果,此时DBA该调查中断的原因,并尝试尽快恢复分片。



Part4:configserver副本集成员不可用

在版本3.2中更改:从MongoDB 3.2开始,分片集群的配置服务器可以部署为副本集。 副本集配置服务器必须运行WiredTiger存储引擎。 MongoDB 3.2不推荐使用配置服务器的三个镜像mongod实例。

副本集为配置服务器提供高可用性。 如果不可用的配置服务器是主服务器,则副本集将选择新的主服务器。

如果副本集配置服务器丢失其主服务器,并且无法选择主服务器,则集群的元数据将变为只读。 仍然可以从分片读取和写入数据,但是在primary可用之前无法进行块迁移或块分割。 如果所有配置数据库变得不可用,则集群无法使用。



Part5:configserver数据过旧导致游标失败

当一个或多个mongos实例尚未从配置数据库更新其集群元数据的缓存时,查询返回以下警告:

could not initialize cursor across all shards because : stale config detected

此警告不应传回应用程序。警告将重复,直到所有的mongos实例刷新其缓存。要强制实例刷新其缓存,请运行flushRouterConfig命令。



Part6:分片键和集群可用性

选择分片键时最重要的考虑因素是:

1.确保MongoDB能够在分片间均匀分配数据

2.衡量写操作可以遍布整个集群

3.确保mongos可以将大多数查询隔离成特定的mongod。

更多:

1.每个分片应该是副本集,如果特定的mongod实例失败,则副本集成员将选择另一个作为主节点并继续操作。?但是,如果整个分片由于某种原因无法访问或失败,则该数据将不可用。

2.如果分片键允许mongos将大多数操作分离成单个分片,则单个分片的失败只会使一些数据不可用。

3.如果分片建分布的数据要求获取整个集群,那么这个分片不可用将导致整个集群不可用

实质上,这也说明了选择合适的片键对于单个分片隔离查询操作的重要性




Part7:configserver串错误

从MongoDB 3.2开始,configserver服务器可以部署为副本集。 分片集群的mongos实例必须指定相同的configserver服务器副本集名称,但可以指定副本集的不同成员的主机名和端口。

3.4开始,不再支持使用镜像mongod实例作为配置服务器(SCCC)。 在将分片集群升级到3.4之前,必须将配置服务器从SCCC转换为CSRS。

对于早期版本的MongoDB分片集群,configserver服务器使用三个镜像mongod实例的拓扑,分片集群中的mongos实例必须指定相同的configDB字符串。



Part8:移动configerserver服务器时避免停机

使用CNAME来识别您的配置服务器到集群,以便可以重新命名和重新编号配置服务器,而不会停机。



Part9:move Chunk 报错

chunk migration结束时,分片必须连接到configserver数据库才能更新群集元数据中的块的记录。 如果分片无法连接到configserver数据库,MongoDB会报告以下错误:

ERROR: moveChunk commit failed: version is at | instead of |" and "ERROR: TERMINATING"

当发生这种情况时,shard副本集的primary 复制终止以保护数据一致性。 如果secondary成员可以访问配置数据库,则在选举为新主之后,分片上的数据将再次被访问。


数据 服务器 服务 副本 集群 配置 实例 成员 数据库 应用 选择 单个 可用性 应用程序 程序 错误 查询 三个 故障 环境 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库配置中心怎么样 steam 饥荒 服务器 土地利用现状数据库技术规范 网络安全简笔画可爱小图案 打造一个自己的服务器 《网络安全法》相关内容 信息网络安全核心期刊 北京广夏网络技术招聘 网络安全最新资讯三六零 随着时代的发展网络安全 服务器硬件安装所需材料 dell服务器raid1 山西互联网养老软件开发哪儿好 浙江省网络技术三级真题 铁路单位如何加强网络安全管理 奥奇传说怎么不能选择服务器了 食品库存管理系统数据库语言 连接数据库服务器的token 数据库技术与应用 编程题 pc协议挂Q软件开发 高程数据怎么存进空间数据库 mc网易版如何制作服务器 win10安装u8 数据库 不属于计算机网络安全的内容 帧中继网络技术的应用 苹果软件开发哪家专业 威力网络技术图片 数据库能写入多少字符 双数据库作用是什么 收费的软件开发视频网站
0