MongoDB 云数据库常见问题诊断

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: MongoDB 云数据库常见问题诊断

重要的内容


MongoDB 的主备节点在运行过程中是不固定的,实例重启、升级、节点故障等都有可能导致主备切换,在生产环境应该使用副本集的方式来正确连接MongoDB 来实现高可用。


连接问题


用户可通过 DMS mongo shell 连接 MongoDB 云数据库,以下场景都基于用户使用 mongo shell 连接数据库。

Q:  连接实例提示网络超时?

image.pngimage.png

通过 telnet 来确认是否是网络不通导致的,例如

telnet dds-uf69ba5cf6e123442.mongodb.rds.aliyuncs.com 3717


网络不通可能的原因:


1. ECS MongoDB 节点不在同一个可用区

2. ECS MongoDB 节点不在同一个 vpc 环境


Q:  连接实例提示鉴权失败?

image.png

可能的原因

1. 密码错误,可在控制台重置 root 密码

2. 连接的用户跟数据库不匹配,比如 root 用户是 admin 数据库下的用户,则使用 root 连接时,必须指定鉴权数据库为 admin3. 客户端版本过低,mongo shell 版本必须是 3.0+,其他语言客户端的版本要求参考 Driver 兼容性文档


Q:  连接 Secondary 执行执行命令时,提示 slaveOk=false 错误?
image.png
默认情况下,MongoDB 的读写请求都必须到 Primary 节点,Secondary 默认是
不可读的,除非客户端显式的指定 Secondary 节点可读(通过设置
readPreference)。
mongoshell 连接时,可以执行 rs.slaveOk()来指定备可读


image.png


如果想 mongo shell 一直连接到 Priamry 节点,可通过如下方式连接

mongo --host  副本集名称/节点 1,节点 2 --authenticationDatabase admin -u
system -p xxx
例如
mongo --host
mg-100101/dds-uf69ba5cf6e123442.mongodb.rds.aliyuncs.com:3717,dds-uf6
9ba5cf6e123441.mongodb.rds.aliyuncs.com:3717   --authenticationDatabase
admin -u system -p xxx


注意:MongoDB的主备节点在运行过程中是不固定的,实例重启、升级、节点故障等都有可能导致主备切换,在生产环境应该使用副本集的方式来正确连接MongoDB 来实现高可用。


Q:  连接时提示

image.png


上述错误通常是实例的连接数已经达到上限,无法再建立更多的网络连接,可在控制台查看实例连接数的使用情况确认。用户使用实例时应该合理的规划并控制实例的连接数,避免因为连接数耗尽而无法连接实例,如果业务上的

确需要更多的网络连接,则需要升级实例的规格。连接数的管理请参考下面『连
接数问题』部分。


连接数问题    


 Q:  如何查看当前连接      


1. 登录阿里云控制台查看

2. 使用 mongo shell 连接实例,执行如下命令,其中 current 代表当前已建立连接数,available 代表当前可用连接数,internal*的连接用于内部管理,用户可忽略。

image.png

Q:  如何查看当前连接主要来自哪些 ECS 机器?

mongoshell DMS(如果连接数已满,则只能通过 DMS 来登录查看)连接实例,执行db.runCommand({currentOp: 1, $all: true}),就能输出所有跟该实例建立的所有连接情况,其中 client 字段包含了 ECS ip 地址信息。


image.png

image.png


有了上述结果,用户就可以根据来源 ip 做进一步的分析,得出各个 ECS 跟实例分别建立了多少连接等信息。


Q:  生产环境连接数快满了,如何限制每个 ECS 到实例的连接数量?


MongoDB 基本所有的 driver 都支持通过Connection String URI 来连接实例云数据库的连接 URI 已为用户在控制上生成好,加上密码信息就能直接使用。


如果采用 URI 来连接实例的,在 URI 末尾加上&maxPoolSize=xx 来限制到实例的连接数即可,比如你有 10 ECS 并发访问实例,实例的最大连接数为 1000那么每个 ECS 上的连接池的数量要控制在 100 以内。


不同语言的客户端可能封装了不通的连接方式,但也一定有方法指定连接池的数量限制,具体参考各语言客户端的 api 文档。


附在高问题

用率很高,想看看实例正在执行什么  

Q:CPU利用率很高,想看看实例正在执行什么操作?

image.png

造成实例负载高的典型 case


1. 并发请求的量太大,超出当前规格的服务能力

2. 查询集合时,没有合理的建索引,导致全表扫描或排序

3. 正在跑一些计算量很大的 mapreduce 或者 aggregation 任务


正在执行的操作都包含一个 opid 字段,用户可以根据 opid 字段直接 kill 掉对应的操作

mongo-test:PRIMARY> db.killOp(opid)


仍然无法解决问题


请查看 FAQ 文档,或提交工单。负载高问题


以上内容来自于《云数据库运维实战手册》,可点击https://developer.aliyun.com/topic/download?id=8198下载完整版

 

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
2月前
|
存储 NoSQL 关系型数据库
非关系型数据库-MongoDB技术(二)
非关系型数据库-MongoDB技术(二)
|
2月前
|
NoSQL 关系型数据库 MongoDB
非关系型数据库-MongoDB技术(一)
非关系型数据库-MongoDB技术(一)
|
22天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
16天前
|
监控 关系型数据库 MySQL
如何监控和诊断 MySQL 数据库的性能问题?
【10月更文挑战第28天】监控和诊断MySQL数据库的性能问题是确保数据库高效稳定运行的关键
35 1
|
23天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
25天前
|
存储 NoSQL MongoDB
MongoDB 数据库引用
10月更文挑战第20天
15 1
|
1月前
|
存储 NoSQL Shell
MongoDB 创建数据库
10月更文挑战第12天
52 4
|
1月前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。
|
1月前
|
NoSQL MongoDB 数据库
MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:
一些常用的MongoDB命令,如数据库和集合的管理、数据的插入、查询、更新、删除以及聚合操作等。
25 1

相关产品

  • 云数据库 MongoDB 版