Información acerca de las instantáneas de RDB

En esta página, se ofrece una descripción general de las instantáneas de RDB para Memorystore para Redis. En esta página, se supone que conoces las instantáneas de RDB de Redis de código abierto y la función de importación y exportación de Memorystore.

Para aprender a habilitar, inhabilitar y supervisar las instantáneas de RDB, consulta Administra instantáneas de RDB.

Memorystore para Redis se usa principalmente como una caché en memoria. Cuando usas Memorystore como caché, tu aplicación puede tolerar la pérdida de datos en caché o puede volver a propagar la caché con facilidad desde un almacén persistente. Sin embargo, hay algunos casos prácticos en los que el tiempo de inactividad de una instancia de Memorystore o la pérdida completa de datos de instancias pueden causar tiempos de inactividad largos para la aplicación.

Recomendamos usar el nivel Estándar como mecanismo principal para la alta disponibilidad. Además, habilitar las instantáneas de RDB en instancias de nivel Estándar proporciona una protección adicional contra fallas que pueden causar limpiezas de caché. El nivel Estándar proporciona una instancia con alta disponibilidad con varias réplicas y permite una recuperación rápida mediante la conmutación por error automática si falla la instancia principal.

En algunas situaciones, es posible que también desees asegurarte de que los datos se puedan recuperar de las copias de seguridad de instantáneas en caso de una falla catastrófica de las instancias de nivel Estándar. En estas situaciones, las copias de seguridad automáticas y la capacidad de restablecer datos de las instantáneas de RDB pueden proporcionar protección adicional contra la pérdida de datos. Si las instantáneas de RDB están habilitadas, se realiza una recuperación a partir de la instantánea de RDB más reciente.

Las instantáneas de RDB son adecuadas para los casos de uso que pueden tolerar una cierta cantidad de inactividad de los datos después de la recuperación. También puedes usar instantáneas de RDB para automatizar la copia de seguridad y la recuperación de instancias de nivel Básico.

Descripción general de las instantáneas de RDB

La función de instantáneas de RDB tiene el siguiente comportamiento:

  • Almacena instantáneas completas de un momento determinado en intervalos especificados por el usuario en el almacenamiento persistente.

  • Tú eliges la frecuencia y la programación de las instantáneas de rutina. El intervalo mínimo de instantáneas es de 1h y el máximo es de 24h.

  • Las instancias de nivel Básico recuperan datos de la instantánea más reciente cada vez que una instancia se reinicia debido a una falla, se somete a una operación de escalamiento o se somete a una actualización de la versión de OSS de Redis de tu instancia.

  • De forma predeterminada, las instancias de nivel Estándar recuperan datos de la réplica, no de una instantánea. Sin embargo, las instancias de nivel Estándar recuperan datos de una instantánea si una réplica no está disponible y la principal y la réplica experimentan un reinicio.

  • No se agregan costos adicionales a la facturación de tu instancia.

Comportamiento adicional

  • Las instantáneas se usan para la recuperación de instancias y no están disponibles para los restablecimientos manuales. En cualquier momento, solo la última instantánea correcta está disponible para la recuperación. Además de las instantáneas de RDB, puedes usar la opción Export and Import para crear copias de seguridad y restablecer tus datos de forma manual.

  • En una instancia de nivel Estándar, se toma una instantánea en la réplica para minimizar el uso de memoria y CPU en la instancia principal. Las instantáneas nunca se toman del nodo principal.

Limitaciones

  • Disponible en instancias de Memorystore para Redis con Redis 5.0 o una versión posterior.

  • Si tu instancia tiene muchas claves (alrededor de 200 millones o más), las instantáneas y recuperaciones de RDB pueden ser lentas. En este volumen de claves, el servidor de Redis puede ser el cuello de botella que ralentiza las instantáneas y las recuperaciones.

Programa instantáneas de RDB

Cuando habilitas las instantáneas de RDB durante la creación de instancias, debes especificar un intervalo de instantáneas. También tienes la opción de especificar una hora de inicio. Juntos definen la programación diaria de las instantáneas. Los intervalos que puedes establecer son 1h, 6h, 12h y 24h. Por ejemplo, si configuras la hora de inicio en las 4 a.m. y el intervalo en 1 hora, las instantáneas se iniciarán a las 4 a.m. del día en que se habilitaron y continuarán cada hora después de esa hora.

Si no se especifica una hora de inicio, se toma la primera instantánea lo antes posible y se respeta el intervalo. Por ejemplo, con una hora de inicio no especificada y un intervalo de 1 hora, la instantánea puede comenzar a las 6:13 a.m. y continuar a las 7:13 a.m., 8:13 a.m., etcétera.

