O monitoramento é obrigatório em todos os ambientes, e os bancos de dados não são exceção. Depois de ter sua infraestrutura de banco de dados em funcionamento, você precisará manter o controle sobre o que está acontecendo. O monitoramento é uma obrigação se você quiser ter certeza de que tudo está indo bem, mas também se você fizer os ajustes necessários enquanto seu sistema cresce e evolui. Isso permitirá que você identifique tendências, planeje atualizações ou melhorias ou reaja adequadamente a quaisquer problemas ou erros que possam surgir com novas versões, finalidades diferentes e assim por diante.
Para cada tecnologia de banco de dados, há coisas diferentes para monitorar. Alguns deles são específicos do mecanismo de banco de dados, fornecedor ou até mesmo da versão específica que você está usando. Os clusters de banco de dados dependem muito da infraestrutura subjacente, portanto, as estatísticas de rede e operacionais também são interessantes para os administradores de banco de dados.
Ao executar vários sistemas de banco de dados, o monitoramento desses sistemas pode se tornar bastante trabalhoso.
Neste blog, veremos o que você precisa para monitorar um ambiente MySQL 8.0. Também veremos os recursos de monitoramento de controle de cluster, que podem ajudá-lo a rastrear a integridade de seus bancos de dados gratuitamente.
Monitoramento do SO e do sistema de banco de dados
Ao observar um cluster ou nó de banco de dados, há dois pontos principais a serem considerados:o sistema operacional e a própria instância do MySQL. Você precisará definir quais métricas você vai monitorar de ambos os lados e como você vai fazer isso. Você precisa seguir o parâmetro sempre no sentido do seu sistema, devendo procurar alterações no modelo de comportamento.
Tenha em mente que quando um de seus parâmetros é afetado, ele também pode afetar outros, tornando a solução do problema mais complicada. Ter um sistema de monitoramento e alerta adequado é essencial para tornar essa tarefa o mais simples possível.
Na maioria dos casos, você precisará usar algumas ferramentas, pois é difícil encontrar uma que cubra todas as métricas desejadas.
Monitoramento do sistema operacional
Uma coisa importante (que é comum a todos os mecanismos de banco de dados e até mesmo a todos os sistemas) é monitorar o comportamento do sistema operacional. Aqui estão alguns pontos para verificar aqui. Abaixo, você pode encontrar os principais recursos do sistema para assistir em um servidor de banco de dados. Na verdade, também é a lista das primeiras coisas a verificar.
Uso da CPU
Um alto uso de CPU não é ruim, desde que você não atinja o limite. A porcentagem excessiva de uso da CPU pode ser um problema se não for um comportamento normal. Nesse caso, é essencial identificar os processos/processos que estão gerando esse problema. Se o problema for o processo do banco de dados, você precisará verificar o que está acontecendo dentro do banco de dados.
Memória RAM ou uso de SWAP
Idealmente, todo o seu banco de dados deve ser armazenado na memória, mas isso nem sempre é possível. Dê ao MySQL o máximo que puder, mas deixe o suficiente para que outros processos funcionem.
Se você vir um valor alto para esta métrica e nada mudou em seu sistema, você provavelmente precisará verificar a configuração do banco de dados. Parâmetros como shared_buffers e work_mem podem afetar isso diretamente, pois definem a quantidade de memória a ser usada para o banco de dados MySQL. Swap é apenas para emergências, e não deve ser usado, certifique-se também de ter seu sistema operacional configurado para permitir que o MySQL decida sobre o uso de swap.
Uso do disco
O uso do disco é uma das principais métricas para monitorar e alertar. Certifique-se de sempre ter espaço livre para novos dados, arquivos temporários, instantâneos ou backups.
O monitoramento de valores de métricas rígidos não é suficiente. Um aumento anormal no uso de espaço em disco ou um consumo excessivo de acesso ao disco são coisas essenciais a serem observadas, pois você pode ter um grande número de erros registrados no arquivo de log do MySQL ou uma configuração de cache ruim que pode gerar um consumo vital de acesso ao disco em vez de usando memória para processar as consultas. Certifique-se de ser capaz de detectar comportamentos anormais, mesmo que seu aviso e métricas críticas ainda não tenham sido alcançados.
Junto com o espaço de monitoramento, também devemos monitorar a atividade do disco. Os principais valores a serem monitorados são:
- Solicitações de leitura/gravação
- Comprimento da fila de E/S
- Espera média de E/S
- Tempo médio de leitura/gravação
- Leitura/gravação de largura de banda
Você pode usar iostat ou pt-diskstats da Percona para ver todos esses detalhes.
As coisas que podem afetar o desempenho do disco geralmente estão relacionadas à transferência de dados de e para o disco, portanto, monitore processos anormais que podem ser iniciados por outros usuários.
Carregar Média
Uma métrica de desempenho completa. Compreender a carga do Linux é uma chave para monitorar os sistemas dependentes do sistema operacional e do banco de dados.
Média de carga relacionada aos três pontos mencionados acima. Uma média de carga alta pode ser gerada por um uso excessivo de CPU, RAM ou disco.
Rede
A menos que faça backups ou transfira grandes quantidades de dados, não deve ser o gargalo.
Um problema de rede pode afetar todos os sistemas, pois o aplicativo não pode se conectar (ou conectar pacotes perdidos) ao banco de dados, portanto, essa é uma métrica importante para monitorar. Você pode monitorar a latência ou a perda de pacotes, e o principal problema pode ser uma saturação de rede, um problema de hardware ou apenas uma configuração de rede ruim.
Monitoramento de banco de dados
Embora o monitoramento seja obrigatório, normalmente não é gratuito. Sempre há um custo no desempenho do banco de dados, dependendo de quanto você está monitorando, portanto, evite monitorar coisas que não usará.
Em geral, existem duas maneiras de monitorar seus bancos de dados, a partir dos logs ou do lado do banco de dados por meio de consultas.
No caso de logs, para poder utilizá-los, é necessário ter um alto nível de log, o que gera alto acesso ao disco e pode afetar o desempenho do seu banco de dados.
Para o modo de consulta, cada conexão com o banco de dados usa recursos, portanto, dependendo da atividade do seu banco de dados e dos recursos atribuídos, isso também pode afetar o desempenho.
Claro, existem muitas métricas no MySQL. Aqui vamos nos concentrar no mais importante.
Monitorando sessões ativas
Você também deve rastrear o número de sessões ativas e o status do DB up down. Muitas vezes, para entender o problema, você precisa ver por quanto tempo o banco de dados está em execução. para que possamos usar isso para detectar respawns.
A próxima coisa seria um número de sessões. Se você estiver perto do limite, você precisa verificar se algo está errado ou se você só precisa incrementar o valor max_connections. A diferença no número pode ser um aumento ou diminuição de conexões. O uso inadequado do pool de conexões, bloqueio ou problemas de rede são os problemas mais comuns relacionados ao número de conexões.
Os valores-chave aqui são
- Tempo de atividade
- Threads_connected
- Max_used_connections
- Aborted_connects
Bloqueios de banco de dados
Se você tiver uma consulta aguardando outra consulta, você precisa verificar se essa outra consulta é um processo normal ou algo novo. Em alguns casos, se alguém estiver fazendo uma atualização em uma tabela grande, por exemplo, essa ação pode estar afetando o comportamento normal do seu banco de dados, gerando um grande número de bloqueios.
Monitorando a replicação
As principais métricas para monitorar a replicação são o atraso e o estado da replicação. Não apenas o status up down, mas também o lag, porque um aumento contínuo neste valor não é um sinal muito bom, pois significa que o escravo não é capaz de alcançar seu mestre.
Os problemas mais comuns são problemas de rede, problemas de recursos de hardware ou problemas de subdimensionamento. Se você estiver enfrentando um problema de replicação, precisará saber disso o mais rápido possível, pois precisará corrigi-lo para garantir o ambiente de alta disponibilidade.
A replicação é melhor monitorada verificando SLAVE STATUS e os seguintes parâmetros:
- SLAVE_RUNNING
- SLAVE_IO_Running
- SLAVE_SQL_RUNNING
- LAST_SQL_ERRNO
- SECONDS_BEHIND_MASTER
Backups
Infelizmente, a edição da comunidade vanilla não vem com o gerenciador de backup. Você deve saber se o backup foi concluído e se é utilizável. Normalmente, este último ponto não é levado em consideração, mas é provavelmente a verificação mais crítica em um processo de backup. Aqui teríamos que usar ferramentas externas como percona-xtrabackup ou ClusterControl.
Registros do banco de dados
Você deve monitorar o log do banco de dados em busca de erros como FATAL ou deadlock, ou até mesmo erros comuns como problemas de autenticação ou consultas de longa duração. A maioria dos erros é gravada no arquivo de log com informações úteis detalhadas para corrigi-lo. Pontos de falha comuns que você precisa ficar de olho são erros, tamanhos de arquivos de log. A localização do log de erros pode ser encontrada na variável log_error.
Ferramentas externas
Por último, mas não menos importante, você pode encontrar uma lista de ferramentas úteis para monitorar a atividade do banco de dados.
Percona Toolkit - é o conjunto de ferramentas Linux da Percona para analisar as atividades do MySQL e do SO. Você pode encontrá-lo aqui. Ele suporta as distribuições Linux de 64 bits mais populares, como Debian, Ubuntu e Redhat.
mysqladmin - mysqladmin é um programa de administração para o daemon MySQL. Ele pode ser usado para verificar a integridade do servidor (ping), listar os processos, ver os valores das variáveis, mas também fazer algum trabalho administrativo como criar/descartar bancos de dados, liberar (redefinir) logs, estatísticas e tabelas, eliminar consultas em execução, pare o servidor e controle a replicação.
innotop - oferece uma visão estendida das instruções SHOW. É muito poderoso e pode reduzir significativamente o tempo de investigação. Entre o suporte ao MySQL vanilla, você pode ver a visualização Galera e os detalhes da replicação mestre-escravo.
mtop - monitora um servidor MySQL mostrando as consultas que estão demorando mais para serem concluídas. Os recursos incluem 'zoom' em um processo para mostrar a consulta completa, 'explicando' as informações do otimizador de consulta para uma consulta e 'eliminando' as consultas. Além disso, são fornecidas estatísticas de desempenho do servidor, informações de configuração e dicas de ajuste.
Mytop - é executado em um terminal e exibe estatísticas sobre threads, consultas, consultas lentas, tempo de atividade, carregamento etc. em formato tabular, muito semelhante ao Linux
Conclusão
Este blog não pretende ser um guia exaustivo sobre como aprimorar o monitoramento de banco de dados, mas esperamos que dê uma visão mais clara de quais coisas podem se tornar essenciais e alguns dos parâmetros básicos que podem ser observados. Não hesite em nos informar se perdemos algum importante nos comentários abaixo.