MongoDB-atlas-最佳实践-第4部分

蒙古数据库图谱从根本上简化了蒙古数据库的操作。 与任何托管数据库管理员一样,您仍然需要做出一些决定来确保应用程序的最佳性能和可用性。 这个博客系列提供了一系列的建议,这些建议将作为充分利用蒙古数据库阿特拉斯服务的坚实基础。

在这一系列博客文章中,我们将涵盖四个主要领域:

  • 在第1部分中,我们从准备部署开始,特别关注模式设计和应用程序访问模式。
  • 在第2部分中,我们讨论了在您准备部署时的其他注意事项,包括索引、数据迁移和实例选择。
  • 在第3部分中,我们深入探讨了如何扩展您的MongoDB Atlas部署,并实现所需的可用性服务级别协议。
  • 在最后一期中,我们将总结运营管理和确保数据安全的最佳实践。

如果你想现在就开始学习所有这些主题,请下载蒙古数据库地图集最佳实践指南。

由开发数据库的工程师创建的MongoDB Atlas是运行MongoDB的最简单的方法,使部署、监控、备份和扩展MongoDB变得容易。

MongoDB Atlas整合了最佳实践,有助于保持托管数据库的健康和优化。 他们通过点击按钮将复杂的手动任务转换为可靠的自动化程序,从而确保操作的连续性:

  • 部署:使用您选择的实例大小、副本集成员数量和碎片数量
  • 规模:增加容量,而不使应用程序离线
  • 时间点计划备份:只需点击几下鼠标,即可将完整运行的集群恢复到任意时间点,因为灾难是不可预测的
  • 性能警报:监控系统指标并获取自定义警报

为了让MongoDB Atlas自动部署集群,用户只需选择几个选项:

  • 实例大小。
  • 存储大小(可选)。
  • 存储速度(可选)。
  • 数据卷加密(可选)。
  • 副本集中的副本数量。
  • 碎片数量(可选)。
  • 自动备份(可选)。

数据库节点将自动与最新稳定的MongoDB和底层操作系统软件版本保持同步;滚动升级确保您的应用程序在升级过程中不受影响。

系统性能和容量规划是任何MongoDB部署都应该解决的两个重要问题。 规划的一部分应该包括建立关于数据量、系统负载、性能和系统容量利用率的基线。 这些基线应该反映您期望系统在生产中执行的工作负载,并且应该随着用户数量、应用程序功能、性能服务级别协议或其他因素的变化而定期重新访问。

MongoDB Atlas具有图表和自动警报功能,可跟踪关键数据库和系统健康指标,包括磁盘可用空间、操作计数器、内存和中央处理器利用率、复制状态、开放连接、队列和节点状态。

可以审查历史绩效,以创建运营基线并支持容量规划。 通过蒙古数据库地图集RESTful应用编程接口,与现有监控工具的集成也很简单,使蒙古数据库地图集的深刻见解成为您整个运营的整合视图的一部分。

图1:用蒙古数据库图形用户界面监控数据库。

蒙古数据库允许管理员在关键指标超出范围时设置自定义警报。 可以为影响单个主机和副本集的一系列参数配置警报。 警报可以通过电子邮件、网络挂钩、Flowdock、HipChat和Slack发送,也可以集成到现有的事件管理系统中,如PagerDuty。

当需要扩展时,只需点击MongoDB Atlas图形用户界面中的配置按钮,选择所需的实例大小和碎片数量,然后将执行自动的在线扩展。

MongoDB Atlas监控特定于数据库的指标,包括页面错误、操作计数器、队列、连接和副本集状态。 可以针对每个受监控的指标配置警报,以便在用户遇到问题之前主动警告管理员潜在的问题。 蒙古数据库阿特拉斯团队也在监控底层基础设施,确保它始终处于健康状态。

应监控应用程序和数据库日志中的错误和其他系统信息。 为了确定应用程序中的活动是否最终导致系统中的其他问题,将应用程序和数据库日志关联起来是很重要的。 例如,用户写入的峰值可能会增加对MongoDB的写入量,这反过来又可能会使底层存储系统不堪重负。 如果没有应用程序和数据库日志的相关性,可能需要更多的时间来确定应用程序应该对写入的增加负责,而不是在MongoDB中运行一些进程。