Si se especifica una hora de inicio, se respeta la programación diaria de manera constante si las instantáneas siempre se realizan de forma correcta y no tardan más que el intervalo de copia de seguridad especificado.

Sin embargo, el mejor esfuerzo es activar la instantánea en función de la programación diaria. El programa puede desviarse del cronograma determinado inicialmente por varios motivos:

  • Si una instantánea falla o tarda más que el intervalo de instantáneas especificado en completarse, la siguiente instantánea comienza inmediatamente después de que se completa la instantánea actual.

    • Para evitar que la instantánea se ejecute de forma continua y sobrecargue la instancia, se recomienda configurar un intervalo que sea lo suficientemente largo como para permitir que se complete la instantánea.
  • Si una instantánea ya está en curso en un momento alineado con la programación diaria, esa instantánea se completa y la próxima hora se calcula solo en el intervalo desde el inicio de la última instantánea correcta.

Ajustando el programa existente

Es posible que te encuentres con situaciones en las que desees detener de forma temporal la toma de instantáneas de RDB durante un período determinado. Esto podría garantizarse para que no haya impactos en el rendimiento durante eventos críticos o para inhabilitar temporalmente las instantáneas a fin de solucionar problemas de rendimiento.

Si quieres dejar de tomar instantáneas de forma temporal durante un período breve, puedes ajustar la hora de inicio para que sea una fecha futura. Una vez que ajustes la hora de inicio a una fecha futura, la siguiente instantánea no comenzará hasta esa fecha. Si haces esto, la última instantánea se conservará durante al menos 7 días y se usará en caso de una recuperación.

Para obtener más información sobre cómo ajustar la programación de instantáneas, consulta Ajusta la programación de instantáneas.

Comportamiento de recuperación

Las instancias de Redis de nivel Básico activan una recuperación cada vez que se reinician. Las operaciones comunes que activan reinicios son el escalamiento y la actualización de la versión de la instancia. Las instantáneas de RDB conservan los datos de las instancias de nivel Básico durante estas operaciones que causan reinicios, mantenimientos planificados y fallas imprevistas del sistema.

Las instancias de Redis de nivel Estándar conmutan por error a una réplica como mecanismo de recuperación principal en lugar de cargar desde una instantánea. Una instancia de nivel Estándar se recupera de la instantánea cuando falla el restablecimiento desde una réplica.

Coherencia de los datos en la recuperación

Cuando se habilitan, las instantáneas de RDB hacen todo lo posible para garantizar que las copias de seguridad se realicen en el intervalo especificado, pero esto no se puede garantizar. Las instantáneas pueden fallar por varios motivos. Consulta las prácticas recomendadas para configurar y supervisar instancias cuando las instantáneas de RDB están habilitadas.

Si la instantánea falla de forma consecutiva en varios intervalos, la última copia de seguridad disponible puede estar inactiva de forma arbitraria.

El peor de los casos posibles de pérdida de datos para una recuperación desde una instantánea es la suma del intervalo especificado desde que se inició la última instantánea buena y el tiempo necesario para guardar la siguiente instantánea en el almacenamiento. En el caso de un incidente de recuperación, usa la métrica last_success_age para ver el período de la pérdida de datos.

Te recomendamos que configures alertas para detectar fallas en las instantáneas programadas y tomar medidas correctivas. Para obtener más información sobre la configuración de alertas, consulta Supervisa instantáneas.

Tiempo de recuperación

La instancia no está disponible mientras se recupera de una instantánea. El tiempo de recuperación depende del tamaño de la instantánea. Para comprender el tiempo de recuperación previsto, verifica la métrica RDB recovery remaining time mediante Cloud Monitoring en la consola de Google Cloud.

Mitiga la recuperación lenta

A veces, la recuperación de una instantánea puede tardar más de lo esperado. Es posible que debas tomar medidas para volver a conectar tu aplicación a Redis lo más rápido posible.

En esta circunstancia, puedes crear una instancia de Redis nueva y dirigir el tráfico de aplicaciones a ella. Luego, puedes transferir los datos restablecidos a la instancia nueva una vez que se recupere la instancia original.

Error de instantánea y de recuperación

Error de instantánea

Cualquier instantánea con errores se informa a Cloud Monitoring y se vuelve a intentar la instantánea de inmediato. Las fallas consecutivas de las instantáneas aumentan la cantidad de datos que se pierden en caso de una recuperación, ya que los datos recuperados se vuelven cada vez más inactivos. Para obtener información sobre cómo detectar y solucionar problemas de instantáneas, consulta Supervisa instantáneas.

