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

Monitoramento e gerenciamento de operações do MySQL 8.0 com ClusterControl


Os usuários de bancos de dados de código aberto geralmente precisam usar uma mistura de ferramentas e scripts próprios para gerenciar seus ambientes de banco de dados de produção. No entanto, mesmo tendo scripts próprios na solução, é difícil mantê-la e acompanhar novos recursos de banco de dados, requisitos de segurança ou atualizações. Com as novas versões principais de um banco de dados, incluindo o MySQL 8.0, essa tarefa pode se tornar ainda mais difícil.

No coração do ClusterControl está sua funcionalidade de automação que permite automatizar as tarefas de banco de dados que você precisa executar regularmente, como implantar novos bancos de dados, adicionar e dimensionar novos nós, gerenciar backups, alta disponibilidade e failover, alterações de topologia, atualizações e muito mais. Os procedimentos automatizados são precisos, consistentes e repetíveis para que você possa minimizar o risco de alterações nos ambientes de produção.

Além disso, com o ClusterControl, os usuários do MySQL não estão mais sujeitos ao aprisionamento do fornecedor; algo que foi questionado por muitos recentemente. Você pode implantar e importar uma variedade de versões e fornecedores do MySQL de um único console gratuitamente.

Neste artigo, mostraremos como implantar o MySQL 8.0 com uma configuração testada em batalha e gerenciá-lo de maneira automatizada. Você vai encontrar aqui como fazer:
  • Instalação do ClusterControl
  • Processo de implantação do MySQL
    • Implantar um novo cluster
    • Importar cluster existente
  • Escalando o MySQL
  • Protegendo o MySQL
  • Monitoramento e tendências
  • Backup e recuperação
  • Recuperação automática de nós e clusters (failover automático)

Instalação do ClusterControl


Para começar com o ClusterControl, você precisa de uma máquina virtual ou host dedicado. A VM e os requisitos de sistemas suportados são descritos aqui. A VM base pode começar a partir de 2 GB, 2 núcleos e espaço em disco de 20 GB de espaço de armazenamento, no local ou na nuvem.

A instalação está bem descrita na documentação, mas basicamente, você baixa um script de instalação que o orienta pelas etapas. O script do assistente configura o banco de dados interno, instala os pacotes, repositórios e outros ajustes necessários. Para ambientes sem acesso à internet, você pode usar o processo de instalação offline.

O ClusterControl requer acesso SSH aos hosts do banco de dados e o monitoramento pode ser baseado em agente ou sem agente. A gestão é sem agente.

Para configurar o SSH sem senha para todos os nós de destino (ClusterControl e todos os hosts de banco de dados), execute os seguintes comandos no servidor ClusterControl:
$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes

Uma das maneiras mais convenientes de experimentar o controle de cluster talvez seja a opção de executá-lo no contêiner docker.
docker run -d --name clustercontrol \
--network db-cluster \
--ip 192.168.10.10 \
-h clustercontrol \
-p 5000:80 \
-p 5001:443 \
-v /storage/clustercontrol/cmon.d:/etc/cmon.d \
-v /storage/clustercontrol/datadir:/var/lib/mysql \
-v /storage/clustercontrol/sshkey:/root/.ssh \
-v /storage/clustercontrol/cmonlib:/var/lib/cmon \
-v /storage/clustercontrol/backups:/root/backups \
severalnines/clustercontrol

Após a implantação bem-sucedida, você poderá acessar a IU da Web do ClusterControl em {endereço IP do host}:{porta do host}, por exemplo:
HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol

Implantação e dimensionamento

Implantar MySQL 8.0


Uma vez que entramos na interface do ClusterControl, a primeira coisa a fazer é implantar um novo banco de dados ou importar um existente. A nova versão 1.7.2 apresenta suporte para a versão 8.0 do Oracle Community Edition e Percona Server. No momento da redação deste blog, as versões atuais são Oracle MySQL Server 8.0.15 e Percona Server para MySQL 8.0-15. Selecione a opção “Implantar cluster de banco de dados ” e siga as instruções que aparecem.
ClusterControl:Deploy Database Cluster
Ao escolher MySQL, devemos especificar Usuário, Chave ou Senha e porta para conectar por SSH aos nossos servidores. Também precisamos de um nome para nosso novo cluster e se queremos que o ClusterControl instale o software e as configurações correspondentes para nós.

Após configurar as informações de acesso SSH, devemos inserir os dados para acessar nosso banco de dados. Também podemos especificar qual repositório usar. A configuração do repositório é um aspecto importante para servidores de banco de dados e clusters. Você pode ter três tipos de repositórios ao implantar o servidor/cluster de banco de dados usando o ClusterControl:
  • Usar o repositório do fornecedor
    Provisione software configurando e usando o repositório de software preferido do fornecedor do banco de dados. O ClusterControl instalará a versão mais recente do que é fornecido pelo repositório do fornecedor do banco de dados.
  • Não configurar repositórios de fornecedores
    Provisione software usando o repositório de software pré-existente já configurado nos nós. O usuário deve configurar o repositório de software manualmente em cada nó do banco de dados e o ClusterControl usará esse repositório para implantação. Isso é bom se os nós do banco de dados estiverem sendo executados sem conexão com a Internet.
  • Usar repositórios espelhados (criar novo repositório)
    Crie e espelhe o repositório do fornecedor de banco de dados atual e, em seguida, implante usando o repositório espelhado local. Isso permite que você “congele” as versões atuais dos pacotes de software.

