Testar o Amazon Aurora MySQL usando consultas de injeção de falhas - Amazon Aurora

Testar o Amazon Aurora MySQL usando consultas de injeção de falhas

Você pode testar a tolerância a falhas do cluster de banco de dados Aurora MySQL usando consultas de injeção de falha. Consultas de injeção de falhas são emitidas como comandos SQL para uma instância do Amazon Aurora. Eles permitem que você agende uma ocorrência simulada de um dos seguintes eventos:

  • Uma falha de uma instância de banco de dados de gravação ou leitura

  • Uma falha de uma réplica do Aurora

  • Uma falha de disco

  • Congestionamento de disco

Quando uma consulta de injeção de falha especifica uma falha, ela força uma falha da instância de banco de dados do Aurora MySQL. As outras consultas de injeção de falha resultam em simulações de eventos de falha, mas não desencadeiam o evento. Ao enviar uma consulta de injeção de falha, especifique também um período para a simulação do evento de falha.

Você pode enviar uma consulta de injeção de falha a uma das instâncias da réplica do Aurora conectando-se ao endpoint da réplica do Aurora. Para obter mais informações, consulte Gerenciamento de conexões do Amazon Aurora.

A execução de consultas de injeção de falhas requer todos os privilégios de usuário principal. Para obter mais informações, consulte Privilégios da conta de usuário mestre.

Teste de pane da instância

Você pode forçar uma pane em uma instância do Amazon Aurora usando a consulta de injeção de falha ALTER SYSTEM CRASH.

No que tange a essa consulta de injeção de falha, não ocorrerá um failover. Se desejar testar um failover, você poderá escolher a ação de instância Failover para o cluster de banco de dados no console do RDS ou usar o comando da AWS CLI failover-db-cluster ou a operação da API do RDS FailoverDBCluster.

Sintaxe

ALTER SYSTEM CRASH [ INSTANCE | DISPATCHER | NODE ];

Opções

Esta consulta de injeção de falha considera um dos seguintes tipos de pane:

  • INSTANCE — uma pane é simulada no banco de dados compatível com MySQL para a instância do Amazon Aurora.

  • DISPATCHER — Uma falha no dispatcher é simulada na instância de gravador do cluster de banco de dados do Aurora. O dispatcher grava atualizações no volume do cluster para um cluster de banco de dados do Amazon Aurora.

  • NODE — uma pane é simulada no banco de dados compatível com MySQL e no dispatcher para a instância do Amazon Aurora. No que tange a essa simulação de injeção de falha, o cache também é excluído.

O tipo de pane padrão é INSTANCE.

Teste de falha em uma réplica do Aurora

Você pode simular a falha de uma réplica do Aurora usando a consulta de injeção de falha ALTER SYSTEM SIMULATE READ REPLICA FAILURE.

Uma falha na réplica do Aurora bloqueia todas as solicitações feitas na instância do leitor a ela ou a todas as réplicas do Aurora no cluster de banco de dados durante um intervalo de tempo especificado. Quando o intervalo de tempo acabar, as réplicas do Aurora afetadas serão sincronizadas automaticamente com a instância mestre.

Sintaxe

ALTER SYSTEM SIMULATE percentage_of_failure PERCENT READ REPLICA FAILURE [ TO ALL | TO "replica name" ] FOR INTERVAL quantity { YEAR | QUARTER | MONTH | WEEK | DAY | HOUR | MINUTE | SECOND };

Opções

Esta consulta de injeção de falha considera os seguintes parâmetros:

  • percentage_of_failure — A porcentagem de solicitações para obstruir durante o evento de falha. Esse valor pode ser um duplo entre 0 e 100. Se você especificar 0, nenhuma solicitação será bloqueada. Se você especificar 100, todas as solicitações serão bloqueadas.

  • Tipo de falha — O tipo de falha a ser simulado. Especifique TO ALL para simular falhas para todas as réplicas do Aurora no cluster de banco de dados. Especifique TO e o nome da réplica do Aurora para simular uma falha de uma única réplica do Aurora. O tipo de falha padrão é TO ALL.

  • quantity — o tempo durante o qual a falha da réplica do Aurora será simulada. O intervalo é uma quantidade seguida por uma unidade de tempo. A simulação ocorrerá durante essa quantidade da unidade especificada. Por exemplo, 20 MINUTE resultará na execução de uma simulação de 20 minutos.

    nota

    Especifique o intervalo de tempo do evento de falha da réplica do Aurora; com cautela. Se você especificar um intervalo de tempo muito longo e a instância de gravador gravar uma grande quantidade de dados durante o evento de falha, o cluster de banco de dados do Aurora poderá presumir que a réplica do Aurora falhou e substituí-la.