Error de recuperación

Los errores de recuperación son poco frecuentes, pero pueden ocurrir. Si se produce una falla de recuperación, la instancia se recupera sin datos.

prácticas recomendadas

Para obtener mejores resultados en la creación de copias de seguridad de tu instancia con instantáneas de RDB, sigue las prácticas recomendadas que se describen a continuación:

Administración de la memoria

Las instantáneas de RDB usan una bifurcación de procesos y un mecanismo de “copia en escritura” para tomar una instantánea de la instancia. Según el patrón de operaciones de escritura en la instancia, la memoria usada de la instancia aumentará a medida que se copien las páginas afectadas por las escrituras. En el peor de los casos, el uso de memoria puede ser el doble que los datos de la instancia.

A fin de garantizar que la instancia tenga memoria suficiente para completar la instantánea, debes configurar maxmemory-gb en el 80% de su capacidad, de modo que el 20% se reserve para la sobrecarga. Si quieres obtener más información, consulta Prácticas recomendadas para la administración de memoria. Esta sobrecarga de memoria, además de las instantáneas de supervisión, te ayuda a administrar la carga de trabajo para que tenga instantáneas exitosas.

Instantáneas inactivas

Recuperar la instancia de una instantánea inactiva puede causar problemas de rendimiento en la aplicación, ya que intenta conciliar una cantidad significativa de claves inactivas, o bien otros cambios en la base de datos, como un cambio de esquema.

Si crees que la instantánea está demasiado inactiva o la instancia experimentó otros cambios importantes que son difíciles de conciliar con la instantánea, puedes inhabilitar y volver a habilitar las instantáneas de RDB. Esto borra las instantáneas existentes, lo que te permite evitar la recuperación de una instantánea inactiva.

Para supervisar las instantáneas inactivas, configura una alerta en las metrics de la instantánea de RDB last_status y de la instantánea de RDB last_success_age.

Recuperación prolongada a partir de una instantánea

Recomendamos configurar una alerta para la métrica redis.googleapis.com/server/uptime a fin de recibir notificaciones si la instancia deja de estar disponible.

Si tu instancia no está disponible y la recuperación de una instantánea está tardando demasiado, puedes crear una instancia de Redis nueva y dirigir el tráfico a ella. Una vez que se recupera la instancia original de Redis, puedes transferir los datos restablecidos a la instancia nueva.

Impacto en el rendimiento de las instantáneas de RDB

Según el patrón de tu carga de trabajo, las instantáneas de RDB pueden afectar el rendimiento de la instancia y aumentar la latencia de tus aplicaciones.

Según la cantidad de pérdida de datos potencial que tu aplicación pueda tolerar, puedes minimizar el impacto en el rendimiento de las instantáneas de RDB progresándolas para que se ejecuten durante períodos de poco tráfico de instancias.

Usa la hora de inicio y el intervalo para programar las instantáneas para los horarios necesarios. Por ejemplo, si tu carga es muy baja de la 1 a.m. a las 4 a.m., puedes configurar la hora de inicio a las 3 a.m. y establecer el intervalo en 24 horas.

Si tu sistema tiene una carga constante y necesita instantáneas frecuentes, debes evaluar con cuidado el impacto en el rendimiento y sopesar los beneficios de usar instantáneas de RDB para la carga de trabajo.

Supervisa instantáneas

Es importante supervisar las instantáneas y configurar alertas de instantáneas con errores. Las instantáneas con errores pueden indicar que hay una instancia sobrecargada que puede seguir teniendo dificultades para recuperarse de la instantánea.

Si quieres obtener una lista de las métricas disponibles para supervisar instantáneas, consulta Métricas de instantáneas de RDB. Si quieres recibir una notificación sobre una instantánea con errores, configura una alerta para la métrica de la instantánea de RDB last_status. También puedes usar la consola de Google Cloud para verificar si hay fallas.

Supervisa el impacto en el rendimiento

Puedes supervisar el impacto en el rendimiento que tiene una instantánea en tu instancia de Memorystore; para ello, consulta las métricas disponibles a través de Cloud Monitoring, como el uso de CPU y de memoria, etc. Si notaste un rendimiento reducido, puedes usar la métrica de instantánea de RDB in_progress para determinar si una instantánea estaba en curso cuando se detectaron problemas de rendimiento.

¿Qué sigue?