MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Automatize a verificação de integridade do banco de dados

Garantir que o banco de dados esteja íntegro é uma das coisas críticas e importantes que um administrador de banco de dados deve fazer. Se negligenciarmos a manutenção do banco de dados, há uma probabilidade maior de encontrarmos um problema; por exemplo, um problema de desempenho do banco de dados causado por uma carga de trabalho que mudou ao longo do tempo ou configuração incorreta que leva a uma violação de dados.

Verificação regular da configuração, utilização de recursos, procedimentos de backup e restauração, segurança de dados e desempenho de consultas podem ajudar a evitar problemas de banco de dados. Precisamos ter uma verificação de banco de dados padrão para nosso ambiente de banco de dados, para que possamos monitorar se o banco de dados ainda está sob controle.

O que é uma verificação de integridade do banco de dados

Uma verificação de integridade de banco de dados consiste em várias tarefas para verificar a condição de nosso banco de dados. Por que precisamos executar uma verificação de integridade? Precisamos identificar e corrigir quaisquer problemas ou anomalias em nosso ambiente de banco de dados, seja um problema de desempenho, um problema de configuração ou algo que possa causar uma interrupção.

Podemos dividir a verificação de integridade em algumas categorias:

  • Verificação de segurança, para bloquear o acesso ao banco de dados e garantir que o tráfego venha de uma rede confiável com o direito privilégios.

  • Verificação de configuração, para garantir que a configuração atenda aos critérios padrão que foram definidos pela organização.

  • Verificação de desempenho, para garantir que o banco de dados esteja usando os recursos de hardware e respondendo aos aplicativos.

  • Procedimentos de backup e restauração, para garantir que o backup obtido do banco de dados possa ser restaurado.

A partir dessas categorias, podemos fazer um detalhamento do que precisamos verificar no banco de dados. Isso é muito importante, para que possamos ter uma verificação detalhada de todos os aspectos. Por exemplo:

  • Segurança do banco de dados

  • Compare o usuário e os privilégios no banco de dados com o acesso à matriz do usuário que temos

  • Verifique o endereço IP da lista de permissões no banco de dados, se o tráfego vem de uma rede confiável

  • Certifique-se de que o registro de auditoria do banco de dados esteja ativado

  • Verificação de configuração

  • Verifique o SSL já em vigor

  • Certifique-se de que a configuração do banco de dados esteja correta (permissão e propriedade)

  • Verificação de desempenho

  • Verifique a taxa de acertos do cache do banco de dados

  • Certifique-se de que a conexão do banco de dados ainda é suficiente para lidar com o tráfego

  • Procedimento de backup e restauração

  • Programação de backup adequada, que entrega o RPO acordado

  • Certifique-se de testar os backups para saber se os dados podem ser restaurados

Com base na lista acima, podemos criar um script para verificar esses itens em cada tipo de banco de dados (ex. MySQL, PostgreSQL, MongoDB). Cada tipo de banco de dados obviamente terá comandos diferentes.

Automatizando verificações de integridade do banco de dados

Não queremos executar uma tarefa repetitiva semanalmente ou mensalmente, a verificação de integridade do banco de dados é uma tarefa demorada. Executamos o script em cada nó do banco de dados, portanto, a automação das verificações de integridade nos poupa bastante tempo.

Com base na lista de scripts de verificação de integridade, podemos criar um script bash para executar as tarefas e agendá-las com o cron. Abaixo está apenas uma amostra de um relatório simples de verificação de integridade do banco de dados:

#!/bin/sh
# Simple database check report
username = "audit_user"
password = "pwd001"
hostname = "db01-payment"
mycnf = "/etc/mysql/my.cnf"
dt=$(date '+%d/%m/%Y %H:%M:%S');
audit_name = "MySQL_Healthcheck_audit_report_"$dt

# check the queries
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Queries'" > $audit_name

# check open table cache hit ratio
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Table_open_cache_hits'" >> $audit_name

# check the ssl session mode
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Ssl_session_cache_mode'" >> $audit_name

# check the buffer pool size
cat $mycnf | grep "innodb_buffer_pool_size" >> $audit_name

#check ssl key in my.cnf
cat $mycnf | grep "ssl_key" >> $audit_name

# check permission of my.conf
ls -ltr $mycnf >> $audit_name

As verificações de integridade também podem ser automatizadas por ferramentas de gerenciamento de configuração, como Ansible, Salt,Chef ou Puppet.

Automatizando verificações de integridade do banco de dados com ClusterControl

ClusterControl é uma plataforma de operações para bancos de dados que mostra problemas de integridade, desempenho ou disponibilidade do servidor em seu ambiente de banco de dados, tudo a partir de um console central. Ele suporta a automatização de verificações de integridade do banco de dados por meio de Relatórios Operacionais. Você pode gerar ou agendar os relatórios operacionais, bem como os relatórios de incidentes. Existem alguns tipos de relatório, como mostrado abaixo:

O Daily System Report fornece informações sobre seu cluster de banco de dados atual com consiste em várias informações, como status do serviço do nó, status do backup, tempo de atividade dos nós, resumo das principais consultas.

Package Upgrade Report fornece um resumo dos pacotes disponíveis para a atualização do gerenciador de repositório.

Relatório de Alterações de Esquema compara as alterações do banco de dados em uma estrutura de tabela que ocorreram entre dois relatórios gerados diferentes.

Os relatórios de backup fornecem informações sobre resumo e detalhes do backup, por exemplo, último backup criado, o status do backup, status de verificação do backup e período de retenção do backup.

Além dos Relatórios Operacionais, existem também os Advisors que fornecem informações sobre CPU, disco, conexões de banco de dados, etc., conforme abaixo:


As notificações por e-mail e alertas por meio de canais de terceiros configurados fornecem informações sobre coisas que dão errado (por exemplo, backups com falha, backups não restauráveis, falhas de nó).

O Schema Analyzer fornece informações sobre índices duplicados/redundantes, tabelas sem chaves primárias e tabelas usando o mecanismo de armazenamento MyISAM. Índices redundantes podem ser particularmente bons de se conhecer, pois aumentam o tamanho do banco de dados (e backups) e podem retardar as atualizações na tabela.