Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Monitoramento eficaz do MySQL com painéis SCUMM:parte um


Adicionamos vários novos painéis para MySQL em nossa versão mais recente do ClusterControl 1.7.0. - e em nosso blog anterior, mostramos como monitorar seu ProxySQL com Prometheus e ClusterControl.

Neste blog, veremos o painel de visão geral do MySQL.

Portanto, ativamos o monitoramento baseado em agente na guia Painel para começar a coletar métricas para os nós. Observe que, ao ativar o monitoramento baseado em agente, você tem as opções para definir o “Intervalo de raspagem (segundos) ” e “Retenção de dados (dias) ”. O intervalo de raspagem é onde você deseja definir com que agressividade o Prometheus coletará dados do destino e a retenção de dados é por quanto tempo você deseja manter seus dados coletados pelo Prometheus antes de serem excluídos.

Quando ativado, você pode identificar qual cluster possui agentes e qual possui monitoramento sem agente.

Em comparação com a abordagem sem agente, a granularidade de seus dados em gráficos será maior com agentes.

Os gráficos do MySQL


A versão mais recente do ClusterControl 1.7.0 (que você pode baixar gratuitamente - ClusterControl Community) tem os seguintes painéis MySQL para os quais você pode coletar informações para seus servidores MySQL. São elas:Visão geral do MySQL, Métricas do MySQL InnoDB, Esquema de desempenho do MySQL e Replicação do MySQL.

Abordaremos em detalhes os gráficos disponíveis no painel de visão geral do MySQL.

Painel de visão geral do MySQL


Este painel contém as variáveis ​​ou informações importantes usuais sobre a integridade do seu nó MySQL. Os gráficos contidos neste dashboard são específicos para o nó selecionado ao visualizar os dashboards conforme abaixo:

Ele consiste em 26 gráficos, mas você pode não precisar de todos eles ao diagnosticar problemas. No entanto, esses gráficos fornecem uma representação vital das métricas gerais para seus servidores MySQL. Vamos ver os básicos, pois essas são provavelmente as coisas mais comuns que um DBA examinará rotineiramente.

Os primeiros quatro gráficos mostrados acima junto com o tempo de atividade do MySQL, consulta por segundo e informações de buffer pool são os indicadores mais básicos que podemos precisar. A partir dos gráficos exibidos acima, aqui estão suas representações:
  • Conexões MySQL
    É aqui que você deseja verificar o total de conexões de clientes até agora alocadas em um período de tempo específico.
  • Atividade de thread do cliente MySQL
    Há momentos em que seu servidor MySQL pode estar muito ocupado. Por exemplo, pode-se esperar um aumento no tráfego em um horário específico e você deseja monitorar sua atividade de threads em execução. Este gráfico é muito importante de se observar. Pode haver momentos em que o desempenho da consulta pode cair se, por exemplo, uma grande atualização fizer com que outros encadeamentos aguardem para adquirir o bloqueio. Isso levaria a um aumento do número de seus threads em execução. A taxa de falta de cache é calculada como Threads_created/Connections.
  • Perguntas sobre MySQL
    Estas são as consultas executadas em um período de tempo específico. Um encadeamento pode ser uma transação composta de várias consultas e esse pode ser um bom gráfico para se observar.
  • Cache de thread do MySQL
    Este gráfico mostra o valor thread_cache_size, threads que são armazenados em cache (threads que são reutilizados) e threads que são criados (novos threads). Você pode verificar neste gráfico para casos como você precisa ajustar suas consultas de leitura ao perceber um grande número de conexões de entrada e seus threads criados aumentam rapidamente. Por exemplo, se o seu Threads_running / thread_cache_size> 2, aumentar o seu thread_cache_size pode aumentar o desempenho do seu servidor. Observe que a criação e a destruição de threads são caras. No entanto, nas versões recentes do MySQL (>=5.6.8), essa variável tem dimensionamento automático por padrão, que você pode considerar intocada.

