Usar o encaminhamento de gravação local em um cluster de banco de dados do Amazon Aurora MySQL
O encaminhamento de gravação local (no cluster) permite que as aplicações emitam transações de leitura/gravação diretamente em uma réplica do Aurora. Essas transações são então encaminhadas para a instância de banco de dados do gravador para serem confirmadas. Você pode usar o encaminhamento de gravação local quando as aplicações exigirem consistência de leitura após gravação, que é a capacidade de ler a última gravação em uma transação.
As réplicas de leitura recebem atualizações de forma assíncrona do gravador. Sem o encaminhamento de gravação, você precisa realizar todas as leituras que exigem consistência de leitura após gravação na instância de banco de dados do gravador. Ou é necessário desenvolver uma lógica de aplicação personalizada complexa para aproveitar as vantagens de várias réplicas de leitura para escalabilidade. As aplicações devem dividir todo o tráfego de leitura e gravação, mantendo dois conjuntos de conexões de banco de dados para enviar o tráfego ao endpoint correto. Essas despesas indiretas de desenvolvimento complicam o design da aplicação quando as consultas fazem parte de uma única sessão lógica, ou transação, na aplicação. Além disso, como o atraso na replicação pode diferir entre as réplicas de leitura, é difícil obter consistência de leitura global em todas as instâncias do banco de dados.
O encaminhamento de gravação evita a necessidade de dividir essas transações ou de enviá-las exclusivamente ao gravador, o que simplifica o desenvolvimento de aplicações. Esse novo recurso facilita a obtenção de escala de leitura para workloads que precisam ler a última gravação em uma transação e não são sensíveis à latência de gravação.
O encaminhamento de gravação local é diferente do encaminhamento de gravação global, que encaminha gravações de um cluster de banco de dados secundário para o cluster de banco de dados primário em um banco de dados global do Aurora. Você pode usar o encaminhamento de gravação local em um cluster de banco de dados que faz parte de um banco de dados global do Aurora. Para obter mais informações, consulte Como usar o encaminhamento de gravação em um banco de dados global Amazon Aurora.
O encaminhamento de gravação local exige o Aurora MySQL versão 3.04 ou posterior.
Tópicos
- Habilitar o encaminhamento de gravação local
- Conferir se um cluster de banco de dados tem o encaminhamento de gravação habilitado
- Compatibilidade SQL e de aplicações com o encaminhamento de gravação
- Níveis de isolamento para encaminhamento de gravação
- Consistência de leitura para encaminhamento de gravação
- Executar instruções de várias partes com o encaminhamento de gravação
- Transações com o encaminhamento de gravação
- Parâmetros de configuração para o encaminhamento de gravação
- Métricas do Amazon CloudWatch e variáveis de status do Aurora MySQL para encaminhamento de gravação
- Identificar transações e consultas encaminhadas
Habilitar o encaminhamento de gravação local
Por padrão, o encaminhamento de gravação local não está habilitado para clusters de banco de dados do Aurora MySQL. Você habilita o encaminhamento de gravação local no cluster, não na instância.
Importante
Você também pode habilitar o encaminhamento de gravação local para réplicas de leitura entre regiões que usam registro em log binário, mas as operações de gravação não são encaminhadas à Região da AWS de origem. Elas são encaminhadas à instância de banco de dados do gravador do cluster de réplica de leitura do binlog.
Use esse método somente se você tiver um caso de uso para gravar na réplica de leitura do binlog na Região da AWS secundária. Caso contrário, você pode acabar enfrentando um cenário de “cérebro dividido”, caso em que os conjuntos de dados replicados são inconsistentes entre si.
Recomendamos usar o encaminhamento de gravação global com bancos de dados globais, em vez do encaminhamento de gravação local em réplicas de leitura entre regiões, a menos que seja absolutamente necessário. Para obter mais informações, consulte Como usar o encaminhamento de gravação em um banco de dados global Amazon Aurora.
Usando o AWS Management Console, marque a caixa de seleção Ativar o encaminhamento de gravação local abaixo de Encaminhamento de gravação de réplica de leitura quando você cria ou modifica um cluster de banco de dados.
Para habilitar o encaminhamento de gravação com a AWS CLI, use a opção --enable-local-write-forwarding
. Essa opção funciona quando você cria um cluster de banco de dados usando o comando create-db-cluster
. Ela também funciona quando você modifica um cluster de banco de dados usando o comando modify-db-cluster
. É possível desabilitar o encaminhamento de gravação usando a opção --no-enable-local-write-forwarding
com esses mesmos comandos da CLI.
O exemplo a seguir cria um cluster de banco de dados do Aurora MySQL com encaminhamento de gravação habilitado.
aws rds create-db-cluster \ --db-cluster-identifier write-forwarding-test-cluster \
--enable-local-write-forwarding
\ --engine aurora-mysql \ --engine-version8.0.mysql_aurora.3.04.0
\ --master-username myuser \ --master-user-password mypassword \ --backup-retention 1
Depois, você cria instâncias de banco de dados do gravador e do leitor para poder usar o encaminhamento de gravação. Para obter mais informações, consulte Criar um cluster de bancos de dados do Amazon Aurora.
Para habilitar o encaminhamento de gravação usando a API do Amazon RDS, defina o parâmetro EnableLocalWriteForwarding
como true
. Esse parâmetro funciona quando você cria um cluster de banco de dados usando a operação CreateDBCluster
. Ele também funciona quando você modifica um cluster de banco de dados usando a operação ModifyDBCluster
. É possível desabilitar o encaminhamento de gravação definindo o parâmetro EnableLocalWriteForwarding
como false
.
Habilitar o encaminhamento de gravação para sessões de banco de dados
aurora_replica_read_consistency
é um parâmetro de banco de dados e de cluster de banco de dados que permite o encaminhamento de gravação. Você pode especificar EVENTUAL
, SESSION
ou GLOBAL
para o nível de consistência de leitura. Para saber mais sobre os níveis de consistência, consulte Consistência de leitura para encaminhamento de gravação.
As seguintes regras se aplicam a esse parâmetro:
-
O valor padrão é '' (null).
-
O encaminhamento de gravação estará disponível apenas se você definir
aurora_replica_read_consistency
comoEVENTUAL
,SESSION
ouGLOBAL
. Esse parâmetro é relevante somente em instâncias do leitor de clusters de banco de dados que têm o encaminhamento de gravação habilitado. -
Não é possível definir esse parâmetro (quando vazio) ou cancelar a definição (quando já estiver definido) em uma transação de várias declarações. Você pode alterá-lo de um valor válido para outro valor válido durante essa transação, mas não recomendamos essa ação.
Conferir se um cluster de banco de dados tem o encaminhamento de gravação habilitado
Para determinar se você pode usar o encaminhamento de gravação em um cluster de banco de dados, confirme se o cluster tem o atributo LocalWriteForwardingStatus
definido como enabled
.
No AWS Management Console, na guia Configuração da página de detalhes do cluster, você vê o status Habilitado para Encaminhamento de gravação de réplica de leitura local.
Para ver o status da configuração de encaminhamento de gravação para todos os clusters, execute o comando da AWS CLI a seguir.
aws rds describe-db-clusters \ --query '*[].{DBClusterIdentifier:DBClusterIdentifier,LocalWriteForwardingStatus:LocalWriteForwardingStatus}' [ { "LocalWriteForwardingStatus": "enabled", "DBClusterIdentifier": "write-forwarding-test-cluster-1" }, { "LocalWriteForwardingStatus": "disabled", "DBClusterIdentifier": "write-forwarding-test-cluster-2" }, { "LocalWriteForwardingStatus": "requested", "DBClusterIdentifier": "test-global-cluster-2" }, { "LocalWriteForwardingStatus": "null", "DBClusterIdentifier": "aurora-mysql-v2-cluster" } ]
Um cluster de banco de dados pode ter os seguintes valores para LocalWriteForwardingStatus
:
-
disabled
: o encaminhamento de gravação está desabilitado. -
disabling
: o encaminhamento de gravação está sendo desabilitado. -
enabled
: o encaminhamento de gravação está habilitado. -
enabling
: o encaminhamento de gravação está sendo habilitado. -
null
: o encaminhamento de gravação não está disponível para esse cluster de banco de dados. -
requested
: o encaminhamento de gravação foi solicitado mas ainda não está ativo.
Compatibilidade SQL e de aplicações com o encaminhamento de gravação
É possível usar os seguintes tipos de instruções SQL com o encaminhamento de gravação:
-
Instruções de linguagem de manipulação de dados (DML), como
INSERT
,DELETE
eUPDATE
. Existem algumas restrições com relação às propriedades dessas instruções que podem ser usadas com o encaminhamento de gravação, conforme descrito a seguir. -
Instruções
SELECT ... LOCK IN SHARE MODE
eSELECT FOR UPDATE
. -
Instruções
PREPARE
eEXECUTE
.
Certas declarações não são permitidas ou podem gerar resultados obsoletos ao serem usadas em um cluster de banco de dados com o encaminhamento de gravação. Por isso, normalmente a configuração EnableLocalWriteForwarding
está desabilitada para clusters de banco de dados. Antes de habilitá-la, confira se o código da aplicação não é afetado por nenhuma dessas restrições.
As restrições a seguir se aplicam às instruções SQL usadas com o encaminhamento de gravação. Em alguns casos, é possível usar as declarações em clusters de banco de dados com o encaminhamento de gravação habilitado. Essa abordagem funcionará se o encaminhamento de gravação não for habilitado na sessão pelo parâmetro de configuração aurora_replica_read_consistency
. Se você tentar usar uma declaração quando ela não for permitida devido ao encaminhamento de gravação, será exibida uma mensagem de erro semelhante à seguinte:
ERROR 1235 (42000): This version of MySQL doesn't yet support '
operation
with write forwarding'.
- Linguagem de definição de dados (DDL)
-
Conecte-se à instância de banco de dados do gravador para executar declarações DDL. Não é possível executá-las em instâncias de banco de dados do leitor.
- Atualizar uma tabela permanente usando dados de uma tabela temporária
-
Você pode usar tabelas temporárias em clusters de banco de dados com o encaminhamento de gravação habilitado. No entanto, não é possível usar uma instrução DML para modificar uma tabela permanente se a instrução se referir a uma tabela temporária. Por exemplo, não é possível usar uma instrução
INSERT ... SELECT
que usa os dados de uma tabela temporária. - Transações XA
-
Não é possível usar as declarações a seguir em um cluster de banco de dados quando o encaminhamento de gravação está habilitado na sessão. Essas declarações podem ser usadas em clusters de banco de dados que não tenham o encaminhamento de gravação habilitado ou em sessões em que a configuração
aurora_replica_read_consistency
está vazia. Antes de habilitar o encaminhamento de gravação em uma sessão, confira se o código usa essas declarações.XA {START|BEGIN} xid [JOIN|RESUME] XA END xid [SUSPEND [FOR MIGRATE]] XA PREPARE xid XA COMMIT xid [ONE PHASE] XA ROLLBACK xid XA RECOVER [CONVERT XID]
- Instruções LOAD para tabelas permanentes
-
Não é possível usar as declarações a seguir em um cluster de banco de dados com o encaminhamento de gravação habilitado.
LOAD DATA INFILE 'data.txt' INTO TABLE t1; LOAD XML LOCAL INFILE 'test.xml' INTO TABLE t1;
- Instruções de plugin
-
Não é possível usar as declarações a seguir em um cluster de banco de dados com o encaminhamento de gravação habilitado.
INSTALL PLUGIN example SONAME 'ha_example.so'; UNINSTALL PLUGIN example;
- Instruções SAVEPOINT
-
Não é possível usar as declarações a seguir em um cluster de banco de dados quando o encaminhamento de gravação está habilitado na sessão. Você pode usar essas declarações em clusters de banco de dados que não tenham o encaminhamento de gravação habilitado ou em sessões em que a configuração
aurora_replica_read_consistency
está em branco. Confira se o código usa essas declarações antes de habilitar o encaminhamento de gravação em uma sessão.SAVEPOINT t1_save; ROLLBACK TO SAVEPOINT t1_save; RELEASE SAVEPOINT t1_save;
Níveis de isolamento para encaminhamento de gravação
Em sessões que usam o encaminhamento de gravação, só é possível usar o nível de isolamento REPEATABLE READ
. Embora também seja possível usar o nível de isolamento READ COMMITTED
com réplicas do Aurora, esse nível de isolamento não funciona com o encaminhamento de gravação. Para obter informações sobre os níveis de isolamento REPEATABLE READ
e READ COMMITTED
, consulte Níveis de isolamento do Aurora MySQL.
Consistência de leitura para encaminhamento de gravação
É possível controlar o grau de consistência de leitura em um cluster de banco de dados. O nível de consistência de leitura determina quanto o cluster de banco de dados espera antes de cada operação de leitura para garantir que algumas ou todas as alterações sejam replicadas do gravador. Você pode ajustar o nível de consistência de leitura para garantir que todas as operações de gravação encaminhadas da sessão estejam visíveis no cluster de banco de dados antes de qualquer consulta subsequente. Você também pode usar essa configuração para garantir que as consultas no cluster de banco de dados sempre vejam as atualizações mais recentes do gravador. Essa configuração também se aplica às consultas enviadas por outras sessões ou outros clusters. Para especificar esse tipo de comportamento para a aplicação, escolha um valor para o parâmetro de banco de dados ou o parâmetro de cluster de banco de dados aurora_replica_read_consistency
.
Importante
Sempre defina o parâmetro de banco de dados ou o parâmetro de cluster de banco de dados aurora_replica_read_consistency
quando você deseja encaminhar gravações. Se você não fizer isso, o Aurora não encaminhará as gravações. Esse parâmetro tem um valor vazio por padrão, então escolha um valor específico quando você usar esse parâmetro. O parâmetro aurora_replica_read_consistency
afeta somente clusters de banco de dados ou instâncias com o encaminhamento de gravação habilitado.
À medida que você aumenta o nível de consistência, mais tempo a aplicação aguarda a propagação das alterações entre as instâncias de banco de dados. Você pode escolher um contrapeso entre o tempo de resposta rápido e a garantia de que as alterações feitas em outras instâncias de banco de dados estejam totalmente disponíveis antes da execução das consultas.
Você pode especificar os seguintes valores para o parâmetro aurora_replica_read_consistency
:
-
EVENTUAL
: os resultados das operações de gravação na mesma sessão ficam visíveis apenas quando a operação de gravação é executada na instância de banco de dados do gravador. A consulta não espera que os resultados atualizados estejam disponíveis. Assim, ela pode recuperar os dados mais antigos ou os dados atualizados, dependendo do tempo das declarações e da quantidade de atraso da replicação. Essa é a mesma consistência dos clusters de banco de dados do Aurora MySQL que não usam encaminhamento de gravação. -
SESSION
: todas as consultas que usam o encaminhamento de gravação veem os resultados de todas as alterações feitas nessa sessão. As alterações são visíveis independentemente de a transação ser confirmada. Se necessário, a consulta aguardará a replicação dos resultados das operações de gravação encaminhadas. -
GLOBAL
: uma sessão vê todas as alterações confirmadas em todas as sessões e instâncias no cluster de banco de dados. Cada consulta pode aguardar por um período que varia de acordo com a quantidade de atraso da sessão. A consulta prossegue quando o cluster de banco de dados está atualizado com todos os dados confirmados do gravador, a partir do momento em que a consulta foi iniciada.
Para receber informações sobre os parâmetros de configuração envolvidos no encaminhamento de gravação, consulte Parâmetros de configuração para o encaminhamento de gravação.
nota
Você também pode usar aurora_replica_read_consistency
como uma variável de sessão; por exemplo:
mysql> set aurora_replica_read_consistency = 'session';
Exemplos de uso do encaminhamento de gravação
O exemplo a seguir mostra os efeitos do parâmetro aurora_replica_read_consistency
na execução de instruções INSERT
seguidas por declarações SELECT
. Os resultados podem diferir dependendo do valor de aurora_replica_read_consistency
e do horário das declarações.
Para obter maior consistência, você pode esperar brevemente antes de emitir a instrução SELECT
. Ou Aurora pode esperar automaticamente até que os resultados terminem a replicação antes de prosseguir SELECT
.
Para receber informações sobre como definir parâmetros de banco de dados, consulte Grupos de parâmetros para Amazon Aurora.
exemplo com aurora_replica_read_consistency
definido como EVENTUAL
A execução de uma declaração INSERT
, seguida imediatamente de uma declaração SELECT
, retorna um valor para COUNT(*)
com o número de linhas antes de a nova linha ser inserida. Executar SELECT
novamente, pouco tempo depois, retornará a contagem de linhas atualizada. As declarações SELECT
não aguardam.
mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 5 | +----------+ 1 row in set (0.00 sec) mysql> insert into t1 values (6); select count(*) from t1; +----------+ | count(*) | +----------+ | 5 | +----------+ 1 row in set (0.00 sec) mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 6 | +----------+ 1 row in set (0.00 sec)
exemplo com aurora_replica_read_consistency
definido como SESSION
Uma declaração SELECT
imediatamente após INSERT
aguarda até que as alterações da declaração INSERT
fiquem visíveis. Declarações SELECT
subsequentes não aguardam.
mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 6 | +----------+ 1 row in set (0.01 sec) mysql> insert into t1 values (6); select count(*) from t1; select count(*) from t1; Query OK, 1 row affected (0.08 sec) +----------+ | count(*) | +----------+ | 7 | +----------+ 1 row in set (0.37 sec) +----------+ | count(*) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)
Com a configuração de consistência de leitura ainda definida como SESSION
, a introdução de uma breve espera após a execução de uma instrução INSERT
torna a contagem de linhas atualizada disponível no momento em que a próxima instrução SELECT
é executada.
mysql> insert into t1 values (6); select sleep(2); select count(*) from t1; Query OK, 1 row affected (0.07 sec) +----------+ | sleep(2) | +----------+ | 0 | +----------+ 1 row in set (2.01 sec) +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.00 sec)
exemplo com aurora_replica_read_consistency
definido como GLOBAL
Antes de executar a consulta, cada declaração SELECT
aguarda que todas as alterações de dados desde a hora de início da declaração fiquem visíveis. O tempo de espera para cada declaração SELECT
varia, dependendo da quantidade de atraso na replicação.
mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.75 sec) mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.37 sec) mysql> select count(*) from t1; +----------+ | count(*) | +----------+ | 8 | +----------+ 1 row in set (0.66 sec)
Executar instruções de várias partes com o encaminhamento de gravação
Uma declaração DML pode consistir em várias partes, como uma declaração INSERT ... SELECT
ou DELETE ...
WHERE
. Nesse caso, a declaração inteira é encaminhada para a instância de banco de dados do gravador e é executada nela.
Transações com o encaminhamento de gravação
Se o modo de acesso à transação estiver definido como somente leitura, o encaminhamento de gravação não será usado. É possível especificar o modo de acesso da transação usando a instrução SET TRANSACTION
ou a instrução START TRANSACTION
. Você também pode especificar o modo de acesso da transação alterando o valor da sessão transaction_read_only
Se uma transação de longa duração não emitir nenhuma instrução por um período substancial, ela poderá exceder o tempo limite ocioso. Este período tem um padrão de um minuto. Você pode definir o parâmetro aurora_fwd_writer_idle_timeout
para aumentá-lo em até um dia. Uma transação que excede o tempo limite ocioso é cancelada pela instância do gravador. A instrução subsequente enviada recebe um erro de tempo limite. Depois, o Aurora reverte a transação.
Esse tipo de erro pode ocorrer em outros casos quando o encaminhamento de gravação fica indisponível. Por exemplo, o Aurora cancelará todas as transações que usam o encaminhamento de gravação se você reiniciar o cluster de banco de dados ou se desabilitar o encaminhamento de gravação.
Quando uma instância do gravador em um cluster que use o encaminhamento de gravação local é reiniciada, todas as transações e consultas ativas e encaminhadas nas instâncias do leitor que usam o encaminhamento de gravação local são fechadas automaticamente. Quando a instância do gravador estiver novamente disponível, você poderá repetir essas transações.
Parâmetros de configuração para o encaminhamento de gravação
Os grupos de parâmetros de banco de dados do Aurora incluem configurações para o atributo de encaminhamento de gravação. Detalhes sobre esses parâmetros são resumidos na tabela a seguir, com notas de uso após a tabela.
Parâmetro | Escopo | Type | Valor padrão | Valores válidos |
---|---|---|---|---|
aurora_fwd_writer_idle_timeout |
Cluster | Inteiro não assinado | 60 | 1–86.400 |
aurora_fwd_writer_max_connections_pct |
Cluster | inteiro longo não assinado | 10 | 0–90 |
aurora_replica_read_consistency |
Cluster ou instância | Enum | '' (null) | EVENTUAL , SESSION , GLOBAL |
Para controlar as solicitações de gravação recebidas, use estas configurações:
-
aurora_fwd_writer_idle_timeout
: o número de segundos que a instância de banco de dados do gravador espera pela atividade em uma conexão que é encaminhada de uma instância do leitor antes de fechá-la. Se a sessão permanecer ociosa além desse período, o Aurora cancelará a sessão. -
aurora_fwd_writer_max_connections_pct
: o limite máximo em conexões de banco de dados que pode ser usado em uma instância de banco de dados do gravador para lidar com consultas encaminhadas de instâncias do leitor. Ele é expresso como uma porcentagem da configuraçãomax_connections
para o gravador. Por exemplo, semax_connections
for 800 eaurora_fwd_master_max_connections_pct
ouaurora_fwd_writer_max_connections_pct
for 10, o gravador permitirá um máximo de 80 sessões encaminhadas simultâneas. Essas conexões vêm do mesmo grupo de conexões gerenciado pela configuraçãomax_connections
.Essa configuração se aplica somente ao gravador quando o encaminhamento de gravação está habilitado. Se você diminuir o valor, as conexões existentes não serão afetadas. O Aurora leva o novo valor da configuração em conta ao tentar criar uma conexão por meio de um cluster de banco de dados. O valor padrão é 10, representando 10% do valor
max_connections
.
nota
Como aurora_fwd_writer_idle_timeout
e aurora_fwd_writer_max_connections_pct
são parâmetros de cluster de banco de dados, todas as instâncias de banco de dados em cada cluster têm os mesmos valores para esses parâmetros.
Para ter mais informações sobre o aurora_replica_read_consistency
, consulte Consistência de leitura para encaminhamento de gravação.
Para obter mais informações sobre grupos de parâmetros de banco de dados, consulte Grupos de parâmetros para Amazon Aurora.
Métricas do Amazon CloudWatch e variáveis de status do Aurora MySQL para encaminhamento de gravação
As métricas do Amazon CloudWatch e as variáveis de status do Aurora MySQL a seguir se aplicam quando você usa o encaminhamento de gravação em um ou mais clusters de banco de dados. Essas métricas e variáveis de status são todas medidas na instância de banco de dados do gravador.
métrica do cloudwatch | Variável de status do Aurora MySQL | Unidade | Descrição |
---|---|---|---|
|
– | Milissegundos |
Tempo médio para processar cada declaração DML encaminhada na instância de banco de dados de gravador. Não inclui o tempo para o cluster de banco de dados encaminhar a solicitação de gravação nem o tempo para replicar as alterações de volta no gravador. |
|
– | Contagem por segundo | Número de instruções DML encaminhadas processadas a cada segundo por essa instância de banco de dados de gravador. |
|
Aurora_fwd_writer_open_sessions |
Contagem | Número de sessões encaminhadas na instância de banco de dados de gravador. |
– |
Aurora_fwd_writer_dml_stmt_count |
Contagem | Número total de instruções DML encaminhadas para essa instância de banco de dados de gravador. |
– |
Aurora_fwd_writer_dml_stmt_duration |
Microssegundos | Duração total das instruções DML encaminhadas para essa instância de banco de dados de gravador. |
– |
Aurora_fwd_writer_select_stmt_count |
Contagem | Número total de instruções SELECT encaminhadas para essa instância de banco de dados de gravador. |
– |
Aurora_fwd_writer_select_stmt_duration |
Microssegundos | Duração total das instruções SELECT encaminhadas para essa instância de banco de dados de gravador. |
As métricas do CloudWatch e as variáveis de status do Aurora MySQL a seguir são medidas em cada instância de banco de dados do leitor em um cluster de banco de dados com o encaminhamento de gravação habilitado.
métrica do cloudwatch | Variável de status do Aurora MySQL | Unidade | Descrição |
---|---|---|---|
|
– | Milissegundos | Tempo médio de resposta de DMLs encaminhadas na réplica. |
|
– | Contagem por segundo | Número de instruções DML encaminhadas processadas por segundo. |
|
Aurora_fwd_replica_open_sessions |
Contagem | O número de sessões que estão usando o encaminhamento de gravação em uma instância de banco de dados do leitor. |
|
– | Milissegundos |
Tempo médio de espera que uma declaração O grau em que a instância de banco de dados de leitor aguarda antes de processar uma consulta depende da configuração |
|
– | Contagem por segundo | Número total de instruções SELECT processadas a cada segundo em todas as sessões que estão encaminhando gravações. |
|
– | Milissegundos | Encaminhamento de latência de SELECT , com média sobre todas as declarações SELECT encaminhadas no período de monitoramento. |
|
– | Contagem por segundo | Encaminhamento de throughput de SELECT por média de segundos no período de monitoramento. |
– |
Aurora_fwd_replica_dml_stmt_count |
Contagem | Número total de instruções DML encaminhadas dessa instância de banco de dados de leitor. |
– |
Aurora_fwd_replica_dml_stmt_duration |
Microssegundos | Duração total de todas as instruções DML encaminhadas dessa instância de banco de dados de leitor. |
– |
Aurora_fwd_replica_errors_session_limit |
Contagem |
Número de sessões rejeitadas pelo cluster primário devido a uma das seguintes condições de erro:
|
– |
Aurora_fwd_replica_read_wait_count |
Contagem | Número total de esperas de leitura-após-gravação nessa instância de banco de dados de leitor. |
– |
Aurora_fwd_replica_read_wait_duration |
Microssegundos | Duração total das esperas devido à configuração de consistência de leitura nessa instância de banco de dados de leitor. |
– |
Aurora_fwd_replica_select_stmt_count |
Contagem | Número total de instruções SELECT encaminhadas dessa instância de banco de dados de leitor. |
– |
Aurora_fwd_replica_select_stmt_duration |
Microssegundos | Duração total das instruções SELECT encaminhadas dessa instância de banco de dados de leitor. |
Identificar transações e consultas encaminhadas
Você pode usar a tabela information_schema.aurora_forwarding_processlist
para identificar transações e consultas encaminhadas. Para obter mais informações sobre essa tabela, consulte information_schema.aurora_forwarding_processlist.
O exemplo a seguir mostra todas as conexões encaminhadas em uma instância de banco de dados do gravador.
mysql> select * from information_schema.AURORA_FORWARDING_PROCESSLIST where IS_FORWARDED=1 order by REPLICA_SESSION_ID; +-----+----------+--------------------+----------+---------+------+--------------+--------------------------------------------+--------------+--------------------+---------------------------------+----------------------+----------------+ | ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO | IS_FORWARDED | REPLICA_SESSION_ID | REPLICA_INSTANCE_IDENTIFIER | REPLICA_CLUSTER_NAME | REPLICA_REGION | +-----+----------+--------------------+----------+---------+------+--------------+--------------------------------------------+--------------+--------------------+---------------------------------+---------------------------------------+ | 648 | myuser |
IP_address:port1
| sysbench | Query | 0 | async commit | UPDATE sbtest58 SET k=k+1 WHERE id=4802579 | 1 | 637 | my-db-cluster-instance-2 | my-db-cluster | us-west-2 | | 650 | myuser |IP_address:port2
| sysbench | Query | 0 | async commit | UPDATE sbtest54 SET k=k+1 WHERE id=2503953 | 1 | 639 | my-db-cluster-instance-2 | my-db-cluster | us-west-2 | +-----+----------+--------------------+----------+---------+------+--------------+--------------------------------------------+--------------+--------------------+---------------------------------+----------------------+----------------+
Na instância de banco de dados do leitor de encaminhamento, você pode ver os segmentos associados a essas conexões de banco de dados do gravador executando SHOW PROCESSLIST
. Os valores REPLICA_SESSION_ID
no gravador, 637 e 639, são iguais aos valores Id
no leitor.
mysql> select @@aurora_server_id; +---------------------------------+ | @@aurora_server_id | +---------------------------------+ | my-db-cluster-instance-2 | +---------------------------------+ 1 row in set (0.00 sec) mysql> show processlist; +-----+----------+--------------------+----------+---------+------+--------------+---------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----+----------+--------------------+----------+---------+------+--------------+---------------------------------------------+ | 637 | myuser |
IP_address:port1
| sysbench | Query | 0 | async commit | UPDATE sbtest12 SET k=k+1 WHERE id=4802579 | | 639 | myuser |IP_address:port2
| sysbench | Query | 0 | async commit | UPDATE sbtest61 SET k=k+1 WHERE id=2503953 | +-----+----------+--------------------+----------+---------+------+--------------+---------------------------------------------+ 12 rows in set (0.00 sec)