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 las instantáneas de RDB de Redis de código abierto 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 usas Memorystore como caché, tu aplicación puede tolerar la pérdida de datos de la caché o puede volver a propagar la caché muy fácilmente 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 los datos de la instancia pueden provocar largos tiempos de inactividad de la aplicación.
Recomendamos usar el nivel Estándar como el mecanismo principal para lograr una 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 provocar vaciados de caché. El nivel Estándar proporciona una instancia altamente disponible con varias réplicas y permite una recuperación rápida con la conmutación por error automática si falla la instancia principal.
En algunos casos, también es posible que 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 estos casos, las copias de seguridad automatizadas y la capacidad de restablecer datos a partir de instantáneas de la RDB pueden brindar 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 los casos de uso que pueden tolerar cierta cantidad de datos inactivos 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 del 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
1hy el máximo es24h.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 Redis OSS de tu instancia.
De forma predeterminada, las instancias de nivel estándar recuperan los 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 tanto la instancia principal como la réplica experimentan un reinicio.
No agrega 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 las restauraciones manuales. En cualquier momento, solo está disponible la última instantánea correcta 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 el nodo 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 o posterior de Redis.
Si tu instancia tiene muchas claves (alrededor de 200 millones o más), las copias instantáneas y las 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.
Programación de 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 tienes la opción de especificar una hora de inicio. En conjunto, definen la programación diaria de las instantáneas. Los intervalos que puedes establecer son 1h, 6h, 12h y 24h. Por ejemplo, si estableces la hora de inicio a 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, se respeta el programa diario de forma coherente si las instantáneas siempre se realizan correctamente y no tardan más que el intervalo de copia de seguridad especificado.
Sin embargo, el activador de la instantánea según la programación diaria se realiza de la mejor manera posible. El programa puede desviarse del programa determinado inicialmente por varios motivos:
Si una instantánea falla o tarda más en completarse que el intervalo especificado, la siguiente instantánea comenzará inmediatamente después de que se complete la instantánea actual.
- Para evitar que la instantánea se ejecute de forma continua y sobrecargue la instancia, se recomienda establecer un intervalo lo suficientemente largo como para que se complete la instantánea.
Si ya se está ejecutando una instantánea en un momento alineado con la programación diaria, esa instantánea se completará y la siguiente hora de instantánea se calculará únicamente en función del intervalo desde el inicio de la última instantánea exitosa.
Cómo ajustar la programación existente
Es posible que te encuentres con situaciones en las que quieras 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 y 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 ajustas la hora de inicio a una fecha futura, la siguiente instantánea no se inicia 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 Cómo ajustar 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 reinicios son el escalamiento y la actualización de la versión de tu instancia. Las instantáneas de RDB conservan los datos de las instancias de nivel básico durante estas operaciones que provocan reinicios, mantenimiento planificado 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 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 desactualizada de forma arbitraria.
En el peor de los casos, la 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 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 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 cómo configurar 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 métrica RDB recovery remaining time con Cloud Monitoring en la consola de Google Cloud .
Cómo mitigar 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 antes posible.
En esta situación, puedes crear una instancia de Redis nueva 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
Las instantáneas que fallan se informan 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 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 en las instantáneas, consulta Supervisión de 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 los mejores resultados al crear 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 procesos y un mecanismo de "copia al escribir" para tomar una instantánea de la instancia. Según el patrón de escrituras en la instancia, la memoria utilizada de la instancia aumentará a medida que se copien las páginas afectadas por las escrituras. En el peor de los casos, la huella de memoria puede duplicar el tamaño de los datos en 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, de modo 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 las instantáneas de supervisión, te ayuda a administrar tu carga de trabajo para que las instantáneas se realicen correctamente.
Instantáneas obsoletas
Recuperar tu instancia a partir de una instantánea obsoleta puede causar problemas de rendimiento en tu aplicación, ya que intentará 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 desactualizada 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 de instantáneas de RDB last_status y de instantáneas de RDB last_success_age.
Recuperación prolongada a partir de una instantánea
Te recomendamos que configures una alerta para la métrica redis.googleapis.com/server/uptime para recibir una notificación si tu instancia deja de estar disponible.
Si tu instancia no está disponible y la recuperación desde una instantánea tarda demasiado, puedes crear una instancia de Redis nueva y dirigir el tráfico a ella. Una vez que se recupere la instancia de Redis original, puedes transferir los datos restablecidos a la instancia nueva.
Impacto en el rendimiento de las instantáneas de RDB
Según tu patrón de 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 puede tolerar, 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 de instancias bajo.
Usa la hora de inicio y el intervalo para programar las instantáneas en 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 a 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.
Supervisión de 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.
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 sobre una instantánea con errores, configura una alerta para la métrica last_status de la instantánea de RDB. También puedes usar la consola Google Cloud para verificar si hay errores.
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, el uso de memoria, etcétera. Si observas una reducción en el rendimiento, puedes usar la métrica de instantánea de RDB in_progress para determinar si había una instantánea en curso cuando se detectaron los problemas de rendimiento.
¿Qué sigue?
- Obtén más información para importar y exportar copias de seguridad.
- Sigue la guía para exportar datos desde una instancia de Redis.