Instantáneas de RDB

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

Para obtener información sobre cómo habilitar, inhabilitar y supervisar las instantáneas de RDB, consulta Administra instantáneas de RDB.

Memorystore para Redis se usa principalmente como caché en memoria. Cuando se usa Memorystore como caché, la aplicación puede tolerar la pérdida de datos en caché o puede volver a propagar la caché desde un almacén persistente con mucha facilidad. Sin embargo, hay algunos casos de uso en los que el tiempo de inactividad de una instancia de Memorystore o la pérdida completa de los datos de la instancia pueden causar tiempos de inactividad prolongados de 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 brinda protección adicional contra fallas que pueden provocar 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 la principal falla.

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

Las instantáneas de RDB son adecuadas para casos de uso que pueden tolerar cierto nivel 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 de un momento determinado completas a intervalos especificados por el usuario en el almacenamiento continuo.

  • Puedes elegir la frecuencia y el programa de las instantáneas de rutina. El intervalo de instantáneas mínimo es 1h y el máximo es 24h.

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

  • De forma predeterminada, las instancias de nivel Estándar recuperan datos de la réplica, no 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 ambas se reinician.

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

Comportamiento adicional

  • Las instantáneas se usan a fin de recuperar instancias y no están disponibles para restablecimientos manuales. En cualquier momento, solo está disponible la recuperación de la última instantánea correcta. Además de las instantáneas de RDB, puedes usar Importar y exportar para crear una copia de seguridad y restablecer los datos de forma manual.

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

Limitaciones

  • Disponible para niveles de capacidad M4 y anteriores. No es compatible con instancias M5 (101 GB o más).

  • Disponible en instancias de Memorystore para Redis que usan la versión 5.0 o superior de Redis.

Programa instantáneas de RDB

Cuando habilitas las instantáneas de RDB durante la creación de la instancia, debes especificar un intervalo de instantáneas. También puedes especificar una hora de inicio. Juntos, definen la programación diaria de las instantáneas. Los intervalos que puedes configurar son 1h, 6h, 12h y 24h. Por ejemplo, si configuras la hora de inicio a 4 a.m. y el intervalo a 1 hora, las instantáneas comienzan a las 4 a.m. del día en que se habilitan y continúan cada hora después de eso.

Si no se especifica una hora de inicio, la primera instantánea se toma lo antes posible y se respeta el intervalo. Por ejemplo, con una hora de inicio sin especificar 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, la programación diaria se respeta de forma coherente si las instantáneas siempre se ejecutan de forma correcta y no tardan más que el intervalo de copia de seguridad especificado.

Sin embargo, activar la instantánea según la programación diaria es lo mejor. El programa puede desviarse del programa inicialmente determinado 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 la finalización de la instantánea actual.

    • Para evitar que la instantánea se ejecute de forma continua y sobrecargue la instancia, se recomienda establecer un intervalo que sea lo suficientemente largo como para permitir que la instantánea se complete.
  • Si una instantánea ya está en progreso en un horario alineado con la programación diaria, esa instantánea se completa y la siguiente hora de instantánea se calcula únicamente en el intervalo desde el inicio de la última instantánea exitosa.

Ajustar programación existente

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

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

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

Comportamiento de la recuperación

Las instancias de Redis de nivel Básico activan una recuperación cada vez que se reinicia la instancia. 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 instancia del nivel Básico durante estas operaciones que causan reinicios, mantenimiento planificado y fallas inesperadas del sistema.

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

Coherencia de los datos en la recuperación

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

Si la instantánea falla consecutivamente en varios intervalos, la última copia de seguridad disponible puede ser arbitraria.

La peor pérdida de datos para una recuperación de una instantánea es la suma del intervalo especificado desde que comenzó la última instantánea correcta 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 configurar alertas para detectar fallas en las instantáneas programadas y tomar medidas correctivas. Para obtener más información sobre cómo configurar alertas, consulta Supervisa instantáneas.

Tiempo de recuperación

La instancia no estará disponible mientras se recupere 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 con Cloud Monitoring o Google Cloud Console.

Mitiga la recuperación lenta

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

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

Falla de la instantánea y de la recuperación

Falla de la instantánea

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

Error de recuperación

Las fallas de recuperación son poco frecuentes, pero pueden ocurrir. Si se produce un error de recuperación, la instancia se recupera sin datos.

Prácticas recomendadas

Para obtener mejores resultados cuando creas una copia de seguridad de tu instancia con instantáneas de RDB, debes seguir 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 proceso y un mecanismo de copia en escritura para tomar una instantánea de la instancia. Según el patrón de las escrituras en la instancia, la memoria usada de la instancia aumenta a medida que se copian las páginas que tocaron las escrituras. En el peor de los casos, la huella de memoria puede ser el doble del tamaño de los datos en la instancia.

A fin de garantizar que la instancia tenga memoria suficiente para completar la instantánea, debes establecer maxmemory-gb en el 80% de su capacidad, de modo que se reserve el 20% para sobrecarga. Consulta las prácticas recomendadas de administración de memoria para obtener más información. Esta sobrecarga de memoria, además de las instantáneas de supervisión, te ayuda a administrar la carga de trabajo para tener 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 cambios en la base de datos, como un cambio de esquema.

Si crees que la instantánea está demasiado inactiva o si tu instancia sufrió 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 si hay instantáneas inactivas, configura una alerta en las métricas de las instantáneas de RDB last_status y last_success_age.

Recuperación prolongada de una instantánea

Recomendamos configurar una alerta para que la métrica redis.googleapis.com/server/uptime te notifique si tu instancia deja de estar disponible.

Si la instancia no está disponible y la recuperación de una instantánea tarda demasiado, puedes crear una instancia nueva de Redis y dirigir el tráfico a ella. Una vez que la instancia original de Redis se recupera, 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 la carga de trabajo, las instantáneas de RDB pueden afectar el rendimiento de la instancia y aumentar la latencia de las 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 si las programas 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 de los horarios requeridos. Por ejemplo, si la carga es muy baja de 1 a.m. a 4 a.m., puedes establecer la hora de inicio a las 3 a.m. y establecer el intervalo en 24 horas.

Si tu sistema tiene una carga constante y requiere instantáneas frecuentes, debes evaluar con cuidado el impacto en el rendimiento y considerar 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 para las instantáneas fallidas. Las instantáneas con errores pueden indicar una instancia sobrecargada que puede seguir teniendo dificultades para recuperarse de la instantánea.

Si deseas obtener una lista de las métricas disponibles para supervisar instantáneas, consulta Métricas de instantáneas de RDB. A fin de recibir un aviso de una instantánea con errores, configura una alerta para la métrica last_status de la instantánea de RDB. También puedes usar Google Cloud Console para verificar si hay fallas.

Supervisar el impacto en el rendimiento

Puedes supervisar el impacto del rendimiento que tiene una instantánea en tu instancia de Memorystore si consultas las métricas disponibles a través de Cloud Monitoring, como el uso de CPU, el uso 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?