A automação de banco de dados ajuda a tornar simples e rápidas tarefas complexas e demoradas. As tarefas mais comuns e facilmente identificadas para automação são aquelas que consomem tempo, mas são repetitivas. Isso geralmente consome produtividade e pode afetar as finanças da empresa porque você precisa pagar as pessoas que trabalham nessas tarefas. No entanto, os processos em que tempo e esforço são consumidos desnecessariamente podem ser convertidos em automação virtual, evitando assim um trabalho muitas vezes maçante e exaustivo.
A automação de banco de dados tem sido uma prática comum de administradores de banco de dados e administradores de servidor, que juntos são mais comumente conhecidos agora como DevOps. DevOps também se refere à combinação de tarefas de DBAs e de administração do servidor. À moda antiga, as tarefas automatizadas tradicionais e comuns são escritas como uma série de instruções SQL ou arquivos .sql, que implantam e provisionam servidores por meio de scripts, configurando criptografia/descriptografia ou aproveitando a segurança para o ambiente em que sua automação é supostamente para correr. Aqui, a automação não é um exemplo de empresa substituindo pessoas por scripts. Ele está lá como um assistente para acelerar as coisas e concluir as tarefas mais rapidamente com menos erros. A automação não pode substituir a maneira como os DBAs executam suas tarefas ou o valor que podem entregar a toda a empresa ou organização.
Ferramentas sofisticadas para infraestrutura como código (IaC), como Puppet, Chef, Ansible, SaltStack e Terraform, ajudam os DBAs a concluir as tarefas que são facilmente replicadas, como backup e restauração, failover, implantação de novos clusters, ajustando as configurações de segurança, kernel do sistema operacional e ajuste de desempenho do banco de dados e muito mais. Com a ajuda da automação, muitos DBAs também melhoraram ou mudaram suas habilidades de focar em tarefas específicas de domínio de dados para também cobrir como codificar para utilizar essas ferramentas de IaC que facilitam as coisas do que usar a abordagem tradicional. Atualmente, também existem ferramentas que facilitam o gerenciamento de seus ativos na nuvem, como o gerenciamento de contas de usuário da empresa, registros, implantação de instâncias ou gerenciamento de servidores. As ferramentas para a nuvem dos três grandes provedores de nuvem incluem AWS CloudFormation, Azure Resource Manager e Google Cloud Deployment Manager e permitem que DBAs ou DevOps aproveitem o poder da automação e tornem as coisas mais rápidas. Isso impressiona não apenas os executivos da sua organização ou empresa, mas também os clientes que confiam no seu serviço.
O que precisa ser automatizado?
Como mencionado acima, a automação de banco de dados não é novidade para DBAs, administradores de servidor ou mesmo DevOps. Não há razão para hesitar ou questionar se deve automatizar. Como dito anteriormente, casos comuns que são facilmente identificados para automação são tarefas de natureza repetitiva.
Abaixo, enumeramos coisas que são axiomáticas da perspectiva do DBA.
-
Provisionamento de seus servidores (por exemplo, iniciar instâncias de VM como usar vagrant, iniciar docker ou iniciar seu Kubernetes plataforma) e configurar o acesso SSH ou configurar o acesso VPN
-
Implantação de um novo cluster de banco de dados
-
Identifique o tipo de provedor de banco de dados, o tipo de configuração (primário/em espera, replicação mestre-mestre, replicação)
-
-
Importar cluster de banco de dados existente
-
Implantar/importar bancos de dados existentes para seu cluster de banco de dados atual
-
Failover automático ou alternância
-
Recuperação automática de nó ou cluster
-
Promoção de réplica/escravo ou rebaixamento de um mestre
-
Implantação de balanceadores de carga (por exemplo, ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalived)
-
Backup e restauração
-
Configure seu ambiente de monitoramento de banco de dados (por exemplo, implemente monitoramento baseado em agente, como o Prometheus)
-
Ativar ajustes de segurança
-
Realize otimizações e ajustes automáticos de acordo com o tipo de ambiente
-
Ativar sistemas de alerta para outras integrações de terceiros
-
Gerar alertas ou alarmes e notificações
-
Gerar relatórios como gráficos
-
Processar logs de consulta (logs lentos) para análise de consulta
-
Gerar análise de consulta
-
Arquivamento ou limpeza do banco de dados
É claro que existem muitos casos que você pode automatizar, mas isso lista as tarefas mais comuns e automatizá-las é inquestionável. Esses são os tipos de tarefas que são repetitivas por natureza e a maioria é propensa a erros, especialmente quando precisam ser feitas rapidamente devido a restrições de tempo.
Quais são as coisas que não devem ser automatizadas?
Essas áreas são onde seus DBAs ou SysAdmins fazem a maior parte do trabalho. A automação não pode substituir o conjunto de habilidades e a inteligência do DBA quando se trata de coisas que não podem ser automatizadas.
Entende-se que um DBA deve ser qualificado, com profundo conhecimento de: o banco de dados que está usando e os bancos de dados que serão implantados; os dados que estão sendo processados e armazenados; e se a forma como eles estão sendo processados é segura ou se está em conformidade com os padrões de segurança da empresa. DBAs também revisam e principalmente são considerados DevOps, assim como o arquiteto de automação. Eles ditam o que deve ser feito e o que não será feito. Coisas comuns que não devem ser automatizadas são as seguintes:
-
Configurando seus backups agendados. É claro que os backups programados são automatizados e precisam ser executados de acordo, mas as datas programadas ou o período de tempo necessário devem ser baseados nos horários de baixo pico que o servidor executará. Por exemplo, você não pode fazer um backup se o cluster estiver ocupado durante o dia. Também existem casos comuns em que os servidores ainda estão ocupados à noite, dependendo do tipo de aplicativo que você está atendendo e de onde ele está localizado geograficamente.
-
Failover automático falhou ao promover um novo mestre. Este é um dos casos mais importantes e tem que ser bem compreendido. Se você tiver scripts automatizados projetados para failover, eles não devem ser projetados para forçar um failover caso ele falhe. Você pode nunca saber qual é o principal problema e, se houver uma falha, pode haver transações que ser recuperado antes que qualquer outra coisa seja feita. Por exemplo, pode ser uma transação financeira que foi armazenada no mestre com falha e você deseja promover um escravo à força, mas o escravo candidato falhou ao replicar a transação mais recente. Nesse caso, você pode acabar com dados corrompidos.
-
Recuperação de dados. Obviamente, quando você encontra dados corrompidos ou um cluster não consegue se recuperar de sua recuperação automática de nó/servidor, talvez seja necessário investigar a causa principal. Você deve documentar isso para sua RCA (Análise de Causa Raiz) para evitá-lo no futuro. No entanto, há casos em que a falha é um bug do software de banco de dados que você está usando ou pode ser uma corrupção da VM.
-
Desvio de dados ou inconsistência de dados. Esta definitivamente não é uma situação ideal para automação. Você não quer que seu autômato generalize ou estereotipe seus dados para uma prática que aplicaria este conceito:"se os dados estiverem corrompidos, vamos corrigi-los automaticamente". Definitivamente não é uma boa prática. Há muitos casos que primeiro precisam ser entendidos e investigados antes que você possa decidir. No MySQL, por exemplo, existe uma ferramenta Percona chamada pt-table-checksum, então pt-table-sync para a qual ambos são correlativos entre si na correção de inconsistências de dados. Você definitivamente não vai querer automatizar isso a menos que conheça seus dados muito bem, ou seus dados não sejam extensos, ou os dados possam ser regenerados.
-
Ajuste de kernel e ajuste de banco de dados. Claro, isso pode ser visto como contraditório ao que afirmamos acima. No entanto, existem variáveis autoajustáveis conhecidas para tipos específicos de ambientes, como memória, pool de buffers, HugePages ou parâmetros de memória virtual. No entanto, definitivamente existem muitos parâmetros que precisam ser entendidos, investigados, testados e comparados antes de você decidir aplicar as alterações ou não.
Definitivamente, há muitas coisas que você não deve automatizar que não mencionamos. No mundo do banco de dados, há um grande número de situações que dependem do tipo de dados e do aplicativo que você está atendendo. Lembre-se disso e fique atento às coisas que podem ser automatizadas. Caso contrário, a automação pode levar à destruição.
Ferramentas para automação
Aqui é onde você pode começar com seus scripts de automação. O componente mais importante da automação é a velocidade! Quando se trata de velocidade, não é medido pela rapidez com que uma ferramenta é capaz de concluir as tarefas, mas pelo conforto dos desenvolvedores ou mantenedores dos scripts ou IaC com a ferramenta. Definitivamente, existem prós e contras para essas ferramentas de automação disponíveis. O mais importante é determinar as especificações dessas ferramentas de automação, pois há mais a oferecer além de ser apenas automação. Mais comumente, eles fornecem gerenciamento de configuração e mecanismos de implantação.
Automação tem tudo a ver com velocidade, ou seja, quão rápido ela é em contraste com o uso de uma abordagem tradicional ou usando seus próprios scripts de idioma preferidos. É claro que usar seus próprios scripts pode ser perfeito, mas se sua organização ou empresa for para o avanço tecnológico, usar ferramentas de terceiros, como Ansible, Puppet, Chef, SaltStack ou Terraform, é mais ideal. Por que é mais ideal? Essas ferramentas de terceiros são projetadas para derrotar tarefas longas e demoradas a serem executadas e podem ser feitas com poucas linhas de código.
Por exemplo, o Terraform é conhecido por seus benefícios de portabilidade. Imagine, com o Terraform, você tem uma ferramenta e uma linguagem para descrever a infraestrutura do Google Cloud, AWS, OpenStack e QUALQUER outra nuvem. Se você mudar para outro provedor, não precisará modificar ou refazer seus scripts. Ele também permite que você tenha implantação full-stack, e isso inclui o gerenciamento de seus contêineres Kubernetes. Imagine que, a partir de uma ferramenta, você pode fazer muitas coisas.
Ao iniciar sua automação de banco de dados, não comece do zero porque o objetivo da automação é a velocidade! Novamente, a velocidade não é medida aqui em quão rápido é terminar o trabalho, mas quão rápido é em comparação com uma abordagem tradicional ou tarefas manuais. É claro que a velocidade de conclusão do trabalho depende, por exemplo, parte de seus scripts pode causar longos atrasos devido a vários dados processados e longas execuções de trabalho.
Sempre escolha com base em seus requisitos
Ao escolher ferramentas, não confie em exageros ou no que é mais popular que você já ouviu falar. Embora as principais ferramentas mencionadas anteriormente sejam amplamente adotadas pela comunidade, elas também introduzem complexidade. Por exemplo, ao usar o Ansible, você precisa estar familiarizado com YAML, enquanto com Puppet ou Chef, você precisa estar familiarizado com Ruby e sua linguagem específica de domínio subjacente.
Aproveite as ferramentas corporativas disponíveis
Existem muitas ferramentas promissoras de automação de banco de dados para começar. Se você acha desconfortável e demorado contratar DBAs, SysAdmins ou DevOps para ampliar sua equipe, existem ferramentas disponíveis que oferecem ajuda quando se trata de gerenciamento de banco de dados, gerenciamento de backup e observabilidade.
Vários ClusterControl para Automação de Banco de Dados
O ClusterControl oferece muitas tarefas automatizadas que eliminam a necessidade de abordagens manuais. O ClusterControl foi projetado para facilitar as operações de banco de dados para organizações, empresas, DBAs, SysAdmins, DevOps e até mesmo desenvolvedores. Seu objetivo é automatizar tarefas repetitivas e de longa duração. A grande vantagem do ClusterControl é que ele é uma ferramenta de gerenciamento de banco de dados madura e possui recursos abrangentes que são muito poderosos para gerenciar seus servidores de banco de dados. Ele também aplica as práticas recomendadas mais atualizadas e padrão do setor para gerenciar seus bancos de dados. Ouvimos as demandas de nossos clientes e implementamos recursos para atendê-las.
Algumas das funcionalidades de automação do ClusterControl mais ricas em recursos que você pode aproveitar são:
-
Implantação de seus servidores de banco de dados. Escolha o provedor, especifique a versão correta, determine o tipo de cluster, especifique o nome do host/IP do servidor, como nome de usuário, senha, etc.
-
Importação de servidores existentes para o ClusterControl
-
Implantação na nuvem
-
Monitoramento e relatórios de integridade do banco de dados
-
Alertas e notificações
-
Backup e restauração
-
Verificação de backup
-
Failover automático, alternância
-
Configuração de alta disponibilidade
-
Promover um escravo ou rebaixar um mestre
-
Adicione uma réplica nova/existente ao seu cluster
-
Estender outro cluster como escravo de outro cluster (perfeito para configuração geográfica para sua recuperação de desastres)
-
Recuperação de nós e clusters
-
integração LDAP
-
Notificações de alerta de terceiros
-
Implantação de qualquer uma de uma extensa lista de balanceadores de carga (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalived, garbd )
-
Implantação de monitoramento baseado em agente usando exportadores Prometheus
-
Análise de consulta
-
Ajustes de segurança
-
Ajuste automático para parâmetros de kernel e banco de dados do SO
Além de tudo isso, o ClusterControl também possui orientadores integrados que permitem que DBAs ou DevOps criem seus próprios scripts e integrem-se ao ClusterControl Performance Advisors.
Resumo
A automação de banco de dados ajuda a acelerar tarefas complexas, porém repetitivas. Ele ajuda os DBAs a avançar rapidamente em diferentes tarefas e melhorar suas habilidades, dependendo do escopo do trabalho envolvido. A automação de banco de dados libera os DBAs para serem mais inovadores, ao mesmo tempo em que gerenciam confortavelmente o banco de dados. A automação do banco de dados não substitui a função do DBA. Sempre haverá a necessidade de pessoas qualificadas e inteligentes para gerenciar seus bancos de dados, especialmente quando ocorrer um desastre. Sempre confie nas ferramentas que seus DBAs recomendam, enquanto confia em suas habilidades de DBAs para gerenciar a integridade e a vida útil de seus bancos de dados.