sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Por qué no se recomienda iniciar una instancia MongoDB individual como conjunto de réplicas en producción?

La función principal de un conjunto de réplicas es proporcionar redundancia de datos y alta disponibilidad para su implementación de MongoDB. Es decir, si el nodo principal en un conjunto de réplicas fallara por algún motivo, un secundario se convertiría inmediatamente en el nuevo principal (en promedio, en unos 10 segundos). Consulte Replicación para más detalles sobre este tema.

Los controladores oficiales de MongoDB están al tanto de este evento de elección del conjunto de réplicas y proporcionarían reconexión automática y reintentos de operación al nuevo primario. Desde el punto de vista de la aplicación, no pasó nada en el lado de la base de datos.

Otra ventaja de usar un conjunto de réplicas con múltiples secundarios es la posibilidad de actualización/mantenimiento sin tiempo de inactividad de forma continua. Esto se puede hacer poniendo un secundario fuera de línea, manteniéndolo, luego haciendo mantenimiento en los otros secundarios y finalmente bajando el primario y manteniéndolo. Una vez más, dado que los controladores oficiales de MongoDB están al tanto de estos eventos, técnicamente puede realizar el mantenimiento en una base de datos en vivo con un impacto mínimo y sin tiempo de inactividad para la aplicación.

Esta es una filosofía diferente frente a un servidor de base de datos monolítico, donde solo hay un gran servidor verdadero. Aunque hay ciertos méritos en una implementación monolítica (que es una discusión diferente nuevamente :)), MongoDB fue diseñado como una base de datos distribuida tolerante a fallas en mente. Una desventaja inmediata de un solo servidor es que el servidor debe estar activo al 100% en todo momento, o de lo contrario, la aplicación se interrumpe. Se diseñó un conjunto de réplicas para que su aplicación pueda tener un tiempo de actividad del 100 % sin ejercer presión sobre los servidores individuales que tienen que tener un tiempo de actividad del 100 %.

Como beneficio adicional, un conjunto de réplicas puede ser capaz de proporcionar escalabilidad de lectura configurando el controlador para que lea desde los secundarios (las escrituras siempre deben ir al primario). Tenga en cuenta que debe haber un diseño cuidadoso si desea realizar lecturas secundarias, ya que esto puede interferir potencialmente con el aspecto de alta disponibilidad si se abusa de él.

En resumen, un conjunto de réplicas puede proporcionar:

  • Alta disponibilidad y tolerancia a fallas
  • Sin tiempo de inactividad de mantenimiento
  • Redundancia de datos para escalar lecturas

sin requerir que el hardware sea 100% confiable. Esta es la razón por la que se recomienda encarecidamente un conjunto de réplicas en una implementación de producción.

Consulte Arquitecturas de implementación de conjuntos de réplicas para obtener consideraciones más detalladas sobre la implementación del conjunto de réplicas.