Os próximos quatro gráficos são MySQL Temporary Objects, MySQL Select Types, MySQL Sorts e MySQL Slow Queries. Esses gráficos estão relacionados entre si, especialmente se você estiver diagnosticando consultas de longa duração e consultas grandes que precisam de otimização.
  • Objetos temporários do MySQL
    Este gráfico seria uma boa fonte para se confiar se você deseja monitorar consultas de longa duração que acabariam usando disco em vez de tabelas temporárias ou arquivos na memória. É um bom lugar para começar a procurar ocorrências periódicas de consultas que podem criar problemas de espaço em disco, especialmente em momentos estranhos.
  • Tipos de seleção do MySQL
    Uma fonte de desempenho ruim são as consultas que usam junções completas, varreduras de tabela, intervalo de seleção que não está usando nenhum índice. Este gráfico mostraria o desempenho da sua consulta e o que, entre a lista de junções completas, junções de intervalo completo, intervalo selecionado e varreduras de tabela, tem as tendências mais altas.
  • Classificações do MySQL
    Diagnosticar as consultas que estão usando classificação e as que levam muito tempo para serem concluídas.
  • Consultas lentas do MySQL
    As tendências de suas consultas lentas são coletadas aqui neste gráfico. Isso é muito útil especialmente para diagnosticar a frequência com que suas consultas são lentas. Quais são as coisas que precisam ser ajustadas? Pode ser um pool de buffers muito pequeno, tabelas que não possuem índices e passam por uma verificação de tabela completa, backups lógicos executados em agendamento inesperado, etc. Usar nosso Query Monitor no ClusterControl junto com este gráfico é benéfico, pois ajuda a determinar consultas lentas.

Os próximos gráficos que abordamos são mais sobre a atividade de rede, bloqueios de tabela e a memória interna subjacente que o MySQL está consumindo durante a atividade do MySQL.
  • Conexões anuladas do MySQL
    O número de conexões abortadas será renderizado neste gráfico. Isso abrange os clientes abortados, como onde a rede foi fechada abruptamente ou onde a conexão com a Internet caiu ou foi interrompida. Ele também registra as conexões ou tentativas abortadas, como senhas erradas ou pacotes inválidos ao estabelecer uma conexão do cliente.
  • Bloqueios de tabela MySQL
    Tendências para tabelas que solicitam um bloqueio de tabela que foi concedido imediatamente e para tabelas que solicitam um bloqueio que não foi adquirido imediatamente. Por exemplo, se você tiver bloqueios em nível de tabela em tabelas MyISAM e solicitações recebidas da mesma tabela, eles não poderão ser concedidos imediatamente.
  • Tráfego de rede MySQL
    Este gráfico mostra as tendências da atividade de rede de entrada e saída no servidor MySQL. “Entrada” são os dados recebidos pelo servidor MySQL enquanto “Saída” são os dados enviados ou transferidos pelo servidor do servidor MySQL. Este gráfico é melhor para verificar se você deseja monitorar seu tráfego de rede, especialmente ao diagnosticar se seu tráfego é moderado, mas você está se perguntando por que ele tem dados transferidos de saída muito altos, como, por exemplo, dados BLOB.
  • Uso da rede MySQL por hora
    Igual ao tráfego de rede que mostra os dados Recebidos e Enviados. Observe que é baseado em "por hora" e rotulado com "último dia", que não seguirá o período de tempo selecionado no seletor de datas.
  • Visão geral da memória interna do MySQL
    Este gráfico é familiar para um DBA MySQL experiente. Cada uma dessas legendas no gráfico de barras é muito importante, especialmente se você quiser monitorar o uso da memória, o uso do buffer pool ou o tamanho do índice de hash adaptável.

Os gráficos a seguir mostram os contadores que um DBA pode confiar, como verificar as estatísticas, por exemplo, as estatísticas para seleções, inserções, atualizações, o número de status do mestre que foi executado, o número de SHOW VARIABLES que foi executado, verificar se você tiver consultas ruins fazendo varreduras de tabela ou tabelas que não usam índices examinando os contadores read_*, etc.

  • Principais contadores de comandos (por hora)
    Estes são os gráficos que você provavelmente terá que verificar sempre que quiser ver as estatísticas de suas inserções, exclusões, atualizações, comandos executados, como reunir a lista de processos, status do escravo, mostrar status (estatísticas de integridade do servidor MySQL ), e muitos mais. Este é um bom lugar se você quiser verificar que tipo de contadores de comando MySQL estão no topo e se algum ajuste de desempenho ou otimização de consulta é necessário. Também pode permitir que você identifique quais comandos estão sendo executados agressivamente sem precisar deles.
  • Manipuladores MySQL
    Muitas vezes, um DBA passaria por esses manipuladores e verificaria como as consultas estão sendo executadas em seu servidor MySQL. Basicamente, este gráfico cobre os contadores da API Handler do MySQL. Os contadores de manipulador mais comuns para um DBA para a API de armazenamento no MySQL são Handler_read_first, Handler_read_key, Handler_read_last, Handler_read_next, Handler_read_prev, Handler_read_rnd e Handler_read_rnd_next. Existem muitos manipuladores MySQL para verificar. Você pode ler sobre eles na documentação aqui.
  • Manipuladores de transações MySQL
    Se seu servidor MySQL estiver usando transações XA, instruções SAVEPOINT, ROLLBACK TO SAVEPOINT. Então este gráfico é uma boa referência para olhar. Você também pode usar este gráfico para monitorar todos os commits internos do seu servidor. Observe que o contador para Handler_commit é incrementado mesmo para instruções SELECT, mas difere das instruções insert/update/delete que vão para o log binário durante uma chamada para a instrução COMMIT.