Teste de uma falha de disco

Você pode simular a falha de um disco para um cluster de banco de dados do Aurora usando a consulta de injeção de falha ALTER SYSTEM SIMULATE DISK FAILURE.

Durante uma simulação de falha de disco, o cluster de banco de dados do Aurora marca aleatoriamente segmentos do disco como falhos. As solicitações feitas a esses segmentos serão bloqueadas enquanto durar a simulação.

Sintaxe

ALTER SYSTEM SIMULATE percentage_of_failure PERCENT DISK FAILURE [ IN DISK index | NODE index ] FOR INTERVAL quantity { YEAR | QUARTER | MONTH | WEEK | DAY | HOUR | MINUTE | SECOND };

Opções

Esta consulta de injeção de falha considera os seguintes parâmetros:

  • percentage_of_failure — a porcentagem do disco para marcar como falha durante o evento de falha. Esse valor pode ser um duplo entre 0 e 100. Se você especificar 0, nenhum dos discos será marcado como falhos. Se você especificar 100, o disco todo será marcado como falho.

  • DISK index — um bloco de dados lógico específico para simular o evento de falha. Se você exceder o intervalo de blocos lógicos de dados disponíveis, receberá um erro informando o valor máximo do índice que você pode especificar. Para obter mais informações, consulte Exibir o status do volume para um cluster de banco de dados Aurora MySQL.

  • NODE index — um nó de armazenamento específico para simular o evento de falha. Se você exceder o intervalo de nós de armazenamento disponíveis, receberá um erro informando o valor máximo do índice que você pode especificar. Para obter mais informações, consulte Exibir o status do volume para um cluster de banco de dados Aurora MySQL.

  • quantity — o tempo durante o qual a falha do disco será simulada. O intervalo é uma quantidade seguida por uma unidade de tempo. A simulação ocorrerá durante essa quantidade da unidade especificada. Por exemplo, 20 MINUTE resultará na execução de uma simulação de 20 minutos.

Teste de congestionamento de disco

Você pode simular a falha de um disco para um cluster de banco de dados do Aurora usando a consulta de injeção de falha ALTER SYSTEM SIMULATE DISK CONGESTION.

Durante uma simulação de congestionamento de disco, o cluster de banco de dados do Aurora marca aleatoriamente segmentos do disco como congestionados. As solicitações feitas a esses segmentos serão atrasadas entre o tempo de atraso mínimo e máximo especificado enquanto durar a simulação.

Sintaxe

ALTER SYSTEM SIMULATE percentage_of_failure PERCENT DISK CONGESTION BETWEEN minimum AND maximum MILLISECONDS [ IN DISK index | NODE index ] FOR INTERVAL quantity { YEAR | QUARTER | MONTH | WEEK | DAY | HOUR | MINUTE | SECOND };

Opções

Esta consulta de injeção de falha considera os seguintes parâmetros:

  • percentage_of_failure — a porcentagem do disco para marcar como congestionada durante o evento de falha. Esse valor pode ser um duplo entre 0 e 100. Se você especificar 0, nenhum dos discos será marcado como congestionados. Se você especificar 100, o disco todo será marcado como congestionado.

  • DISK index ou NODE index — um disco ou nó específico para simular o evento de falha. Se você exceder o intervalo de índices de disco ou de nó, receberá um erro informando o valor máximo do índice que você pode especificar.

  • minimum e maximum — a quantidade mínima e máxima de atraso de congestionamento em milissegundos. Os segmentos de disco marcados como congestionados serão atrasados durante um período aleatório de tempo dentro do intervalo mínimo e máximo de milissegundos enquanto durar a simulação.

  • quantity — o tempo durante o qual o congestionamento do disco será simulado. O intervalo é uma quantidade seguida por uma unidade de tempo. A simulação ocorrerá durante essa quantidade da unidade de tempo especificada. Por exemplo, 20 MINUTE resultará na execução de uma simulação de 20 minutos.