Configuración de la replicación retrasada con RDS para PostgreSQL
Información general y beneficios
La característica de replicación retrasada de RDS para PostgreSQL le permite retrasar intencionadamente la replicación de los cambios de datos de la base de datos principal a uno o más servidores en espera (réplica de lectura). Esto proporciona una protección valiosa contra la corrupción de los datos, la pérdida accidental de datos o las transacciones erróneas que, de otro modo, podrían propagarse inmediatamente a todas las réplicas.
La replicación retrasada es compatible con las siguientes versiones de RDS para PostgreSQL:
-
Versión 14.19 y otras versiones 14 superiores
-
Versión 15.14 y otras 15 versiones posteriores
-
Versión 16.10 y otras versiones 16 superiores
-
Versión 17.6 y otras versiones 17 superiores
Al ingresar un intervalo de tiempo en el proceso de replicación, tendrá la oportunidad de detectar y responder a los incidentes relacionados con los datos antes de que afecten a todo el clúster de base de datos. Algunos de los beneficios clave de la replicación retrasada son los siguientes:
-
Le permite recuperarse de eliminaciones accidentales, actualizaciones u otros errores lógicos.
-
Proporciona un búfer para evitar que los datos dañados se propaguen por el clúster de base de datos.
-
Ofrece una opción de punto de recuperación adicional para complementar sus estrategias de copia de seguridad tradicionales.
-
Le permite configurar el periodo de retraso en función de las necesidades específicas y la tolerancia al riesgo de la organización.
Habilitación y configuración de la replicación retrasada
Para habilitar la replicación retrasada en una réplica de lectura de RDS para PostgreSQL, siga estos pasos:
nota
Para las réplicas de lectura en cascada, utilice el mismo parámetro y los mismos pasos de recovery_min_apply_delay que se describen a continuación.
Habilitación de la replicación retrasada
-
Cree un nuevo grupo de parámetros personalizado o modifique uno existente. Para obtener más información, consulte Grupos de parámetros de base de datos para instancias de Amazon RDS.
-
En el grupo de parámetros, configure el parámetro
recovery_min_apply_delay:-
Establezca el valor en el retraso deseado en milisegundos. Por ejemplo, 3 600 000 para un retraso de 1 hora.
-
Rango permitido: de 0 a 86 400 000 ms (de 0 a 24 horas)
-
Predeterminado: 0
-
-
Aplique el grupo de parámetros a la instancia de réplica de lectura que desee configurar para la replicación retrasada.
-
Reinicie la instancia de la réplica de lectura para que los cambios surtan efecto.
nota
El parámetro
recovery_min_apply_delayes dinámico. Si modifica un grupo de parámetros existente que ya está adjunto a la instancia, los cambios se aplicarán inmediatamente sin necesidad de reiniciarlo. Sin embargo, al aplicar un nuevo grupo de parámetros a la instancia, debe reiniciar para que los cambios surtan efecto.
Administración de la recuperación de la replicación retrasada
La replicación retrasada es particularmente útil en situaciones en las que los métodos tradicionales de recuperación en un momento dado pueden resultar insuficientes o consumir demasiado tiempo.
Durante el periodo de replicación retrasada, puede utilizar las siguientes funciones de PostgreSQL para administrar el proceso de recuperación:
-
pg_wal_replay_pause(): solicite pausar el proceso de recuperación en la réplica retrasada. -
pg_wal_replay_resume(): reinicie el proceso de recuperación si ya estaba pausado anteriormente. -
pg_is_wal_replay_paused(): compruebe si el proceso de recuperación está pausado actualmente. -
pg_get_wal_replay_pause_state(): obtenga el estado actual del proceso de recuperación (no pausado, pausa solicitada o pausado).
Los usuarios con el rol rds_superuser tienen los privilegios EXECUTE en pg_wal_replay_pause() y pg_wal_replay_resume(). Si otros usuarios de la base de datos necesitan acceder a estas funciones, debe concederles el rol rds_superuser. Para obtener más información acerca de los roles de rds_superuser, consulte Descripción del rol rds_superuser.
El acceso a otras funciones como pg_is_wal_replay_paused() y pg_get_wal_replay_pause_state() no requiere el rol rds_superuser.
Puede utilizar los siguientes parámetros del objetivo de recuperación para controlar con precisión el momento en el que se recupera la réplica retrasada. Estos parámetros son estáticos y es necesario reiniciar la base de datos para aplicar los cambios:
-
recovery_target
-
recovery_target_lsn
-
recovery_target_name
-
recovery_target_time
-
recovery_target_xid
-
recovery_target_inclusive
importante
Solo puede especificar un parámetro de destino de recuperación a la vez. La configuración de varios parámetros de destino de recuperación en el archivo de configuración produce un error.
Consideraciones sobre la planificación
Tenga en cuenta lo siguiente al planificar la replicación retrasada con RDS para PostgreSQL:
-
Durante la rotación automática de las credenciales de
rdsrepladmin(que se produce cada 90 días), las réplicas de lectura retrasadas pueden pasar temporalmente a un estadoREPLICATION_ERROR. Si la réplica retrasada tiene suficientes registros de WAL para mantener el retraso configurado, puede detener el proceso del receptor WAL y provocar la acumulación de WAL en el origen. Debe supervisar el estado de la replicación en la réplica y el consumo de almacenamiento en el origen para evitar que se llene el almacenamiento. -
Cuando las réplicas de lectura retrasadas detectan eventos del sistema (como un reinicio), pasan a un estado
REPLICATION_ERRORen el que el proceso del receptor WAL permanece inactivo hasta que venza el periodo de retraso configurado. Este comportamiento puede provocar la acumulación de WAL en la instancia de origen, lo que podría provocar el agotamiento del almacenamiento. Considere las siguientes medidas de prevención:-
Configure las alarmas de CloudWatch para supervisar el uso del almacenamiento en las instancias de origen.
-
Habilite el escalado automático del almacenamiento para gestionar el crecimiento inesperado de WAL.
-
Establezca el parámetro
max_slot_wal_keep_sizeen la instancia de origen para limitar la retención de WAL por ranura de replicación. -
Supervise periódicamente el retraso de la replicación y el estado de las ranuras.
-
-
Los retrasos más prolongados aumentan los registros de WAL en las réplicas y consumen más almacenamiento. Supervise el espacio de almacenamiento mediante las alarmas de CloudWatch, habilite el escalado automático o recupere las réplicas cuando sea necesario.
-
Cuando se promociona una réplica de lectura retrasada, no se respeta el parámetro
recovery_min_apply_delayy todos los registros de WAL pendientes se aplican inmediatamente. -
El parámetro
recovery_min_apply_delayes independiente en cada nivel de una configuración de replicación en cascada. El establecimiento de un retraso en una réplica no aumenta el retraso de ninguna réplica en cascada.
Para obtener más información, consulte la documentación de réplicas de lectura de RDS para PostgreSQL y la documentación de recuperación ante desastres de RDS para PostgreSQL.
Limitaciones de la comprensión
La característica de replicación retrasada de Amazon RDS para PostgreSQL presenta las siguientes limitaciones:
-
Las implementaciones azul/verde tienen las siguientes limitaciones a la hora de configurar la replicación retrasada:
-
Instancia de origen verde: no se tiene en cuenta
recovery_min_apply_delay parameter, aunque se configure en el grupo de parámetros. Los ajustes de retraso de la instancia de origen verde no surten efecto. -
Instancia de réplica verde:
recovery_min_apply_delay parameteres totalmente compatible y se aplica al archivo de configuración de PostgreSQL. Los ajustes de retraso funcionan según lo previsto durante el flujo de trabajo de transición. -
Implementaciones azul/verde de RDS para actualizaciones de versiones principales
-
-
Durante las actualizaciones de versiones principales, cualquier réplica de lectura retrasada se cancelará automáticamente para permitir que la instancia de origen continúe con el proceso de actualización y garantizar un tiempo de inactividad mínimo. Una vez que la instancia de origen haya completado la actualización, debe volver a crear manualmente las réplicas retrasadas.
-
La replicación retrasada no es compatible con las siguientes características.
-
Replicación lógica de RDS para PostgreSQL
-
Clústeres multi-AZ de RDS para PostgreSQL (incluida la replicación de entrada y de salida)
-
Aurora PostgreSQL
-