Todos los datos descargados a través de mongodump
deben ser leídos en la memoria por el servidor MongoDB. También vale la pena señalar que mongodump
respalda las definiciones de datos e índices; el tiempo de restauración también puede ser significativamente más largo en comparación con otros enfoques, ya que mongorestore
será necesario volver a crear los índices secundarios después de cargar los datos.
Como se señala en la documentación de MongoDB , mongodump
es útil para realizar copias de seguridad y restaurar implementaciones pequeñas, pero no es ideal para capturar copias de seguridad completas de sistemas más grandes:
Cuando se conecta a una instancia de MongoDB, mongodump puede afectar negativamente el rendimiento de mongod. Si sus datos son más grandes que la memoria del sistema, las consultas empujarán el conjunto de trabajo fuera de la memoria, causando fallas en la página.
Un servidor independiente limita sus opciones de copia de seguridad si también desea mantener su implementación disponible mientras realiza una copia de seguridad.
Aquí hay algunos enfoques sugeridos en orden de mayor a menor recomendado:
Enfoque n. ° 1: utilizar un servicio de respaldo en la nube
Para la solución a corto plazo más fácil, consideraría usar un servicio de copia de seguridad en la nube comercial como MongoDB Cloud Manager . MongoDB Cloud Manager proporciona respaldo continuo con instantáneas programadas y una política de retención (consulte Preparativos de respaldo para obtener más información). Un servicio en la nube también evita que tenga que desplegar infraestructura / servidores adicionales, por lo que incluso si planea hacerlo en el futuro, esta es una solución útil a corto plazo.
El enfoque general sería:
Como beneficio adicional, Cloud Manager también incluye un agente de monitoreo que puede capturar el historial de métricas de su implementación y le permite configurar alertas.
Enfoque n. ° 2: Convierta su implementación en un conjunto de réplicas y respaldo desde un secundario oculto
Este enfoque requiere el aprovisionamiento de una infraestructura adicional, pero descarga el impacto de la copia de seguridad de su servidor primario. Normalmente, los conjuntos de réplicas se aprovisionan con al menos tres miembros para una alta disponibilidad y conmutación por error automática, pero si su único objetivo es la copia de seguridad, puede usar una configuración de dos servidores menos ideal.
El enfoque general sería:
- Provisión de un segundo servidor que se utilizará para la copia de seguridad
- Convierta su servidor independiente en un conjunto de réplicas .
- Agregue su servidor de respaldo como un secundario oculto con una prioridad de 0 (nunca será primaria) y 0 votos.
- Use uno de los métodos de respaldo admitidos para realizar respaldos en su secundaria oculta. Los métodos de copia de seguridad se enumeran en el orden general de recomendación: las instantáneas del sistema de archivos (si es compatible con su configuración) o la copia de archivos (suponiendo que se detenga
mongod
) son preferibles mongodump
.
- (idealmente) agregue otro secundario que contenga datos si desea los beneficios de alta disponibilidad y conmutación por error de una configuración de conjunto de réplica.
Enfoque n. ° 3: use instantáneas del sistema de archivos (si está disponible y es apropiado)
Una estrategia de copia de seguridad menos impactante que su actual mongodump
sería usar instantáneas del sistema de archivos , suponiendo que tenga un sistema de archivos que admita instantáneas (y todos sus datos y archivos de diario están en un solo volumen para que pueda obtener una instantánea consistente de una ejecución mongod
). La ventaja de las instantáneas del sistema de archivos es que no es necesario leer todos los datos en la memoria mongod
, sin embargo, las instantáneas aún pueden tener un impacto (particularmente cuando se crea la instantánea inicial en un sistema ocupado). Las instantáneas sucesivas son más eficientes y menos impactantes, pero aún no son una solución de respaldo completa ya que las instantáneas son locales para su servidor (y solo tiene una independiente en este momento).
Advertencias
Los enfoques n. ° 1 y n. ° 2 implican habilitar la replicación para facilitar las copias de seguridad. La replicación agregará algunas E / S locales adicionales en su servidor primario ya que todas las operaciones de escritura se anotan en una colección especial con tapa llamada oplog (registro de operaciones) .
Ha mencionado una probable necesidad de fragmentación en el futuro, pero antes de hacerlo, aislaría su carga de trabajo MongoDB de los otros procesos que comparten el mismo servidor. Si puede cambiar su estrategia de respaldo a algo más eficiente que mongodump
, eliminar la contención de recursos y capturar un historial de métricas de referencia para su revisión ... es posible que todavía no se requiera fragmentación.