MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como gerenciar o MariaDB 10.3 com ClusterControl


O MariaDB Server não é mais uma imitação direta do MySQL. Ele cresceu em um fork maduro, que implementa novas funcionalidades semelhantes às oferecidas pelos sistemas de banco de dados proprietários no upstream. O MariaDB 10.3 amplia muito a lista de recursos corporativos e, com o novo SQL_MODE=Oracle, torna-se uma opção interessante para empresas que desejam migrar seus bancos de dados Oracle para um banco de dados de código aberto. No entanto, o gerenciamento operacional é uma área em que ainda há muito o que fazer, e o MariaDB exige que você construa seus próprios scripts.

Talvez uma boa oportunidade para analisar um sistema de automação?

Os procedimentos automatizados são precisos e consistentes. Eles podem fornecer a tão necessária repetibilidade para que você possa minimizar o risco de mudança nos sistemas de produção. No entanto, como os bancos de dados de código aberto modernos se desenvolvem tão rapidamente, é mais desafiador manter seus sistemas de gerenciamento no mesmo nível de todos os novos recursos.

O próximo passo natural é procurar plataformas de automação. Há muitas plataformas que você pode usar para implantar sistemas. Puppet, Chef e Ansible são provavelmente os melhores exemplos dessa nova tendência. Essas plataformas são adequadas para a rápida implantação de vários serviços de software. Eles são perfeitos para implantações, mas ainda exigem que você mantenha o código, cubram as alterações de recursos e, geralmente, abrangem apenas um aspecto do seu trabalho. Coisas como backups, desempenho e manutenção ainda precisam de ferramentas ou scripts externos.

Por outro lado, temos plataformas em nuvem, com interfaces polidas e uma variedade de serviços adicionais para uma experiência totalmente gerenciada. No entanto, pode não ser viável; por exemplo, ambientes híbridos em que você pode estar usando a nuvem, mas ainda com uma pegada local significativa.

Então, que tal uma camada de gerenciamento dedicada para seus bancos de dados MariaDB?

O ClusterControl foi projetado para automatizar a implantação e o gerenciamento do MariaDB, bem como de outros bancos de dados de código aberto. No centro do ClusterControl está a funcionalidade que permite automatizar as tarefas de banco de dados que você precisa executar regularmente, como implantar novas instâncias e clusters de banco de dados, gerenciar backups, alta disponibilidade e failover, alterações de topologia, upgrades, dimensionar novos nós e muito mais.

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. No mínimo, você pode começar com uma pequena VM com 2 GB de RAM, 2 núcleos de CPU e 20 GB de espaço de armazenamento, no local ou na nuvem.

O método de instalação principal é baixar um assistente de instalação que o orienta em todas as etapas (configuração do SO, download e instalação de pacotes, criação de metadados e outros).

Para ambientes sem acesso à internet, você pode usar o processo de instalação offline.

O ClusterControl é sem agente, portanto, você não precisa instalar software adicional. Requer apenas acesso SSH aos hosts do banco de dados. Ele também suporta monitoramento baseado em agente para dados de monitoramento de resolução mais alta.

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

Instalação do cluster MariaDB


Uma vez que entramos na interface do ClusterControl, a primeira coisa a fazer é implantar um novo banco de dados ou importar um existente. A versão 1.7.2 introduziu suporte para a versão 10.3 (junto com 10.0,10.1,10.2). Na versão 1.7.3 que foi lançada esta semana, podemos ver a implantação aprimorada da instalação na nuvem.
ClusterControl:Deploy/Import
No momento em que escrevo este blog, as versões atuais são 10.3.16. Os pacotes mais recentes são escolhidos por padrão. Selecione a opção "Deploy Database Cluster" e siga as instruções que aparecem.

Agora é a hora de fornecer os dados necessários para a conexão entre ClusterControl e nós de banco de dados. Nesta etapa, você teria VMs limpas ou imagens de SO que você usa dentro de sua organização. Ao escolher MariaDB, devemos especificar Usuário, Chave ou Senha e porta para conectar por SSH aos nossos servidores.
ClusterControl:Deploy Database Cluster
Após configurar as informações de acesso SSH, devemos inserir os dados para acessar nosso banco de dados, para o MariaDB que será o superusuário root. Também podemos especificar qual repositório usar. Você pode ter três tipos de repositórios ao implantar o servidor/cluster de banco de dados usando o ClusterControl:
  • Use 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 configure repositórios de fornecedores. Nenhum repositório será configurado pelo ClusterControl. O ClusterControl dependerá da configuração do sistema (seus arquivos de repositório padrão).
  • 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.

Quando tudo estiver definido, aperte o botão de implantação. O processo de implantação também cuidará da instalação de ferramentas adicionais fornecidas pelo MariaDB como mariabackup e ferramentas de fornecedores externos, populares na administração de banco de dados.

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.