Na próxima etapa, precisamos adicionar nossos servidores ao cluster que vamos criar. Ao adicionar nossos servidores, podemos inserir o IP ou o nome do host e escolher a interface de rede. Para este último, devemos ter um servidor DNS ou ter adicionado nossos servidores MySQL ao arquivo de resolução local (/etc/hosts) do nosso ClusterControl, para que ele possa resolver o nome correspondente que você deseja adicionar.

Na tela podemos ver um exemplo de implantação com um servidor mestre e dois servidores escravos. A lista de servidores é dinâmica e permite criar topologias sofisticadas que podem ser estendidas após a instalação inicial.
ClusterControl:Definir topologia
Quando tudo estiver definido, aperte o botão de implantação. Você pode monitorar o status da criação de nossa nova configuração de replicação no monitor de atividades do ClusterControl. O processo de implantação também cuidará da instalação de ferramentas populares do mysql, como o kit de ferramentas percona e o percona-xtradb-backup.
ClusterControl:Deploy Cluster Details
Uma vez finalizada a tarefa, podemos ver nosso cluster na tela principal do ClusterControl e na visualização de topologia. Observe que também adicionamos um balanceador de carga (ProxySQL) na frente das instâncias do banco de dados.
ClusterControl:Topologia
Como podemos ver na imagem, uma vez criado nosso cluster, podemos realizar várias tarefas nele, diretamente da seção de topologia.
ClusterControl:Gerenciamento de topologia

Importar um novo cluster


Também temos a opção de gerenciar uma configuração existente importando-a para o ClusterControl. Tal ambiente pode ser criado pelo ClusterControl ou outros métodos (puppet, chef, ansible, docker…). O processo é simples e não requer conhecimento especializado.
ClusterControl:Importar cluster existente
Primeiro, devemos inserir as credenciais de acesso SSH aos nossos servidores. Em seguida, inserimos as credenciais de acesso ao nosso banco de dados, o diretório de dados do servidor e a versão. Adicionamos os nós por IP ou nome de host, da mesma forma que quando implantamos, e pressionamos Importar. Quando a tarefa estiver concluída, estamos prontos para gerenciar nosso cluster a partir do ClusterControl. Neste ponto, também podemos definir as opções para recuperação automática de nó ou cluster.

Escalando o MySQL


Com o ClusterControl, adicionar mais servidores ao servidor é uma etapa fácil. Você pode fazer isso a partir da GUI ou CLI. Para usuários mais avançados, você pode usar o ClusterControl Developer Studio e escrever uma condição de base de recursos para expandir seu cluster automaticamente.

Ao adicionar um novo nó à configuração, você tem a opção de usar o backup existente para não sobrecarregar o nó mestre de produção com trabalho adicional.
ClusterControl Scaling MySQL
Com o suporte integrado para balanceadores de carga (ProxySQL, Maxscale, HAProxy), você pode adicionar e remover nós MySQL dinamicamente. Se você deseja saber mais a fundo sobre a melhor forma de gerenciar a replicação e o cluster do MySQL, leia o whitepaper Replicação do MySQL para replicação de alta disponibilidade.

Protegendo o MySQL


O MySQL vem com muito pouca segurança pronta para uso. Isso foi aprimorado com a versão recente, no entanto, os sistemas de nível de produção ainda exigem tweeks na configuração padrão do my.cnf.

O ClusterControl remove erros humanos e fornece acesso a um conjunto de recursos de segurança para proteger automaticamente seus bancos de dados contra hacks e outras ameaças.

O ClusterControl habilita o suporte SSL para conexões MySQL. A ativação do SSL adiciona outro nível de segurança para comunicação entre os aplicativos (incluindo o ClusterControl) e o banco de dados. Os clientes MySQL abrem conexões criptografadas com os servidores de banco de dados e verificam a identidade desses servidores antes de transferir qualquer informação sensível.

O ClusterControl executará todas as etapas necessárias, incluindo a criação de certificados em todos os nós do banco de dados. Esses certificados podem ser mantidos posteriormente na guia Gerenciamento de chaves.
ClusterControl:Gerenciador de chaves SSL
As instalações do servidor Percona vêm com suporte adicional para um plug-in de auditoria. A auditoria contínua é uma tarefa imperativa para monitorar seu ambiente de banco de dados. Ao auditar seu banco de dados, você pode se responsabilizar pelas ações realizadas ou pelo conteúdo acessado. Além disso, a auditoria pode incluir alguns componentes críticos do sistema, como os associados a dados financeiros para dar suporte a um conjunto preciso de regulamentos como SOX ou o regulamento GDPR da UE. O processo guiado permite que você escolha o que deve ser auditado e como manter os arquivos de log de auditoria.
ClusterControl:Habilitar log de auditoria para Percona Server 8.0

