Como faço para visualizar a atividade do servidor de uma instância de banco de dados do Amazon RDS para MySQL?

3 minuto de leitura
0

Como visualizo a atividade do servidor de uma instância de banco de dados do Amazon Relational Database Service (Amazon RDS) que está executando o MySQL?

Resolução

Você pode usar a atividade do servidor para ajudar a identificar a origem dos problemas de desempenho. Você pode analisar o estado do mecanismo de armazenamento InnoDB, identificar consultas em execução ou encontrar deadlocks na instância de banco de dados.

É necessário ter o privilégio PROCESS de administração do servidor MySQL para ver todos os threads em execução em uma instância de banco de dados MySQL. Se você não tiver privilégios de administração, o SHOW PROCESSLIST mostrará somente os threads associados à conta do MySQL que você estiver usando. O privilégio PROCESS de administração do servidor MySQL também é necessário para usar SHOW ENGINE. Você também precisa do PROCESS para visualizar informações sobre o estado do InnoDB, o mecanismo de armazenamento.

Para visualizar a atividade do servidor de uma instância de banco de dados, siga estas etapas:

1.    Ative os logs de consulta geral e de consulta lenta na instância que estiver executando o mecanismo de banco de dados MySQL.

2.    Conecte-se à instância.

3.    Execute os comandos a seguir:

SHOW FULL PROCESSLIST\G
SHOW ENGINE INNODB STATUS\G

Observação: use a palavra‑chave FULL se quiser ver mais do que os primeiros 100 caracteres de cada instrução.

4.    Verifique quais transações estão aguardando e quais transações estão bloqueando as que estão aguardando. Execute um dos comandos a seguir, dependendo da versão do Amazon RDS para MySQL que você estiver executando:

Para as versões 5.6 e 5.7:

SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query FROM information_schema.innodb_lock_waits w INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;

Para a versão 8.0

ON r.trx_id = w.requesting_engine_transaction_id;INNER JOIN information_schema.innodb_trx r
ON b.trx_id = w.blocking_engine_transaction_id
INNER JOIN information_schema.innodb_trx b
FROM performance_schema.data_lock_waits w
b.trx_query blocking_query
b.trx_mysql_thread_id blocking_thread,
b.trx_id blocking_trx_id,
r.trx_query waiting_query,
r.trx_mysql_thread_id waiting_thread,
r.trx_id waiting_trx_id,

Observação: é recomendável coletar as saídas em intervalos curtos e consecutivos (por exemplo, intervalos de 60 segundos). Analisar várias saídas pode levar a uma visão mais ampla do estado do mecanismo. Isso ajuda você a solucionar problemas de desempenho.


Informações relacionadas

Métricas de monitoramento em uma instância do Amazon RDS