当一个工作集不再适合内存,或者其他操作将工作集数据移出内存时,您的MongoDB系统中的页面错误数量可能会激增。

除了内存之外,磁盘输入/输出也是蒙古数据库系统的一个关键性能考虑因素,因为写操作会被记入日志并定期刷新到磁盘。 在高写入负载下,底层磁盘子系统可能会不堪重负,或者其他进程可能会与MongoDB竞争,或者所选择的存储速度可能不足以满足写入量。

各种问题可能会引发高CPU利用率。 这在大多数情况下可能是正常的,但是如果观察到高CPU利用率而没有其他问题,例如磁盘饱和,或者系统中可能存在不寻常的问题。 例如,具有无限循环的MapReduce作业,或从工作集中对大量文档进行排序和筛选的查询,如果没有良好的索引覆盖,可能会在不触发磁盘系统或中的问题的情况下,导致CPU峰值。

MongoDB驱动程序实现连接池以促进资源的有效利用。 每个连接消耗1MB的内存,所以要小心监视连接的总数,这样它们就不会占用内存,也不会减少工作集的可用内存。 这通常发生在客户端应用程序没有正确关闭它们的连接时,或者特别是使用依赖垃圾收集来关闭连接的Java时。

应用程序的利用率基线将帮助您确定正常的操作数。 如果这些计数开始明显偏离您的基线,这可能表明应用程序中发生了变化,或者恶意攻击正在进行。

如果MongoDB无法及时完成所有请求,请求将开始排队。 健康的部署将显示非常短的队列。 如果度量开始偏离基线性能,来自应用程序的请求将开始排队。 因此,队列是确定是否存在会影响用户体验的问题的好的第一个地方。

分片的目标之一是在多台服务器上均匀分布数据。 如果服务器之间的服务器资源利用率不尽相同,则可能存在一个潜在的问题,这对部署来说是个问题。 例如,选择不当的碎片**会导致不均匀的数据分布。 在这种情况下,大多数(如果不是全部的话)查询将被定向到管理数据的单个。 此外,MongoDB可能试图重新分发文档,以便在服务器之间实现更理想的平衡。 虽然重新分发最终会导致更理想的文档分发,但重新平衡数据需要大量的工作,而且这一活动本身可能会干扰预期性能服syncnavigator 务级别协议的实现。

如果在部署过程中确定应该使用新的分片**,则有必要用新的分片**重新加载数据,因为分片**的指定和值是不可变的。 为了支持新碎片**的使用,可以编写一个脚本来读取每个文档,更新碎片**,并将其写回数据库。

复制延迟是指主复制集成员上的写操作复制到辅助成员所需的时间。 少量延迟是正常的,但是随着复制延迟的增加,可能会出现重大问题。

如果观察到这种情况,则可以通过转移到更大的MongoDB Atlas实例或添加碎片来提高复制吞吐量。

备份和恢复策略对于保护您的任务关键型数据免受灾难性故障(如软件错误或用户错误)的影响是必要的identally dropping collections。 With a backup and recovery strategy in place, administrators can restore business operations without data loss, and the organization can meet regulatory and compliance requirements. Taking regular backups offers other advantages, as well. The backups can be used to seed new environments for development, staging, or QA without impacting production systems.

MongoDB Atlas backups are maintained continuously, just a few seconds behind the operational system. If the MongoDB cluster experiences a failure, the most recent backup is only moments behind, minimizing exposure to data loss.

在绝大多数情况下,蒙古数据库阿特拉斯备份提供了最简单、最安全和最高效的备份解决方案。 mongodump 当需要将数据导出到另一个系统时,当需要本地备份时,或者当只需要备份数据的一个子集时,非常有用。

