Monitoreo de la replicación de lectura
Puede monitorear el estado de una réplica de lectura de varias formas. La consola de Amazon RDS muestra el estado de una réplica de lectura en la sección Replicación de la pestaña Conectividad y seguridad, en los detalles de la réplica de lectura. Para ver los detalles de una réplica de lectura, elija el nombre de la réplica de lectura en la lista de instancias de base de datos en la consola de Amazon RDS.
También puede ver el estado de una réplica de lectura con el comando describe-db-instances
de la AWS CLI o la operación DescribeDBInstances
de la API de Amazon RDS.
El estado de una réplica de lectura puede ser uno de los siguientes:
-
replicating (replicando): la réplica de lectura se está replicando correctamente.
-
Replicación degradada (solo SQL Server y PostgreSQL): las réplicas reciben datos de la instancia principal, pero una o más bases de datos no están recibiendo actualizaciones. Esto puede ocurrir, por ejemplo, cuando una réplica se encuentra en el proceso de configuración de las bases de datos recién creadas. También puede ocurrir cuando se realizan cambios en objetos grandes o en DDL no compatibles en el entorno azul de una implementación azul/verde.
El estado no pasa de
replication degraded
aerror
, a menos que se produzca un error durante el estado degradado. -
error: se ha producido un error durante la replicación. Compruebe el campo Replication Error (Error de replicación) en la consola de Amazon RDS o el registro de eventos para determinar el error exacto. Para obtener más información acerca de resolución de problemas de replicación, consulte Solución de problemas de réplicas de lectura de MySQL.
-
terminated (terminada) (solo MariaDB, MySQL o PostgreSQL): la replicación se ha terminado. Esto sucede si la replicación se ha detenido durante más de 30 días consecutivos, ya sea manualmente o por un error de replicación. En ese caso, Amazon RDS termina la reproducción entre la instancia de base de datos primaria y todas las réplicas de lectura. Amazon RDS realiza ese procedimiento para impedir que aumenten los requisitos de almacenamiento en la instancia de base de datos de origen y que se incrementen los tiempos de conmutación por error.
La replicación no completada puede afectar al almacenamiento, ya que los registros pueden aumentar en tamaño y en número debido al alto volumen de mensajes de error que se escriben en el registro. La replicación no completada puede afectar también a la recuperación de errores debido al tiempo que Amazon RDS necesita para mantener y procesar el elevado número de registros durante la recuperación.
-
terminated (terminado) (solo Oracle): la replicación ha terminado. Esto sucede si la replicación se ha detenido durante más de 8 horas por no haber suficiente espacio de almacenamiento en la réplica de lectura. En ese caso, Amazon RDS termina la replicación entre la instancia de base de datos primaria y la réplica de lectura afectada. Este estado es terminal y la réplica leída debe volver a crearse.
-
stopped (detenida) (solo MariaDB or MySQL): la replicación se ha detenido a petición de un cliente.
-
replication stop point set (punto de detención de replicación establecidoI) (solo MySQL): se ha establecido un punto de detención iniciado por el cliente con el procedimiento almacenado mysql.rds_start_replication_until y la replicación se encuentra en curso.
-
replication stop point reached (punto de detención de replicación alcanzado) (solo MySQL): se ha establecido un punto de detención iniciado por el cliente con el procedimiento almacenado mysql.rds_start_replication_until y la replicación se ha detenido porque se ha llegado al punto de detención.
Puede ver dónde se está replicando una instancia de base de datos y, si es así, comprobar su estado de replicación. En la página Bases de datos de la consola de RDS, muestra Principal en la columna Rol . Elija su nombre de instancia de base de datos. En su página de detalles, en la ficha Conectividad y seguridad , su estado de replicación se encuentra en Replicación.
Monitoreo de retraso de la replicación
Puede monitorizar el retardo de replicación en Amazon CloudWatch mediante la visualización de la métrica ReplicaLag
de Amazon RDS.
Para MariaDB y MySQL, la métrica ReplicaLag
indica el valor del campo de Seconds_Behind_Master
del comando SHOW REPLICA STATUS
. Los motivos comunes de retardo de la replicación para MySQL y MariaDB son los siguientes:
-
Una interrupción de la red.
-
Escritura en tablas con índices en una réplica de lectura. Si el parámetro
read_only
no se ha establecido en 0 en la réplica de lectura, puede interrumpirse la replicación. -
Uso de un motor de almacenamiento no transaccional como MyISAM. La replicación solo se admite para el motor de almacenamiento InnoDB en MySQL y el motor de almacenamiento XtraDB en MariaDB.
nota
Versiones anteriores de MariaDB y MySQL utilizaban SHOW SLAVE STATUS
en lugar de SHOW REPLICA STATUS
. Si usa una versión de MariaDB anterior a la 10.5 o una versión de MySQL anterior a la 8.0.23, utilice SHOW SLAVE
STATUS
.
Cuando la métrica ReplicaLag
llegue a 0, la réplica estará funcionando al mismo ritmo que la instancia de base de datos principal. Si la métrica ReplicaLag
devuelve -1
, la replicación no está activa. ReplicaLag =
-1
es equivalente a Seconds_Behind_Master = NULL
.
En Oracle, la métrica ReplicaLag
es la suma del valor Apply Lag
y la diferencia entre la hora actual y el valor de DATUM_TIME
del retraso de aplicación. El valor DATUM_TIME
es la última hora en la que la réplica de lectura recibió datos de su instancia de base de datos de origen. Para obtener más información, consulte V$DATAGUARD_STATS
Para SQL Server, la métrica ReplicaLag
es el retraso máximo de las bases de datos que se han retrasado, en segundos. Por ejemplo, si tiene dos bases de datos que se retrasan 5 segundos y 10 segundos, respectivamente, entonces ReplicaLag
son 10 segundos. La métrica ReplicaLag
devuelve el valor de la siguiente consulta.
SELECT MAX(secondary_lag_seconds) max_lag FROM sys.dm_hadr_database_replica_states;
Para obtener más información, consulte secondary_lag_seconds
ReplicaLag
devuelve -1
si RDS no puede determinar el retraso, como durante la configuración de la réplica, o cuando la réplica de lectura está en el estado error
.
nota
Las nuevas bases de datos no se incluyen en el cálculo del retraso hasta que estén accesibles en la réplica de lectura.
Para PostgreSQL, la métrica ReplicaLag
devuelve el valor de la siguiente consulta.
SELECT extract(epoch from now() - pg_last_xact_replay_timestamp()) AS reader_lag
Las versiones 9.5.2 y más recientes de PostgreSQL utilizan ranuras de replicación física para administrar la retención del registro de escritura previa (WAL) en la instancia de origen. Para cada instancia de réplica de lectura entre regiones, Amazon RDS crea una ranura de replicación física y la asocia con la instancia. Dos métricas de Amazon CloudWatch, Oldest Replication Slot Lag
y Transaction Logs Disk Usage
, muestran el retardo de la réplica con más retraso en términos de datos de WAL recibidos y la cantidad de almacenamiento que se está usando para los datos de WAL. El valor de Transaction Logs Disk Usage
puede aumentar sustancialmente cuando una réplica de lectura entre regiones tiene mucho retraso.
Para obtener más información acerca de la monitorización de una instancia de base de datos con CloudWatch, consulte Supervisión de métricas de Amazon RDS con Amazon CloudWatch.