Como monitorar bancos de dados MySQL?
A visibilidade operacional é essencial em qualquer ambiente de produção. É crucial ser capaz de identificar quaisquer problemas o mais rápido possível, caso contrário, você pode acabar em sérios problemas, pois um problema não detectado pode causar séria interrupção do serviço ou tempo de inatividade. O MySQL Enterprise Monitor é um dos produtos de monitoramento mais antigos para MySQL no mercado e está disponível como parte de um contrato de assinatura empresarial comercial da Oracle. em MySQL.
Instalação
Em primeiro lugar, o MySQL Enterprise Monitor faz parte do MySQL Enterprise Edition, uma oferta comercial da Oracle. Ele vem em várias versões de pacotes, para diferentes sistemas operacionais. A instalação no Windows 10 (o sistema em que testamos) é bastante simples. O MySQL Enterprise Monitor está configurado e alguns serviços agrupados serão instalados (MySQL, Tomcat). A ferramenta pode ser acessada através do navegador.
Configuração inicial
Em primeiro lugar, você deve adicionar hosts que deseja monitorar.
Você pode adicionar hosts únicos ou um lote deles. A janela de diálogo tem a mesma aparência, exceto que ao adicionar em massa, você pode passar uma lista de servidores separados por vírgulas.
Não entraremos em detalhes, mas resumindo você precisa definir de qual host as instâncias do MySQL devem ser monitoradas - normalmente será o host no qual você instalou o MySQL Enterprise Monitor. Você também pode configurar agentes em suas instâncias do MySQL, nesse caso, eles também poderão coletar dados para o host, não apenas as métricas do MySQL. Em seguida, você precisa definir como chegar à instância monitorada (endereço IP/nome do host, usuário e senha). O MySQL Enterprise Monitor irá então criar usuários adicionais para tarefas como monitoramento, que não requer privilégios de superusuário. Se desejar, você também pode configurar a comunicação SSL se é isso que a instância MySQL usa, você também pode definir alguns tempos limite e se uma topologia de replicação deve ser detectada automaticamente ou não.
O que também é importante ter em mente é que o MySQL Enterprise Monitor depende muito do Performance Schema - certifique-se de que seus bancos de dados tenham o PS habilitado, caso contrário você não se beneficiará de uma parte significativa dos recursos do MySQL Enterprise Monitor.
Monitoramento
Depois que as instâncias MySQL monitoradas estiverem configuradas, você poderá começar a examinar os dados coletados. A seção Visão geral fornece um breve resumo de algumas das métricas mais importantes no MySQL. Os dados são agregados e torna mais fácil encontrar padrões inesperados e, em seguida, aprofundar o que aconteceu.
A guia Eventos fornece uma visão geral de diferentes problemas ou eventos relatados pelo MySQL Enterprise Monitor e seus consultores. Você pode clicar em qualquer um dos eventos e ler do que se trata, bem como as etapas recomendadas a serem seguidas:
Nesse caso em particular, parece que algumas consultas estão fazendo varreduras completas de tabela e é recomendável investigá-las mais para identificar essas consultas e ver se elas podem ser otimizadas.
Outro exemplo, aqui vemos que o cache de tabela não está configurado de maneira ideal. Você pode ver a explicação do problema, conselhos e ações recomendadas a serem tomadas com base neste alerta.
Métricas
Nesta guia, podemos ver dados de várias métricas do MySQL que são úteis para entender o estado do sistema.
Gráficos de série temporal
As capturas de tela acima são apenas um exemplo, há muitos outros gráficos para ver.
É possível aplicar filtragem:você pode definir quais gráficos você gostaria de ver, você também pode definir qual intervalo de tempo deve ser mostrado. Além disso, você pode apenas marcar uma parte do gráfico e ampliar ou abrir o Query Analyzer com dados desse momento específico:
Vamos passar por essa funcionalidade mais tarde, mas em resumo, ela permite analisar consultas, como seu desempenho mudou no tempo e alguns exemplos de consultas.
Estatísticas de Tabela
Esta guia nos dá uma visão das estatísticas da tabela:como era o tráfego (linhas buscadas, inseridas, atualizadas, excluídas) e como era a latência para todas as operações de linha.
Estatísticas do usuário
Nesta aba MySQL Enterprise Monitor apresenta dados sobre usuários - instruções executadas, latência, varreduras de tabela, latência de E/S, conexões, utilização de memória. Esses dados devem fornecer uma boa visão de qual usuário é responsável pela carga no banco de dados. Pode ser muito útil especialmente em ambientes multiusuário, onde não há uma fonte principal de tráfego.
E/S de arquivo de banco de dados
A E/S do arquivo de banco de dados explica como a carga de E/S é distribuída pelos arquivos no banco de dados. Número total de operações de E/S, latência, quantas leituras e gravações foram executadas em um determinado arquivo.
Uso de memória
O uso de memória mostra as estruturas de memória no MySQL, que ajudam a construir uma imagem melhor da utilização de memória no banco de dados. Esses dados podem ser úteis em caso de problemas com a memória - é fácil rastrear onde o crescimento é maior e, se necessário, reduzir as configurações relevantes. Também pode ajudar significativamente no diagnóstico de possíveis vazamentos de memória.
Pool de buffers do InnoDB
Esta guia no MySQL Enterprise Monitor fornece ao usuário uma visão da estrutura da utilização do buffer pool. Quais tabelas são armazenadas em cache, quantas páginas sujas existem para liberar?
Consultas
É extremamente importante para qualquer usuário do MySQL entender a carga que as consultas criam. Quais consultas são as mais problemáticas? Como eles se comportam no tempo? O desempenho pode ser medido de várias maneiras, mas é bastante comum que o desempenho previsível e estável seja mais importante do que o desempenho superior. Contanto que o tempo de resposta seja aceitável, os usuários gostarão mais dos resultados previsíveis do que da resposta um pouco mais rápida (baixa latência), que às vezes pode tornar o servidor significativamente mais lento. É por isso que é muito valioso ver como uma consulta se comporta no tempo e identificar quais comportamentos não são consistentes.
O MySQL Enterprise Monitor definitivamente fornece esses dados. Na lista de consultas, você pode ver facilmente como a latência mudou no tempo. Linha plana é boa, picos - nem tanto. Isso significa que essa consulta pode ter que ser investigada mais detalhadamente. Quando você clicar nele, o MySQL Enterprise Monitor fornecerá mais dados sobre ele.
Como você pode ver, existem alguns dados estatísticos sobre o tipo de consulta específico, você também pode ver como a latência mudou no tempo. Na parte inferior você pode ver algumas declarações de exemplo no tempo e você pode comparar seu tempo de execução.
Ao clicar em um deles, você verá uma consulta completa que foi executada naquele momento. Pode ser útil no caso de consultas em que o desempenho difere dependendo de quais argumentos foram usados no caso WHERE (por exemplo, WHERE some_column ='some value' e os valores nessa coluna não são distribuídos uniformemente pelas linhas).
Replicação
Em um ambiente de replicação MySQL, o atraso é algo com o qual você precisa aprender a lidar. O que é importante é manter o controle disso - o quanto os escravos estão atrasados? Com que frequência isso acontece? Com essas informações é possível tentar identificar o problema e entender melhor quais consultas o estão causando. Em seguida, você pode tentar implementar algumas melhorias como, por exemplo, replicação multithread e acompanhar se as alterações melhoraram o desempenho da replicação e reduziram o atraso para um nível aceitável.
Como o MySQL Enterprise Monitor é diferente do ClusterControl
Como afirmamos, o MySQL Enterprise Monitor faz parte do MySQL Enterprise Edition pago. Para todos os usuários da Comunidade MySQL, MariaDB ou Servidor Percona, o MySQL Enterprise Edition não está disponível. ClusterControl fornece acesso ao monitoramento do MySQL em sua versão gratuita da Comunidade. Em termos de monitoramento de servidor e consulta, há muitas semelhanças.
O ClusterControl oferece acesso às métricas do MySQL coletadas e armazenadas no banco de dados de séries temporais do Prometheus. Você pode acompanhar facilmente inúmeras métricas disponibilizadas no ClusterControl.
O ClusterControl também vem com uma lista de conselheiros, que podem ser usados para acompanhar a integridade e o desempenho do banco de dados. Você também pode criar facilmente novos consultores usando o Developer Studio:
Se você estiver interessado no desempenho de consultas, o ClusterControl fornece um Monitor de Consultas para você - as consultas executadas são coletadas e seu desempenho é comparado, tornando mais fácil para o usuário identificar quais consultas usam a maior parte da CPU no banco de dados.
Você pode ver dados estatísticos sobre as consultas - execuções, linhas enviadas e examinadas, tempo de execução. Você também pode verificar o plano de explicação para um tipo de consulta específico.
Monitorando a persistência poliglota
Um grande diferencial é a capacidade de monitorar todas as principais variantes do ecossistema MySQL (Oracle MySQL, MariaDB e Percona Server), diferentes tecnologias de cluster (NDB Cluster, Group Replication, replicação assíncrona e Galera Cluster), load balancers/proxies (HAProxy, Keepalived, Maxscale, ProxySQL), bem como outros bancos de dados de código aberto (PostgreSQL e MongoDB).
Automação e gerenciamento
O ClusterControl também fornece funcionalidade para implantar instâncias únicas ou clusters no local ou na nuvem (AWS, GCE e Azure), além de recursos como gerenciamento de backup, failover automático e recuperação/reparo, atualizações contínuas, gerenciamento de cluster para replicação ou configurações de cluster , dimensionamento, etc.
Por hoje é só pessoal. Se você trabalhou com o MySQL Enterprise Monitor e gostaria de adicionar algo, por favor, faça isso na seção de comentários.