Pruebas de Amazon Aurora PostgreSQL mediante consultas de inserción de errores - Amazon Aurora

Pruebas de Amazon Aurora PostgreSQL mediante consultas de inserción de errores

Puede probar la tolerancia a errores de su clúster de bases de datos de Aurora PostgreSQL usando consultas de inserción de errores. Las consultas de inyección de errores se emiten como comandos SQL a una instancia Amazon Aurora. Las consultas de inyección de errores le permiten bloquear la instancia para poder probar la conmutación por error y la recuperación. También puede simular un fallo de Aurora Replica, un fallo de disco y una congestión del disco. Las consultas de inyección de errores son compatibles con todas las versiones disponibles de Aurora PostgreSQL, de la siguiente manera.

  • Aurora PostgreSQL versiones 12, 13, 14 y posteriores

  • Aurora PostgreSQL versión 11.7 y posteriores

  • Aurora PostgreSQL versión 10.11 y posteriores

Cuando una consulta de inserción de errores especifica un bloqueo, fuerza un bloqueo de la instancia de base de datos de Aurora PostgreSQL. Las otras consultas de inserción de errores producen simulaciones de eventos de error, pero no hacen que el evento ocurra. Cuando se envía una consulta de inserción de errores, se especifica también la cantidad de tiempo que debe durar la simulación del evento de error.

Puede enviar una consulta de inserción de errores a una de las instancias de réplica de Aurora conectándose al punto de enlace de la réplica de Aurora. Para obtener más información, consulte Administración de conexiones de Amazon Aurora.

Prueba de un bloqueo de instancia

Puede forzar el bloqueo de una instancia de Aurora PostgreSQL mediante la función de consulta de inserción de errores aurora_inject_crash().

En esta consulta de inserción de errores no se produce una conmutación por error. Si desea probar una conmutación por error, puede elegir la acción de instancia Failover (Conmutación por error) para el clúster de bases de datos en la consola de RDS o usar el comando failover-db-cluster de la AWS CLI o la operación FailoverDBCluster de la API de RDS.

Sintaxis

SELECT aurora_inject_crash ('instance' | 'dispatcher' | 'node');
Opciones

La consulta de inserción de errores toma uno de los siguientes tipos de bloqueos. El tipo de bloqueo no distingue entre mayúsculas y minúsculas:

'instance'

Se simula un bloqueo de la base de datos compatible con PostgreSQL para la instancia de Amazon Aurora.

“despachador”

Se simula un bloqueo del distribuidor de la instancia principal del clúster de bases de datos de Aurora. El distribuidor escribe actualizaciones en el volumen de clúster de un clúster de bases de datos Amazon Aurora.

'node'

Se simula un bloqueo de la base de datos compatible con PostgreSQL y del distribuidor para la instancia de Amazon Aurora.

Prueba de un error de una réplica de Aurora

Puede simular el error de una réplica de Aurora mediante la función de consulta de inserción de errores aurora_inject_replica_failure().

Un error de réplica de Aurora bloquea la reproducción en la réplica de Aurora o en todas las réplicas de Aurora del clúster de bases de datos en el porcentaje especificado para el intervalo de tiempo especificado. Cuando se complete el intervalo de tiempo, las réplicas de Aurora afectadas se sincronizan automáticamente con la instancia principal.

Sintaxis

SELECT aurora_inject_replica_failure( percentage_of_failure, time_interval, 'replica_name' );
Opciones

Esta consulta de inserción de errores toma los siguientes parámetros:

percentage_of_failure

El porcentaje de reproducción que se debe bloquear durante el evento de error. Puede ser un valor doble entre 0 y 100. Si especifica 0, no se bloquea la reproducción. Si especifica 100, se bloquea toda la reproducción.

time_interval

Cantidad de tiempo para simular el error de la réplica de Aurora. El intervalo es en segundos. Por ejemplo, si el valor es 20, la simulación se ejecuta durante 20 segundos.

nota

Debe tener cuidado al especificar el intervalo de tiempo del evento de error de la réplica de Aurora. Si especifica un intervalo demasiado largo y la instancia de escritor escribe una gran cantidad de datos durante el evento de error, su clúster de bases de datos de Aurora podría entender que la réplica de Aurora se ha bloqueado y reemplazarla.

replica_name