O próximo gráfico mostrará as tendências sobre os estados do processo e seu uso por hora. Há muitos pontos-chave aqui na legenda do gráfico de barras que um DBA verificaria. Encontrando problemas de espaço em disco, problemas de conexão e veja se seu pool de conexão está funcionando conforme o esperado, alta E/S de disco, problemas de rede, etc.
  • Estados de processo/Estados de processo principais por hora
    Este gráfico é onde você pode monitorar os principais estados de thread de suas consultas em execução na lista de processos. Isso é muito informativo e útil para essas tarefas de DBA, onde você pode examinar aqui quaisquer status pendentes que precisem de resolução. Por exemplo, abrindo mesas estado é muito alto e seu valor mínimo está quase próximo do valor máximo. Isso pode indicar que você precisa ajustar o table_open_cache. Se as estatísticas é alto e você está percebendo uma lentidão do seu servidor, isso pode indicar que seu servidor está vinculado ao disco e você pode precisar considerar aumentar seu pool de buffers. Se você tiver um grande número de criação de tabela tmp então você pode ter que verificar seu log lento e otimizar as consultas ofensivas. Você pode verificar o manual para obter a lista completa de estados de thread do MySQL aqui.

O próximo gráfico que verificaremos é sobre cache de consulta, cache de definição de tabela MySQL, com que frequência o MySQL abre arquivos do sistema.

  • Atividade/memória de cache de consulta MySQL
    Esses gráficos estão relacionados entre si. Se você tiver query_cache_size <> 0 e query_cache_type <> 0, então este gráfico pode ser útil. No entanto, nas versões mais recentes do MySQL, o cache de consulta foi marcado como obsoleto, pois o cache de consulta do MySQL é conhecido por causar problemas de desempenho. Você pode não precisar disso no futuro. A versão mais recente do MySQL 8.0 possui melhorias drásticas; ele tende a aumentar o desempenho, pois vem com várias estratégias para lidar com informações de cache nos buffers de memória.
  • Aberturas de arquivos MySQL
    Este gráfico mostra a tendência dos arquivos abertos desde o uptime do servidor MySQL, mas exclui arquivos como sockets ou pipes. Também não inclui arquivos que são abertos pelo mecanismo de armazenamento, pois eles têm seu próprio contador que é Innodb_num_open_files.
  • Arquivos abertos do MySQL
    Este gráfico é onde você deseja verificar seus arquivos InnoDB atualmente mantidos abertos, os arquivos abertos atuais do MySQL e sua variável open_files_limit.
  • Status do cache aberto da tabela MySQL
    Se você tiver um table_open_cache muito baixo definido aqui, este gráfico informará sobre as tabelas que falham no cache (tabelas recém-abertas) ou perdem devido ao estouro. Se você encontrar um número alto ou muito status de "Abrindo tabelas" em sua lista de processos, este gráfico servirá como referência para determinar isso. Isso informará se há necessidade de aumentar sua variável table_open_cache.
  • Tabelas abertas do MySQL
    Relativo ao Status de Cache Aberto da Tabela MySQL, este gráfico é útil em certas ocasiões como você deseja identificar se há necessidade de aumentar seu table_open_cache ou diminuí-lo se notar um grande aumento de tabelas abertas ou variável de status Open_tables . Observe que table_open_cache pode ocupar uma grande quantidade de espaço de memória, portanto, você deve definir isso com cuidado, especialmente em sistemas de produção.
  • Cache de definição de tabela MySQL
    Se você deseja verificar o número de suas variáveis ​​de status Open_table_definitions e Opened_table_definitions, então este gráfico é o que você precisa. Para versões mais recentes do MySQL (>=5.6.8), talvez não seja necessário alterar o valor dessa variável e usar o valor padrão, pois ela possui recurso de dimensionamento automático.

Conclusão


A adição do SCUMM na versão mais recente do ClusterControl 1.7.0 oferece novos benefícios significativos para várias tarefas-chave do DBA. Os novos gráficos podem ajudar a identificar facilmente a causa dos problemas com os quais DBAs ou administradores de sistema normalmente teriam que lidar e ajudar a encontrar soluções apropriadas mais rapidamente.

Gostaríamos muito de ouvir sua experiência e pensamentos sobre o uso do ClusterControl 1.7.0 com SCUMM (que você pode baixar gratuitamente - ClusterControl Community).

Na parte 2 deste blog, discutirei o monitoramento eficaz da replicação do MySQL com painéis SCUMM.