En esta página, se proporciona una descripción general de las instantáneas de RDB de Memorystore para Redis. En esta página, se supone que conoces las instantáneas de RDB de Redis de código abierto RDB Snapshots y la función de importación y 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é, tu aplicación puede tolerar la pérdida de datos de caché o puede volver a propagar la caché con mucha facilidad desde un almacén persistente. 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 datos de la instancia pueden causar largos tiempos de inactividad de la aplicación.
Recomendamos usar el nivel Estándar como el mecanismo principal para la alta disponibilidad. Además, habilitar las instantáneas de RDB en las instancias de nivel Estándar proporciona protección adicional contra las fallas que pueden causar vaciamientos de caché. El nivel Estándar proporciona una instancia altamente disponible 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 falla catastrófica de las instancias de nivel Estándar. En estas situaciones, las copias de seguridad automatizadas 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 a partir de la instantánea de RDB más reciente.
Las instantáneas de RDB son adecuadas para casos de uso que pueden tolerar cierta cantidad de obsolescencia de 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
1hy el máximo es de24h.Las instancias de nivel Básico recuperan datos de la instantánea más reciente cada vez que se reinicia una instancia 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 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 no hay una réplica disponible y la instancia principal y la réplica experimentan un reinicio.
No agrega ningún costo adicional 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 restablecimientos manuales. En cualquier momento, solo la última instantánea exitosa está disponible para la recuperación. Además de las instantáneas de RDB, puedes usar Exportar e Importar para crear copias de seguridad y restablecer tus 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 memoria y CPU en la instancia principal. Las instantáneas nunca se toman del nodo principal.
Limitaciones
Disponible en instancias de Memorystore para Redis que usan la versión 5.0 de Redis o una 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 en sí puede ser el cuello de botella que ralentiza las instantáneas y las recuperaciones.
Programa instantáneas de RDB
Cuando habilites las instantáneas de RDB durante la creación de la instancia, debes especificar un intervalo de instantáneas. También tienes la opción de especificar una hora de inicio. Juntos, estos definen la programación diaria de las instantáneas. Los intervalos que puedes configurar son 1h, 6h, 12h y 24h. Por ejemplo, si estableces la hora de inicio en las 4 a.m. y el intervalo en 1 hora, las instantáneas comenzarán a las 4 a.m. del día en que se habiliten y continuarán 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 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, la programación diaria se respeta de manera coherente si las instantáneas siempre se realizan correctamente 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 el mejor esfuerzo. La programación puede desviarse de la programación determinada 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 establecer un intervalo que sea lo suficientemente largo 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 hora de la siguiente instantánea se calcula únicamente en el intervalo desde el inicio de la última instantánea exitosa.
Ajusta la programación existente
Es posible que te encuentres con situaciones en las que desees pausar 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 temporalmente las instantáneas para 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 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 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 sobre cómo ajustar las programaciones 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 reinicia la instancia. Las operaciones comunes que activan los reinicios son el escalamiento y la actualización de la versión de tu instancia. Las instantáneas de RDB conservan los datos de la instancia de nivel Básico durante estas operaciones que causan reinicios, mantenimiento planificado y fallas imprevistas del sistema.
Las instancias de Redis de nivel Estándar conmutan por error a una réplica como el 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 están habilitadas, las instantáneas de RDB hacen su mejor esfuerzo 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 obsoleta de forma arbitraria.
La peor pérdida de datos para una recuperación a partir de una instantánea es la suma del intervalo especificado desde que se inició la última instantánea correcta y el tiempo 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 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.
Período 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, consulta la RDB recovery remaining time
métrica con Cloud Monitoring
en la Google Cloud consola.
Mitiga la recuperación lenta
A veces, la recuperación a partir de una instantánea puede tardar más de lo esperado. Es posible que debas tomar medidas para que tu aplicación se vuelva a conectar a Redis lo antes posible.
En esta circunstancia, puedes crear una instancia nueva 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 instantánea y falla de recuperación
Falla de instantánea
Cualquier instantánea fallida se informa a Cloud Monitoring, y se vuelve a intentar de inmediato. Las fallas consecutivas de instantáneas aumentan la cantidad de datos perdidos en caso de recuperación, ya que los datos recuperados se vuelven cada vez más obsoletos. Para obtener información sobre cómo detectar y solucionar problemas de fallas de instantáneas, consulta Supervisa instantáneas.
Falla de recuperación
Las fallas 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 los mejores resultados cuando crees copias 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 escrituras en la instancia, la memoria usada de la instancia crecerá a medida que se copien las páginas afectadas por las escrituras. En el peor de los casos, el espacio de memoria puede ser el doble del tamaño de los datos de la instancia.
Para asegurarte de que la instancia tenga suficiente memoria para completar la instantánea, debes establecer maxmemory-gb en el 80% de la capacidad de la instancia para que el 20% se reserve para la sobrecarga. Consulta Prácticas recomendadas para la administración de memoria
para obtener más información. Esta sobrecarga de memoria, además de Supervisa instantáneas
te ayuda a administrar tu carga de trabajo para tener instantáneas exitosas.
Instantáneas obsoletas
Recuperar tu instancia a partir de una instantánea obsoleta puede causar problemas de rendimiento en tu aplicación, ya que intenta conciliar una cantidad significativa de claves obsoletas o cualquier otro cambio en tu base de datos, como un cambio de esquema.
Si crees que tu instantánea está demasiado obsoleta o que tu instancia sufrió otros cambios importantes que son difíciles de conciliar con la instantánea, puedes inhabilitar y, luego, volver a habilitar las instantáneas de RDB. Esto borra las instantáneas existentes, lo que te permite evitar la recuperación a partir de una instantánea obsoleta.
Para supervisar las instantáneas obsoletas, configura una alerta en las métricas last_status
de instantáneas de RDB y last_success_age de instantáneas de RDB.
Recuperación prolongada a partir de una instantánea
Te recomendamos que configures una alerta para la
redis.googleapis.com/server/uptime
métrica para notificarte si tu instancia deja de estar disponible.
Si tu instancia no está disponible y la recuperación a partir de una instantánea tarda demasiado, puedes crear una instancia nueva de Redis y dirigir el tráfico a ella. Una vez que se recupere 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 pueda tolerar tu aplicación, puedes minimizar el impacto en el rendimiento de las instantáneas de RDB programándolas para que se ejecuten durante períodos de tráfico bajo de la instancia.
Usa la hora de inicio y el intervalo para programar las instantáneas para los horarios requeridos. Por ejemplo, si tu carga es muy baja de 1 a.m. a 4 a.m., puedes establecer la hora de inicio en las 3 a.m. y el intervalo en 24 horas.
Si tu sistema tiene una carga constante y requiere instantáneas frecuentes, debes evaluar cuidadosamente 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 para las instantáneas fallidas. Las instantáneas fallidas pueden indicar una instancia sobrecargada que puede seguir teniendo dificultades para recuperarse de la instantánea.
Para obtener una lista de las métricas disponibles para supervisar instantáneas, consulta Métricas de instantáneas de RDB. Para recibir un aviso de una instantánea fallida, configura una
alerta para la métrica last_status
de instantáneas de RDB. También puedes usar la Google Cloud consola 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 si observas las métricas disponibles a través de
Cloud Monitoring
como el uso de CPU, el uso de memoria, etcétera. Si observas una reducción en el rendimiento, puedes
usar la métrica in_progress
de instantáneas de RDB para determinar si una instantánea estaba en curso cuando se detectaron problemas de
rendimiento.
¿Qué sigue?
- Obtén información para importar y exportar copias de seguridad.
- Sigue la guía para Exportar datos desde una instancia de Redis.