Monitoramento


Ao trabalhar com sistemas de banco de dados, você deve ser capaz de monitorá-los. Isso permitirá que você identifique tendências, planeje atualizações ou melhorias ou reaja de forma eficaz a quaisquer problemas ou erros que possam surgir.

O novo ClusterControl 1.7.2 vem com monitoramento atualizado de alta resolução para MySQL 8.0. Está usando o Prometheus como o armazenamento de dados com a linguagem de consulta PromQL. A lista de painéis inclui MySQL Server General, MySQL Server Caches, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, System Overview e Cluster Overview Dashboards.

O ClusterControl instala os agentes do Prometheus, configura as métricas e mantém o acesso à configuração dos exportadores do Prometheus por meio de sua GUI, para que você possa gerenciar melhor a configuração dos parâmetros, como sinalizadores do coletor para os exportadores (Prometheus). Descrevemos em detalhes o que pode ser monitorado recentemente no artigo How to Monitor MySQL with Prometheus &ClusterControl.
ClusterControl:Dashboard

Alertando


Como operador de banco de dados, precisamos ser informados sempre que algo crítico ocorrer em nosso banco de dados. Os três métodos principais no ClusterControl para obter um alerta incluem:
  • notificações por e-mail
  • integrações
  • consultores

Você pode definir as notificações por e-mail em um nível de usuário. Vá para Configurações> Notificações por e-mail . Onde você pode escolher entre criticidade e tipo de alerta a ser enviado.
ClusterControl:Notificação
O próximo método é usar os serviços de integração. Isso é para passar a categoria específica de eventos para o outro serviço, como tickets do ServiceNow, Slack, PagerDuty etc., para que você possa criar métodos avançados de notificação e integrações em sua organização.
ClusterControl:Integração
A última é envolver análises de métricas sofisticadas na seção Advisor, onde você pode criar verificações e gatilhos inteligentes.
ClusterControl:Automatic Advisors

Backup e recuperação


Agora que você tem seu MySQL instalado e funcionando, e tem seu monitoramento no lugar, é hora da próxima etapa:garantir que você tenha um backup de seus dados.
ClusterControl:Criar backup
ClusterControl fornece uma interface para gerenciamento de backup MySQL com suporte para agendamento e relatórios criativos. Ele oferece duas opções para métodos de backup.
  • Lógico:mysqldump
  • Binário:xtrabackup/mariabackup
ClusterControl:Criar opções de backup
Uma boa estratégia de backup é uma parte crítica de qualquer sistema de gerenciamento de banco de dados. O ClusterControl oferece muitas opções para backups e recuperação/restauração.
ClusterControl:agendamento de backup e repositório de backup
A retenção de backup do ClusterControl é configurável; você pode optar por manter seu backup por qualquer período de tempo ou nunca excluir backups. A criptografia AES256 é empregada para proteger seus backups contra elementos invasores. Para uma recuperação rápida, os backups podem ser restaurados diretamente em um novo cluster - o ClusterControl lida com o processo de restauração completo desde o lançamento de uma nova configuração de banco de dados até a recuperação de dados, removendo etapas manuais propensas a erros do processo.

Os backups podem ser verificados automaticamente após a conclusão e depois carregados nos serviços de armazenamento em nuvem (AWS, Azure e Google). Diferentes políticas de retenção podem ser definidas para backups locais no datacenter, bem como backups carregados na nuvem.

Recuperação automática de nó e cluster


O ClusterControl fornece suporte avançado para detecção e tratamento de falhas. Ele também permite que você implante diferentes proxies para integrá-los à sua pilha de alta disponibilidade, para que não seja necessário ajustar a cadeia de conexão do aplicativo ou a entrada de DNS para redirecionar o aplicativo para o novo nó mestre.

Quando o servidor mestre estiver inativo, o ClusterControl criará um trabalho para realizar o failover automático. O ClusterControl faz todo o trabalho em segundo plano para eleger um novo mestre, implantar servidores escravos de failover e configurar balanceadores de carga.
ClusterControl:recuperação automática do nó
O failover automático do ClusterControl foi projetado com os seguintes princípios:
  • Certifique-se de que o mestre esteja realmente morto antes do failover
  • Failover apenas uma vez
  • Não faça failover para um escravo inconsistente
  • Escrever apenas para o mestre
  • Não recupere automaticamente o mestre com falha

Com os algoritmos integrados, o failover geralmente pode ser executado muito rapidamente para que você possa garantir os SLAs mais altos para seu ambiente de banco de dados.

O processo é altamente configurável. Ele vem com vários parâmetros que você pode usar para adotar a recuperação para as especificidades do seu ambiente. Entre as diferentes opções você pode encontrar replication_stop_on_error, replication_auto_rebuild_slave, replication_failover_blacklist, replication_failover_whitelist, replication_skip_apply_missing_txs, replication_onfail_failover_script e muitos outros.