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 <n>|<nn> instead of <N>|<NN>" and "ERROR: TERMINATING"

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


MongoDB trouble shoot sharded clusters相关推荐

  1. SAP HANA Database Explorer 里的 SQL 语句如何排错 trouble shoot

    Troubleshoot SQL with SAP HANA Database Explorer 调试器可用于帮助查找过程.函数或匿名块中的问题. 以下步骤演示了如何使用调试器来调试过程. 选中某个存 ...

  2. How to trouble shoot if there is no entityset available when creating a tile

    For example: In my case, when I first select F4 value help for "Entity Set", I can see a s ...

  3. [trouble shoot]atol和atoll

    就终于的结果来看,事实上就是一个小的错误. 但定位错误的时间比較漫长了.. . 背景:出错的代码是 一段执行在 linux server上的程序,程序的主要功能是处理银行pos刷卡记录并做一些计算.最 ...

  4. how to trouble shoot thread hangs

    找了个ibm的文章,不错,保存在这里. http://publib.boulder.ibm.com/infocenter/ieduasst/v1r1m0/index.jsp?topic=/com.ib ...

  5. mongodb 通过mongodump来备份Sharded Cluste分片集群

    1,mongodb所有组件 官方文档地址:https://docs.mongodb.com/manual/reference/command/,所有的基础组件都在里面,包括备份恢复的mongodump ...

  6. 首个最全的MongoDB 3.6 全览

    MongoDB 3.6 先睹为快 Part 1 振奋人心的时刻终于到来了,在经过一个MongoDB 上市的日子后,MongoDB 终于发布了MongoDB 3.6 RC3.今天花了整整一天把Relea ...

  7. mongodb集群——配置服务器放分片meta信息,说明meta里包含了哪些数据信息

    在搭建分片之前,先了解下分片中各个角色的作用. ① 配置服务器.是一个独立的mongod进程,保存集群和分片的元数据,即各分片包含了哪些数据的信息.最先开始建立,启用日志功能.像启动普通的mongod ...

  8. mongodb 索引详解

    使用springboot连接mongodb的时候,涉及到索引的使用 举例: @Document(collection="book") //注释的是复合索引 //@CompoundI ...

  9. MongoDB中的变更通知

    MongoDb 3.6中引入了一个新特性change stream,简单的来说就是变更通知,它提供了一个接口允许应用实时获取数据库变更,这个在ETL.数据同步.数据迁移.消息通知等方面非常有用. 使用 ...

最新文章

  1. hausdorff距离
  2. matlab中矩阵怎么敲_Ansys刚度(质量、阻尼)矩阵的提取(part 1)
  3. Excel 数据分析技巧
  4. js基本包装类型和引用类型
  5. Hibernate 学习(一)
  6. 诺基亚推出全新IMPACT平台,交付快捷安全的物联网服务
  7. C#设计模式之简单工厂模式
  8. failed to execute ‘dot‘, make sure the Graphviz executables are on your systems‘ PATH
  9. springmvc 基础内容
  10. [导入]代理猎手找大学代理
  11. 基于python的大数据分析基础及实战pdf下载_Cloudera Hadoop大数据平台实战指南 PDF 下载...
  12. mellanox在vmware中的切割
  13. 魔兽争霸无法在这个计算机,魔兽争霸提示内存不足 无法执行此操作 然后自动退出游戏了 怎么处理?我内存8G 硬盘1T WIN7 32位系统...
  14. Seventh season fifteenth episode,Joey got a new brain??????
  15. 智能车|直流电机、编码器与驱动器
  16. 原始的ajaxtookit的使用
  17. 没有网能使用mysql吗_就用本地数据库;即使在没有联网的电脑上也可以放心使用...
  18. 重庆高中计算机会考有没有打字,重庆书记员技能测试要求!
  19. 如何把民间借贷行为转化为诈骗报案
  20. Java判定一个数值是否在指定的开闭区间范围内

热门文章

  1. Lombok 安装、入门 - 消除冗长的 java 代码
  2. HDU1151 Air Raid
  3. 用Photoshop打造怀旧色调美女照片
  4. linux使用同一密钥对实现互相免密登录
  5. BZOJ2132 圈地计划
  6. SpringBoot(2)之自定义配置
  7. oracle基础建表
  8. 【Android】自定义view-拖动小球移动
  9. 广东移动携手远传技术 共建移动客服标杆
  10. Android Service下载文件并自定义通知提示下载