蒙古垃圾场 是一个与MongoDB捆绑在一起的工具,用于对MongoDB中的数据执行实时备份。 mongodump 可用于转储整个数据库、集合或查询结果。 mongodump 通过转储在转储过程中创建的oplog条目,然后在期间重放它,可以生成反映单个时刻的数据转储 mongorestore,一种从BSON数据库转储中导入内容的工具,由 mongodump.

蒙古数据库阿特拉斯应用编程接口通过对自动化功能和监控数据的编程访问,提供了与外部管理框架的集成。 APM集成许多运营团队使用应用程序性能监控(APM)平台,从单一管理界面获得对其完整IT基础架构的全球监督。 可以快速识别影响客户体验的风险问题,并将其隔离到特定组件,无论是设备、硬件基础架构、网络、应用编程接口、应用程序代码、数据库等。

蒙古数据库驱动程序包括一个向APM工具公开查询性能指标的应用编程接口。 管理员可以监控花费在每个操作上的时间,并确定需要进一步分析和优化的运行缓慢的查询。

此外,蒙古数据库地图集提供了与新遗迹平台的打包集成。 APM可以访问MongoDB Atlas中的关键指标进行可视化,从而可以监控MongoDB的运行状况,并将其与应用程序的其余部分关联起来。

图2: MongoDB集成到应用程序性能的单一视图中。

如图1所示,概要指标显示在APM的用户界面中。 管理员还可以针对监控数据运行新遗迹洞察分析,以生成仪表板,提供关键绩效指标的实时跟踪。

与所有软件一样,蒙古数据库管理员必须考虑蒙古数据库部署的安全性和风险暴露。 风险缓解没有神奇的解决方案,维护安全的MongoDB部署是一个持续的过程。

建议使用深度防御方法来保护蒙古数据库部署的安全,它解决了管理风险和减少风险暴露的多种不同方法。

蒙古数据库地图集具有防御、检测和控制对蒙古数据库的访问的广泛能力,提供了任何现代数据库中最完整的安全控制:

  • 用户权限管理。 在数据库级别使用行业标准的身份验证和授权机制来控制对敏感数据的访问
  • 加密。 保护网络上的动态数据和永久存储中的静态数据

为了确保开箱即用的安全系统,身份验证和IP地址白名单会自动启用。

查看MongoDB Atlas文档的安全部分,了解下面讨论的每个安全特性的更多信息。

除非客户端的IP地址(或覆盖其IP地址的CIDR)已被添加到您的蒙古数据库阿特拉斯组的IP白名单中,否则客户端无法访问数据库。

蒙古数据库允许管理员定义用户或应用程序的权限,以及在查询蒙古数据库时可以访问哪些数据。 MongoDB Atlas提供了为用户提供特定于数据库的角色的能力,使得在访问和管理数据的不同实体之间实现职责分离成为可能。

此外,蒙古数据库的聚合框架管道包括一个实现字段级修订的阶段,提供了一种基于用户权限在每个字段级限制返回文档内容的方法。 应用程序必须在每次请求时将密文逻辑传递给数据库。 因此,它依赖于运行在应用程序中的可信中间件来确保编校管道阶段被附加到任何需要编校逻辑的查询中。

MongoDB Atlas为网络上传输的数据和磁盘上的静态数据提供加密。

对SSL/TLS的支持允许客户端通过加密通道连接到蒙古数据库。 客户被定义为能够连接到蒙古数据库阿特拉斯系统的任何实体,包括:

  • 用户和管理员
  • 应用程序
  • MongoDB工具(例如g.,mongodump,mongorestore)
  • 组成蒙古数据库阿特拉斯集群的节点,如副本集成员和查询路由器。

静态数据可以选择使用加密数据卷进行保护。

这是我们四部分博客系列的结尾。 如您所见,MongoDB Atlas自动化了通常会给用户带来负担的操作任务,让您能够专注于您最擅长的事情——交付出色的应用程序。 还有一些任务可以让您的应用程序平稳快速地运行;这个博客系列描述了这些最佳实践。 总的来说,它们将帮助您充分利用数据库服务。


如果你喜欢这篇文章,并想了解更多关于蒙古数据库的信息,请查看关于蒙古数据库的教程和文章。