MongoDB操作最佳实践(九)

灾难恢复:备份与恢复

备份和恢复策略对于保护任务关键型数据免受灾难性故障或人为错误(例如代码错误或意外丢弃集合)是必需的。有了备份和恢复策略,管理员可以在没有数据丢失的情况下恢复业务操作,并且组织可以满足法规和遵从性要求。定期备份还有其他优点。备份可用于为开发、阶段或QA部署新的环境,而不影响生产系统。

Ops Manager和Cloud Manager备份是连续维护的,仅比操作系统晚几秒钟。如果MongoDB集群出现故障,最近的备份只是稍微落后了一会儿,从而最小化了数据丢失的风险。Ops Manager和Cloud Manager是唯一的MongoDB解决方案,它们提供副本集的实时备份和分片集群的集群范围的快照。您可以快速而安全地恢复到您需要的精确时刻。Ops团队可以使用Ops Manager和Cloud Manager可靠和安全地自动进行数据库恢复。只需几次简单的点击即可构建完整的开发、测试和恢复集群。操作团队可以只针对指定集合而不是整个数据库来配置备份,从而加速备份并减少所需的存储空间。

因为Ops Manager只读取操作日志,所以正在进行的性能影响最小——类似于向副本集添加附加副本。

通过使用MongoDB Enterprise Advanced,您可以部署Ops Manager以控制本地数据中心中的备份,或者使用Cloud Manager服务,该服务提供具有现收现付模式的完全管理的备份解决方案。专用MongoDB工程师在24x365基础上监视用户备份,在出现问题时向操作团队发出警报。

Ops Manager和Cloud Manager不是备份MongoDB的唯一机制。其他选择包括:

  • 文件系统副本
  • 用MongoDB打包的mongodump工具

文件系统备份

文件系统备份(如Linux LVM提供的文件系统备份)可以快速有效地创建文件系统的一致快照,这些快照可以复制用于备份和还原目的。对于具有单个副本集的数据库,可以暂时停止操作,以便通过发出db.fsyncLock()命令来创建一致的快照(如果日志与MMAPv1的数据文件位于同一设备上,则不需要锁定数据库)。这将闪烁所有挂起的对磁盘的写入,并锁定整个mongod实例,以防止额外的写入,直到用db.fsyncUnlock()释放锁为止。

有关如何使用文件系统快照创建MongoDB备份的更多信息,请参阅MongoDB文档中的备份和恢复文件系统快照。

只有Ops Manager和Cloud Manager提供了在所有分片之间进行一致备份的自动化方法。

有关分片环境中的备份和还原的更多信息,请参阅关于备份和还原分片集群的MongoDB文档页面和关于用文件系统快照备份分片集群的教程。

mongodump

mongodump是与MongoDB捆绑的工具,它执行MongoDB中数据的实时备份。mongodump可用于dump整个数据库、集合或查询结果。mongodump可以通过dump在dump期间创建的操作日志条目,然后在mongorestore期间重放它,从而生成一个数据转储,该数据dump会在短时间内反转,mongodump是一个从mongodump生成的BSON数据库转储中导入内容的工具。

MongoDB与外部监控解决方案的集成

Ops Manager API通过以编程方式访问自动化特性和监视数据,提供与外部管理框架的集成。

除了Ops Manager之外,MongoDB Enterprise Advanced还可以向SNMP陷阱报告系统信息,支持通过外部监控解决方案进行集中数据收集和聚合。查看文档以了解关于SNMP集成的更多信息。

APM集成

许多操作团队使用应用程序性能监视(APM)平台从单个管理UI获得对其完整IT基础设施的全局监督。可以快速识别和隔离影响客户体验的风险问题,以指定组件——是否可归因于设备、硬件基础设施、网络、API、应用程序代码、数据库等等。

图6:集成到应用程序性能的单个视图中的MongoDB

MongoDB驱动程序包括向APM工具公开查询性能指标的API。管理员可以监视在每个操作上花费的时间,并识别需要进一步分析和优化的运行缓慢的查询。

此外,Ops和Cloud Manager现在提供与New Relic平台的打包集成。APM可以访问Ops Manager的关键度量以进行可视化,从而能够监视MongoDB的健康状况,并与应用程序区域的其他部分相关联。

如图6所示,概要度量在APM的UI中呈现。管理员还可以针对监视数据运行用于分析的New Relic Insights,以生成提供关键性能指示符(KPI)的实时跟踪的仪表板。

