Monitorar o desempenho dos bancos de dados MySQL é uma tarefa diária de quase todos os DBAs MySQL. Nesta postagem do blog tentaremos demonstrar como monitorar o desempenho de seus bancos de dados MySQL - com ClusterControl.
O que você precisa monitorar?
Em geral, se você estiver monitorando o desempenho do MySQL, provavelmente deve considerar monitorar as seguintes coisas:
- Gerenciamento de consultas - monitorar o desempenho de suas consultas pode ser uma das maneiras mais eficientes de melhorar o desempenho do MySQL.
- Detecção de valores atípicos de consulta - os dados históricos podem nos dizer muito:podem até ser usados para calcular o desempenho esperado da consulta com base em dados históricos e comparar o desempenho atual da consulta com o desempenho esperado para detectar discrepâncias de consulta.
- Desempenho do esquema de banco de dados - O ClusterControl pode ajudá-lo a otimizar o desempenho de suas instâncias MySQL fornecendo informações de esquema para garantir que seus esquemas sejam otimizados para sua carga de trabalho.
- Balanceamento de carga - balanceadores de carga como ProxySQL, HAProxy ou MaxScale podem fazer com que seu banco de dados tenha o melhor desempenho possível. Esses balanceadores de carga podem ser facilmente implantados usando o ClusterControl.
Balanceamento de carga de banco de dados e gerenciamento de consultas usando ClusterControl
ClusterControl oferece suporte aos seguintes balanceadores de carga:
- HAProxy
- MariaDB MaxScale
- ProxySQL
- Keepalived (somente endereço IP virtual)
Observe que o ClusterControl deve residir em um nó independente, separado do cluster de banco de dados.
Em relação ao gerenciamento de consultas, o ClusterControl permite que você absorva o seguinte (você pode ver essas coisas depois de alternar para a guia Query Monitor):
- Você pode ver as principais consultas lentas e demoradas.
- Você pode ver uma lista de consultas em execução no momento.
- Você pode ver uma lista de discrepâncias de consulta.
Esta guia fornece uma lista agregada de todas as suas principais consultas em execução em todos os nós do cluster de banco de dados. O ClusterControl obtém as informações de uma destas duas maneiras:
- As consultas são recuperadas de PERFORMANCE_SCHEMA ou
- Se PERFORMANCE_SCHEMA estiver desabilitado ou indisponível, o ClusterControl analisará o conteúdo do log de consultas lentas.
Se o Log de Consulta Lenta estiver em uso, somente as consultas que excederem o Tempo de Consulta Longo serão listadas aqui.
Long Query Time coleta consultas que demoram mais que Long Query Time segundos para serem executadas (por exemplo, se Long Query Time for 0,1, somente as consultas que levarem mais de 0,1 segundos para executar serão registradas), “ consultas de log que não usam índices?” configura o comportamento do ClusterControl em relação a consultas sem índices etc.
A tabela de consultas principais é atualizada automaticamente a cada 30 segundos (a taxa de atualização pode ser alterada). As colunas da tabela de consultas principais contêm uma lista de consultas de amostra, nomes de banco de dados, o número total de ocorrências de consulta, o número de linhas envolvidas nas operações, o número de tabelas temporárias criadas para uma determinada consulta etc. - a lista das principais consultas agregadas também pode ser ordenado por Ocorrência ou Tempo de Execução para mostrar as consultas mais comuns ou mais lentas.
ClusterControl também permite que você visualize uma lista de consultas em execução no momento. Esta página também é atualizada automaticamente a cada 30 segundos e exibe:
- O servidor MySQL do qual o processo é recuperado.
- O ID da conexão.
- O nome do banco de dados.
- O usuário do MySQL que emitiu a instrução.
- O tempo de execução do thread do MySQL em segundos.
- O nome do host do cliente que emite a declaração.
- O tipo de comando que o encadeamento está executando.
- O estado do encadeamento (como explicado na documentação do MySQL)
A página de discrepâncias de consulta mostra as consultas que são consideradas como “exclusivas”. Em outras palavras, esta página mostra todas as consultas que levam mais tempo para serem executadas do que uma consulta normal desse tipo, sendo mais definida como um desvio de latência de 2 sigmas + average_query_time. Esta página exibe:
- A hora exata em que a consulta foi capturada.
- A própria consulta.
- O tempo que a consulta SQL levou para ser executada.
- O tempo médio de execução da consulta SQL.
- O tempo de execução do desvio padrão (microssegundos).
- O tempo máximo de execução da consulta (microssegundos).
- O tempo de bloqueio da consulta (microssegundos).
A guia do monitor de consulta fornece um resumo do processamento de consulta em todos os nós da cacho.
Resumo
Quando se trata de monitorar o desempenho de seus bancos de dados MySQL, o ClusterControl pode fazer maravilhas. O ClusterControl pode simplificar a implantação de balanceadores de carga, pode ajudá-lo a gerenciar facilmente suas consultas e monitorar seu desempenho, o ClusterControl também pode calcular o desempenho de consulta esperado com base em dados históricos.