Primeiro, devemos inserir as credenciais de acesso SSH aos nossos servidores de banco de dados existentes. 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 a recuperação automática de nó ou cluster.
ClusterControl:Importar cluster de banco de dados 10.3 existente

Escalando o MariaDB, adicionando mais nós ao cluster de banco de dados


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.
ClusterControl:Adicionando Nó MariaDB
O ClusterControl suporta uma opção para usar um backup existente, portanto, não há necessidade de sobrecarregar o nó mestre de produção com trabalho adicional.

Protegendo o MariaDB


A instalação padrão do MariaDB vem com segurança relaxada. Isso foi aprimorado com as versões recentes, no entanto, os sistemas de nível de produção ainda exigem ajustes na configuração padrão do my.cnf. As implantações do ClusterControl vêm com configurações my.cnf não padrão (diferentes para diferentes tipos de cluster).

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.
ClusterControl:Painel de segurança
O ClusterControl habilita o suporte SSL para conexões MariaDB. 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 MariaDB 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.

Com o ClusterControl você também pode habilitar a auditoria. Ele usa o plug-in de auditoria fornecido pelo MariaDB. 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.

Monitoramento e alerta


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.
ClusterControl:Visão geral
O novo ClusterControl está usando o Prometheus como armazenamento de dados com linguagem de consulta PromQL. A lista de painéis inclui Server General, Server Caches, InnoDB Metrics, Replication Master, Replication Slave, System Overview e Cluster Overview Dashboards.
ClusterControl:DashBoard
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).

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
ClusterControl:Integration Services
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.

O próximo método é usar os serviços de integração. Isso é para passar a categoria específica de eventos para outro serviço, como tíquetes do ServiceNow, Slack, PagerDuty etc., para que você possa criar métodos avançados de notificação e integrações em sua organização.

A última é envolver análises de métricas sofisticadas na seção do Advisor, onde você pode criar verificações e gatilhos inteligentes.
ClusterControl:Advisors

Monitoramento de SQL


O Monitoramento SQL é dividido em três seções.
  • Principais consultas - apresenta as informações sobre consultas que consomem uma parte significativa dos recursos. Monitor de consultas:principais consultas
  • Executando consultas - é uma lista de processos de informações combinadas de todos os nós do cluster de banco de dados em uma visualização. Você pode usar isso para eliminar consultas que afetam suas operações de banco de dados. Monitor de consultas:executando consultas
  • Consultas atípicas - apresentar a lista de consultas com tempo de execução maior que a média. Monitor de consultas:consultas atípicas

Backup e recuperação


Agora que você tem seu MariaDB em execução e seu monitoramento em funcionamento, é hora da próxima etapa:garantir que você tenha um backup de seus dados.
ClusterControl:repositório de backup
O ClusterControl fornece uma interface para gerenciamento de backup MariaDB com suporte para agendamento e relatórios criativos. Ele oferece duas opções para métodos de backup.
  • Backup lógico (texto):mysqldump
  • Backups binários:xtrabackup (versões inferiores), mariabackup

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.

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 data center, bem como backups carregados na nuvem.

Recuperação automática de nós e clusters


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, portanto, não há necessidade de ajustar a cadeia de conexão do aplicativo ou a entrada 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.

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 rapidamente para que você possa garantir os mais altos SLAs para seu ambiente de banco de dados.
Controle de cluster:recuperação automática
O processo é altamente configurável. Ele vem com vários parâmetros que você pode usar para adotar a recuperação de acordo com 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.

Failover é o processo de mudança para um componente em espera íntegro, durante um evento de falha ou manutenção, a fim de preservar o tempo de atividade. Quanto mais rápido isso puder ser feito, mais rápido você poderá ficar online novamente. Se você deseja minimizar o tempo de inatividade e cumprir seus SLAs por meio de uma abordagem automatizada para TimescaleDB, este blog é para você.

Balancer de carga MaxScale


Além do MariaDB 10.3, o ClusterControl adiciona uma opção de balanceador de carga MaxScale 2.3. MaxScale é um proxy com reconhecimento de SQL que pode ser usado para criar ambientes altamente disponíveis. Ele vem com inúmeros recursos, porém, o principal objetivo é possibilitar balanceamento de carga e alta disponibilidade.
ClusterControl:MaxScale
MaxScale pode ser usado para rastrear a integridade do nó MariaDB mestre e, caso ele falhe, execute um failover rápido e automático. O failover automatizado é crucial na construção de uma solução altamente disponível que pode se recuperar prontamente da falha.

Sessões de banco de dados de balanceamento de carga


A divisão de leitura-gravação é um recurso crítico para permitir o dimensionamento de leitura. Basta que o aplicativo se conecte ao MaxScale, e ele detecte a topologia, determine qual MariaDB atua como master e quais atuam como slaves. Ele encaminha o tráfego de acordo com isso.

Resumo


Esperamos que este blog ajude você a se familiarizar com os módulos de administração ClusterControl e MariaDB 10.3. A melhor opção é baixar o ClusterControl e testar cada um deles.