安全

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

深度防御

建议使用深度防御方法来确保MongoDB部署的安全性,并且它解决了许多管理风险和减少风险暴露的不同方法。

深度防御方法的意图是使您的环境分层,以确保没有可利用的单个故障点,从而允许入侵者或不信任方访问MongoDB数据库中存储的数据。减少开发风险的最有效方法是在可信任的环境中运行MongoDB、限制访问、遵循具有最少特权的系统、建立安全的开发生命周期以及遵循部署最佳实践。

MongoDB Enterprise Advanced具有防御、检测和控制对MongoDB的访问的广泛功能,提供任何现代数据库的最完整的安全控制之一:

  • 用户权限管理。使用用于对数据库、集合进行身份验证和授权的行业标准机制控制对敏感数据的访问,并低到文档中单个文件的访问级别。
  • 审计。确保有监管和内部遵守。
  • 加密。保护在网络上运行的数据,并在持久存储中保持静止。
  • 管理控制。更快地识别潜在开发风险并减少其影响。

回顾MongoDB安全参考体系结构,以了解下面讨论的每个安全特性的更多信息。

认证

可以通过质询/响应机制和x.509PKI证书从数据库本身管理身份验证,或者通过MongoDB Enterprise Advanced集成到外部安全机制,包括LDAP、Windows Active Directory和Kerberos。

授权

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

MongoDB 3.4扩展了对通过LDAP对用户进行身份验证的现有支持,现在包括LDAP授权。这使得存储在LDAP服务器中的现有用户特权能够映射到MongoDB角色,而无需在MongoDB本身中重新创建用户。

审计

MongoDB Enterprise Advanced允许安全管理员为针对MongoDB(无论是DML、DCL还是DDL)的任何操作构造和更合适的审计跟踪。例如,可以记录和审计检索到指定文档的用户的身份以及在会话期间对数据库所做的任何更改。可以将审计日志以各种格式写入多个目的地,包括写入控制台和syslog(JSON格式)以及写入文件(JSON或BSON),然后可以将审计日志加载到MongoDB并分析以识别相关事件

加密

MongoDB数据可以在网络和磁盘上进行加密。

对SSL的支持允许客户端通过加密通道连接到MongoDB。MongoDB支持FIPS 140-2加密时,运行在FIPS模式与FIPS验证的加密模块。

可以使用以下方法保护静止的数据:

  • MongoDB加密存储引擎
  • MongoDB合作伙伴的证书数据库加密解决方案,如IBM和Vormetric
  • 应用程序本身的逻辑

使用加密存储引擎,保护静止数据现在成为数据库的一个整体特征。通过本地加密磁盘上的数据库文件,管理员消除了外部加密机制的管理和性能开销。这个新的存储引擎提供了额外的防御级别,只允许具有适当数据库凭证的人员访问加密数据。

使用加密存储引擎,使用以随机加密密钥作为输入并生成“密文”的算法来加密原始数据库“纯文本”内容,如果使用解密密钥解密,则只能读取“密文”。该过程对于应用程序是完全透明的。MongoDB支持多种加密算法——默认是CBC模式下的AES-256(256位加密)。还支持GCM模式下的AES-256。加密可以配置为满足FIPS 140-2的要求。

存储引擎使用单独的密钥加密每个数据库。MongoDB中的密钥包装方案,用一个外部主密钥,包装每个服务器的所有单独的内部数据库密钥。加密存储引擎支持两个密钥管理选项——在这两种情况下,MongoDB外部管理的唯一密钥是主密钥:

  • 通过密钥文件进行本地密钥管理
  • 通过KMIP协议与第三方密钥管理设备集成(推荐)

只读、编译视图

在MongoDB 3.4中,DBA可以定义只公开来自底层集合的数据子集的非物化视图,即适合指定文件的视图。DBA可以定义通过聚合在另一个集合或视图上生成的集合的视图。针对视图授予的权限是与授予基础集合的权限分开指定的。

视图是使用标准的MongoDB查询语言和聚合管道定义的。它们允许包含或排除文件、屏蔽文件值、调整、模式转换、分组、排序、限制以及使用$lookup和$graphLookup连接数据到另一个集合。

您可以从文档中了解更多关于MongoDB只读视图的信息。

本文如果对您有所帮助,欢迎请我喝杯咖啡^_^

支付宝

微信

支付宝扫一扫领红包

猜你喜欢

转载自blog.csdn.net/qq_32523587/article/details/85220430