Supervisión y ajuste del proceso de replicación
Le recomendamos encarecidamente que supervise de forma rutinaria su instancia de base de datos de RDS para PostgreSQL y réplicas de lectura. Debe asegurarse de que las réplicas de lectura se mantengan al día con los cambios en la instancia de base de datos de origen. Amazon RDS recupera de forma transparente sus réplicas de lectura cuando se producen interrupciones en el proceso de replicación. Sin embargo, es mejor evitar la necesidad de recuperarse en absoluto. La recuperación mediante slots de replicación es más rápida que utilizar el archivo de Amazon S3, pero cualquier proceso de recuperación puede afectar al rendimiento de lectura.
Para determinar qué tal se mantienen las réplicas de lectura con la instancia de base de datos de origen, puede hacer lo siguiente:
-
Compruebe la cantidad de
ReplicaLagentre la instancia de base de datos de origen y las réplicas. El retardo de réplica es la cantidad de retardo, en segundos, que una réplica de lectura acumula con respecto a la instancia de base de datos de origen. Esta métrica informa del resultado de la siguiente consulta.SELECT extract(epoch from now() - pg_last_xact_replay_timestamp()) AS "ReplicaLag";El retraso de réplica indica qué tal se mantiene una réplica de lectura con la instancia de base de datos de origen. Es la cantidad de latencia entre la instancia de base de datos de origen y una instancia de lectura específica. Un valor elevado para el retraso de réplica puede indicar una discrepancia entre las clases de instancia de base de datos o los tipos de almacenamiento (o ambos) utilizados por la instancia de base de datos de origen y sus réplicas de lectura. La clase de instancia de base de datos y los tipos de almacenamiento de la instancia de origen de base de datos y todas las réplicas de lectura deben ser iguales.
El retraso de la réplica también puede ser el resultado de problemas de conexión intermitentes. Puede monitorizar el retardo de replicación en Amazon CloudWatch mediante la visualización de la métrica
ReplicaLagde Amazon RDS. Para obtener más información sobreReplicaLagy otras métricas de Amazon RDS, consulte Métricas de Amazon CloudWatch para Amazon RDS. -
Consulte el registro de PostgreSQL para obtener información que puede utilizar para ajustar la configuración. En cada punto de control, el registro de PostgreSQL captura el número de archivos de registro de transacciones reciclados, como se muestra en el siguiente ejemplo.
2014-11-07 19:59:35 UTC::@:[26820]:LOG: checkpoint complete: wrote 376 buffers (0.2%); 0 transaction log file(s) added, 0 removed, 1 recycled; write=35.681 s, sync=0.013 s, total=35.703 s; sync files=10, longest=0.013 s, average=0.001 sPuede utilizar esta información para averiguar cuántos archivos de transacciones se reciclarán en un periodo de tiempo determinado. Puede cambiar la configuración de
wal_keep_segmentssi es necesario. Suponga, por ejemplo, que el registro de PostgreSQLcheckpoint completemuestra35 recycleddurante un intervalo de 5 minutos. En este caso, el valor predeterminado dewal_keep_segmentsde 32 no es suficiente para seguir el ritmo de la actividad de streaming, con lo que debe aumentar el valor de este parámetro. -
Utilice Amazon CloudWatch para supervisar las métricas que pueden predecir problemas de replicación. En lugar de analizar el registro de PostgreSQL directamente, puede utilizar Amazon CloudWatch para comprobar las métricas recopiladas. Por ejemplo, puede comprobar el valor de la métrica
TransactionLogsGenerationpara ver cuántos datos WAL está generando la instancia de base de datos de origen. En algunos casos, la carga de trabajo de la instancia de base de datos podría generar una gran cantidad de datos WAL. De ser así, puede que tenga que cambiar la clase de la instancia de base de datos de origen y de las réplicas de lectura. El uso de una clase de instancia con un rendimiento de red alto (10 Gbps) puede reducir el retraso de las réplicas.
Supervisión de las slots de replicación de su instancia de base de datos de RDS para PostgreSQL
Todas las versiones de RDS para PostgreSQL utilizan slots de replicación para réplicas de lectura entre regiones. RDS para PostgreSQL 14.1 y versiones posteriores utilizan slots de replicación para réplicas de lectura en región. Las réplicas de lectura dentro de la región también utilizan Amazon S3 para archivar datos WAL. En otras palabras, si la instancia de base de datos y las réplicas de lectura ejecutan PostgreSQL 14.1 o superior, las slots de replicación y los archivos de Amazon S3 están disponibles para recuperar la réplica de lectura. La recuperación de una réplica de lectura mediante su slot de replicación es más rápida que la recuperación del archivo Amazon S3. Por lo tanto, le recomendamos que supervise las slots de replicación y las métricas relacionadas.
Puede ver las slots de replicación en sus instancias de base de datos de RDS para PostgreSQL consultando la vista de pg_replication_slots, de la siguiente manera.
postgres=>SELECT * FROM pg_replication_slots;slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | confirmed_flush_lsn | wal_status | safe_wal_size | two_phase ---------------------------+--------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+---------------------+------------+---------------+----------- rds_us_west_1_db_555555555 | | physical | | | f | t | 13194 | | | 23/D8000060 | | reserved | | f (1 row)
El wal_status del valor reserved significa que la cantidad de datos WAL que mantiene la slot se encuentra dentro de los límites del parámetro max_wal_size. En otras palabras, la slot de replicación tiene el tamaño adecuado. Otros posibles valores de los estados son los siguientes:
-
extended: la slot supera el ajustemax_wal_size, pero los datos de WAL se conservan. -
unreserved: la slot ya no tiene todos los datos WAL necesarios. Parte se eliminará en el siguiente punto de control. -
lost: se han eliminado algunos datos de WAL obligatorios. La slot ya no se puede utilizar.
Los estados unreserved y lost de wal_status solo se ven cuando max_slot_wal_keep_size no es negativo.
La vista de pg_replication_slots muestra el estado actual de las slots de replicación. Para evaluar el rendimiento de sus slots de replicación, puede utilizar Amazon CloudWatch y supervisar las siguientes métricas:
-
OldestReplicationSlotLag– muestra la cantidad de datos del registro de escritura anticipada (WAL) en el origen que no ha consumido la réplica más retrasada. -
TransactionLogsDiskUsage– muestra cuánto almacenamiento se usa para los datos de WAL. Cuando una réplica de lectura se retrasa significativamente, el valor de esta métrica puede aumentar sustancialmente.
Para obtener más información acerca del uso de Amazon CloudWatch y las métricas de RDS para PostgreSQL, consulte Supervisión de métricas de Amazon RDS con Amazon CloudWatch. Para obtener más información sobre cómo supervisar la replicación de streaming en sus instancias de base de datos de RDS para PostgreSQL, consulte Best practices for Amazon RDS PostgreSQL replication