La réplica de Aurora en la que se inserta la simulación de errores. Especifique el nombre de una réplica de Aurora para simular un error de la réplica de Aurora única. Especifique una cadena vacía para simular errores para todas las réplicas de Aurora en el clúster de bases de datos.

Para identificar nombres de réplica, consulte la columna server_id de la función aurora_replica_status(). Por ejemplo:

postgres=> SELECT server_id FROM aurora_replica_status();

Prueba de un error de disco

Puede simular un error de disco para un clúster de bases de datos de Aurora PostgreSQL mediante la función de consulta de inserción de errores aurora_inject_disk_failure().

Durante la simulación de un error de disco, el clúster de bases de datos de Aurora PostgreSQL marca de forma aleatoria los segmentos de disco como defectuosos. Las solicitudes que lleguen a esos segmentos se bloquean mientras dure la simulación.

Sintaxis

SELECT aurora_inject_disk_failure( percentage_of_failure, index, is_disk, time_interval );
Opciones

Esta consulta de inserción de errores toma los siguientes parámetros:

percentage_of_failure

El porcentaje del disco que se debe marcar como defectuoso durante el evento de error. Puede ser un valor doble entre 0 y 100. Si se especifica 0, ninguna parte del disco se marca como defectuosa. Si se especifica 100, todo el disco se marca como defectuoso.

índice

Un bloque lógico de datos específico en el que se simula el evento de error. Si se sobrepasa el intervalo de datos de nodos de almacenamiento o bloques lógicos disponibles, aparece un error que indica el valor máximo del índice que se puede especificar. Para evitar este error, consulte Visualización del estado del volumen para un clúster de bases de datos de Aurora PostgreSQL.

is_disk

Indica si el error de inserción se produce en un bloque lógico o en un nodo de almacenamiento. Especificar «true» significa que los errores de inserción son de un bloque lógico. Especificar «false» significa que los errores de inyección son en un nodo de almacenamiento.

time_interval

La cantidad de tiempo para simular el error de disco. El intervalo es en segundos. Por ejemplo, si el valor es 20, la simulación se ejecuta durante 20 segundos.

Prueba de congestión del disco

Puede simular una congestión de disco para un clúster de bases de datos de Aurora PostgreSQL mediante la función de consulta de inserción de errores aurora_inject_disk_congestion().

Durante la simulación de congestión del disco, el clúster de bases de datos de Aurora PostgreSQL marca de forma aleatoria los segmentos de disco como congestionados. Las solicitudes que lleguen a esos segmentos se retrasan entre el mínimo especificado y el tiempo de demora máximo mientras dure la simulación.

Sintaxis

SELECT aurora_inject_disk_congestion( percentage_of_failure, index, is_disk, time_interval, minimum, maximum );
Opciones

Esta consulta de inserción de errores toma los siguientes parámetros:

percentage_of_failure

El porcentaje del disco que se debe marcar como congestionado durante el evento de error. Este es un valor doble entre 0 y 100. Si se especifica 0, ninguna parte del disco se marca como congestionada. Si se especifica 100, todo el disco se marca como congestionado.

índice

Un bloque lógico de datos o nodo de almacenamiento específico en el que se simula el evento de error.

Si se sobrepasa el intervalo de nodos de almacenamiento o bloques lógicos de datos disponibles, aparece un error que indica el valor máximo del índice que se puede especificar. Para evitar este error, consulte Visualización del estado del volumen para un clúster de bases de datos de Aurora PostgreSQL.

is_disk

Indica si el error de inserción se produce en un bloque lógico o en un nodo de almacenamiento. Especificar «true» significa que los errores de inserción son de un bloque lógico. Especificar «false» significa que los errores de inyección son en un nodo de almacenamiento.

time_interval

La cantidad de tiempo para simular la congestión del disco. El intervalo es en segundos. Por ejemplo, si el valor es 20, la simulación se ejecuta durante 20 segundos.

mínimo, máximo

La cantidad mínima y máxima de demora de la congestión en milisegundos. Los valores válidos varían entre 0,0 y 100,0 milisegundos. Los segmentos de disco marcados como congestionados se retrasan por una cantidad de tiempo aleatoria dentro del rango mínimo y máximo mientras dure la simulación. El valor máximo debe ser mayor que el valor mínimo.