En esta página se ofrece una descripción general de las capturas de RDB de Memorystore para Redis. En esta página se da por hecho que conoces las instantáneas RDB de Redis de código abierto y la función importar/exportar de Memorystore.
Para saber cómo habilitar, inhabilitar y monitorizar las copias de RDB, consulta Gestionar copias 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 la caché o puede volver a rellenar la caché muy fácilmente 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 los datos de la instancia pueden provocar largos periodos de inactividad de la aplicación.
Te recomendamos que uses 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 protección adicional frente a los fallos que pueden provocar vaciados de caché. El nivel estándar proporciona una instancia de 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 algunos casos, también puede que quieras asegurarte de que los datos se puedan recuperar a partir de copias de seguridad de instantáneas en caso de que se produzca un fallo catastrófico en las instancias de nivel Estándar. En estos casos, las copias de seguridad automáticas y la posibilidad de restaurar datos a partir de las copias de RDB pueden proporcionar una protección adicional contra la pérdida de datos. Si las capturas de RDB están habilitadas, se realiza una recuperación a partir de la captura de RDB más reciente, si es necesario.
Las instantáneas de RDB son adecuadas para casos prácticos en los que se puede tolerar una cierta cantidad de datos obsoletos después de la recuperación. También puedes usar capturas de RDB para automatizar la copia de seguridad y la recuperación de instancias de nivel básico.
Información general sobre las copias de seguridad de RDB
La función de instantáneas de RDB se comporta de la siguiente manera:
Almacena instantáneas completas de un momento dado a intervalos especificados por el usuario en el almacenamiento persistente.
Tú eliges la frecuencia y la programación de las capturas de rutina. El intervalo mínimo entre instantáneas es de
1h
y el máximo es de24h
.Las instancias del nivel Básico recuperan los datos de la instantánea más reciente cada vez que se reinicia una instancia debido a un fallo, se somete a una operación de escalado o se somete a una actualización de la versión OSS de Redis de la 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 del nivel estándar recuperan los datos de una instantánea si no hay ninguna réplica disponible y tanto la instancia principal como la réplica se reinician.
No añade ningún coste adicional a la facturación de tu instancia.
Comportamiento adicional
Las capturas se usan para recuperar instancias y no están disponibles para restauraciones manuales. En cualquier momento, solo se puede recuperar la última instantánea correcta. Además de las copias de seguridad de RDB, puedes usar Exportar e importar para crear copias de seguridad y restaurar tus datos manualmente.
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 copias de seguridad nunca se toman del nodo principal.
Restricciones
Disponible en instancias de Memorystore para Redis que usen la versión 5.0 de Redis o una posterior.
Si tu instancia tiene muchas claves (unos 200 millones o más), las copias de seguridad y las recuperaciones de RDB pueden ser lentas. Con este volumen de claves, el propio servidor Redis puede ser el cuello de botella que ralentice las instantáneas y las recuperaciones.
Programar capturas de RDB
Cuando habilites las copias de seguridad de RDB durante la creación de la instancia, debes especificar un intervalo de copias de seguridad. También puedes especificar una hora de inicio. Juntos, definen la programación diaria de las capturas. Los intervalos que puedes definir son 1h
, 6h
, 12h
y 24h
. Por ejemplo, si defines la hora de inicio a las 4:00 y el intervalo a 1 hora, las instantáneas empezarán a las 4:00 del día en que se habiliten y continuarán cada hora a partir de ese momento.
Si no se especifica una hora de inicio, la primera instantánea se hará lo antes posible y se respetará el intervalo. Por ejemplo, si no se especifica la hora de inicio y el intervalo es de 1 hora, la vista general puede empezar a las 6:13 y continuar a las 7:13, las 8:13, etc.
Si se especifica una hora de inicio, la programación diaria se respeta de forma constante si las instantáneas siempre se completan correctamente y no tardan más que el intervalo de copia de seguridad especificado.
Sin embargo, la activación de la instantánea según la programación diaria se realiza en la medida de lo posible. El horario puede desviarse del horario determinado inicialmente por varios motivos:
Si una captura falla o tarda más del intervalo de captura especificado en completarse, la siguiente captura se iniciará inmediatamente después de que se complete la captura actual.
- Para evitar que la instantánea se ejecute continuamente y sobrecargue la instancia, se recomienda definir un intervalo lo suficientemente largo como para que la instantánea se complete.
Si ya se está creando una instantánea a una hora que coincide con la programación diaria, se completará y la hora de la siguiente instantánea se calculará únicamente en función del intervalo desde el inicio de la última instantánea que se haya creado correctamente.
Ajustar una programación
Puede que te encuentres en situaciones en las que quieras pausar temporalmente la creación de copias de seguridad de RDB durante un periodo determinado. Esto puede deberse a que no haya ningún impacto en el rendimiento durante eventos críticos o a que se inhabiliten temporalmente las copias para solucionar problemas de rendimiento.
Para dejar de hacer instantáneas temporalmente durante un breve periodo, puedes cambiar la hora de inicio a una fecha futura. Una vez que hayas ajustado la hora de inicio a una fecha futura, la siguiente captura no se iniciará 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 capturas, consulta Ajustar la programación de capturas.
Comportamiento de recuperación
Las instancias de Redis de nivel básico activan una recuperación cada vez que se reinician. Las operaciones habituales que activan reinicios son el escalado y la actualización de la versión de tu instancia. Las copias de seguridad de RDB conservan los datos de las instancias de nivel básico durante las operaciones que provocan reinicios, mantenimiento programado y fallos imprevistos del sistema.
Las instancias de Redis del 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 a partir de la captura cuando se produce un error al restaurar desde una réplica.
Coherencia de los datos en la recuperación
Cuando se habilita, las copias de seguridad de RDB hacen todo lo posible para que se creen en el intervalo especificado, pero no se puede garantizar que se creen. Las instantáneas pueden fallar por varios motivos. Consulta las prácticas recomendadas para configurar y monitorizar instancias cuando las capturas de RDB estén habilitadas.
Si la creación de la instantánea falla de forma consecutiva en varios intervalos, la última copia de seguridad disponible puede estar obsoleta.
En el peor de los casos, la pérdida de datos al restaurar una captura es la suma del intervalo especificado desde que se inició la última captura correcta y el tiempo necesario para guardar la siguiente captura en el almacenamiento. En caso de que se produzca un incidente de recuperación, utilice la métrica last_success_age
para ver el periodo de pérdida de datos.
Te recomendamos que configures alertas para detectar fallos en las copias de seguridad programadas y que tomes medidas correctivas. Para obtener más información sobre cómo configurar alertas, consulta Monitorizar instantáneas.
Tiempo de recuperación
La instancia no está disponible mientras se recupera a partir de una captura.
El tiempo de recuperación depende del tamaño de la instantánea. Para conocer el tiempo de recuperación previsto, consulta la métrica RDB recovery remaining time
en Cloud Monitoring
en la consola Google Cloud .
Mitigar la recuperación lenta
A veces, la recuperación a partir de una copia puede tardar más de lo previsto. Es posible que tengas que tomar medidas para volver a conectar tu aplicación a Redis lo antes posible.
En ese caso, puedes crear una instancia de Redis y dirigir el tráfico de la aplicación a ella. A continuación, puedes transferir los datos restaurados a la nueva instancia una vez que se recupere la instancia original.
Error de creación de instantánea y error de recuperación
Error de creación de la captura
Las capturas fallidas se notifican a Cloud Monitoring y se vuelve a intentar crear la captura inmediatamente. Si se producen errores consecutivos en las capturas, aumenta 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 con las instantáneas, consulta Monitorizar instantáneas.
Error de recuperación
Los errores de recuperación son poco frecuentes, pero pueden producirse. 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 capturas de RDB, debes seguir las prácticas recomendadas que se describen a continuación:
Gestión de la memoria
Las copias de seguridad de RDB usan una bifurcación de procesos y un mecanismo de copia al escribir para crear una copia de seguridad de la instancia. En función del patrón de escrituras 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, la huella de memoria puede ser el doble del tamaño de los datos de la instancia.
Para asegurarte de que la instancia tiene suficiente memoria para completar la creación de la copia de seguridad, debes definir maxmemory-gb
en el 80% de la capacidad de la instancia para que el 20% se reserve para la sobrecarga. Consulta las prácticas recomendadas para gestionar la memoria para obtener más información. Esta sobrecarga de memoria, además de las instantáneas de monitorización, te ayuda a gestionar tu carga de trabajo para que las instantáneas se creen correctamente.
Capturas obsoletas
Si recuperas tu instancia a partir de una copia de seguridad obsoleta, pueden producirse problemas de rendimiento en tu aplicación, ya que intentará conciliar una cantidad significativa de claves obsoletas u otros cambios en tu base de datos, como un cambio de esquema.
Si crees que tu copia de seguridad es demasiado antigua o que tu instancia ha sufrido otros cambios importantes que son difíciles de conciliar con la copia de seguridad, puedes inhabilitar y volver a habilitar las copias de seguridad de RDB. De esta forma, se eliminan las capturas existentes y puedes evitar recuperar datos de una captura obsoleta.
Para monitorizar las capturas obsoletas, configura una alerta en las métricas de la captura de RDB last_status
y de la captura de RDB last_success_age
.
Recuperación prolongada a partir de una captura
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 a partir de una captura está tardando demasiado, puedes crear una instancia de Redis y dirigir el tráfico a ella. Cuando se recupere la instancia de Redis original, podrás transferir los datos restaurados a la nueva instancia.
Impacto en el rendimiento de las copias de seguridad de RDB
En función del patrón de carga de trabajo, las copias de seguridad de RDB pueden afectar al rendimiento de la instancia y aumentar la latencia de las aplicaciones.
En función de la cantidad de datos que pueda perder tu aplicación, puedes minimizar el impacto en el rendimiento de las copias de seguridad de RDB programándolas para que se ejecuten durante periodos de poco tráfico de instancias.
Usa la hora de inicio y el intervalo para programar las capturas a las horas que necesites. Por ejemplo, si la carga es muy baja de 1:00 a 4:00, puedes definir la hora de inicio a las 3:00 y el intervalo en 24 horas.
Si tu sistema tiene una carga constante y requiere instantáneas frecuentes, debes evaluar detenidamente el impacto en el rendimiento y sopesar las ventajas de usar instantáneas RDB para la carga de trabajo.
Monitorizar capturas
Es importante monitorizar las instantáneas y configurar alertas para las que no se hayan podido crear. Las capturas fallidas pueden indicar que la instancia está sobrecargada y que puede seguir teniendo dificultades para recuperarse de la captura.
Para ver una lista de las métricas disponibles para monitorizar las copias de seguridad, consulta Métricas de copias de seguridad de RDB. Para recibir una notificación si falla una captura, define una alerta para la métrica last_status
de la captura de RDB. También puedes usar la Google Cloud consola para comprobar si hay algún fallo.
Monitorizar el impacto en el rendimiento
Para monitorizar el impacto que tiene una instantánea en el rendimiento de tu instancia de Memorystore, puedes consultar las métricas disponibles en Cloud Monitoring, como el uso de la CPU y de la memoria, entre otras. Si observas que el rendimiento se ha reducido, puedes usar la métrica de instantánea de RDB in_progress
para determinar si se estaba creando una instantánea cuando se detectaron los problemas de rendimiento.
Siguientes pasos
- Consulta cómo importar y exportar copias de seguridad.
- Sigue la guía para exportar datos desde una instancia de Redis.