Pular para o conteúdo principal
Version: 3.25

Recuperação e manutenção

Como funciona reconciliação de dados dentro do senhasegura

senhasegura usa o MariaDB Galera Cluster como tecnologia de cluster de alta disponibilidade de banco de dados. Esta seção explicará os cenários indisponíveis e os passos para a recuperação com segurança.

Normalmente, em cenários de interrupção temporária da replicação de dados entre nós de cluster com configurações padrão, há uma tolerância de aproximadamente 3 horas de interrupção em que o cluster só precisa de um IST para resolver a reconciliação, ou seja, apenas enviar os dados incrementais. Neste caso, nenhuma intervenção é necessária, pois o cluster resolve o problema da reconciliação automaticamente.

Paradas mais longas geralmente requerem uma transferência de dados completa (SST).

Na maioria dos casos, o cluster senhasegura é suficientemente resiliente e inteligente para resolver a reconciliação realizando um SST automaticamente.

Intervenção manual para realizar um SST no cluster

Primeiro verifique o status da sincronização fazer o login no banco de dados e verificar o controle das seguintes variáveis:

sudo orbit cluster status
  1. Parar o processo MariaDB;

    sudo systemctl stop mariadb.service 
  2. Desativar a replicação mudando o arquivo de configuração galera.cnf;

  3. Editar o arquivo de configuração /etc/mysql/conf.d/galera.cnf;

  4. Localize o parâmetro wsrep_on e mude o valor para OFF

  5. Salvar o arquivo e saia do editor;

  6. Elimine os antigos arquivos de controle de cluster;

  7. sudo rm /var/lib/mysql/galera.cache;

  8. sudo rm /var/lib/mysql/grastate.dat;

  9. sudo rm /var/lib/mysql/multimaster.info;

  10. Iniciar o processo MariaDB;

    sudo systemctl start mariadb.service 

Primeiros passos no nó secundário (other members)

  1. Parar o processo MariaDB;

    sudo systemctl stop mariadb.service 
  2. Renomear a pasta de dados do banco de dados atual para uma finalidade de backup;

    sudo mv /var/lib/mysql /var/lib/mysql-$(date +%d%m%y%H%M) 
  3. Criar uma nova pasta de dados do banco de dados;

    sudo install -d /var/lib/mysql -o mysql -g mysql 

Segundo passo no nó primário (Primary Member)

  1. Parar o processo MariaDB;

    sudo systemctl stop mariadb.service 
  2. Habilitar a replicação:

  3. Editar o arquivo de configuração /etc/mysql/conf.d/galera.cnf;

  4. Localize o parâmetro wsrep_on e mude seu valor para ON

  5. Salvar o arquivo e sair do editor;

  6. Em outro terminal, mantenha sua atenção nos logs do banco de dados:

    sudo tailf /var/log/mysql/mysql-error.log 
  7. Recriar o cluster;

    sudo galera_new_cluster 
  8. Aguardar a inicialização completa;

Segundo passo no nó secundário (other members)

  1. Confirmar se a replicação está habilitada no arquivo de configuração galera.cnf;

  2. Editar o arquivo de configuração /etc/mysql/conf.d/galera.cnf;

  3. Editar o arquivo de configuração /etc/mysql/conf.d/galera.cnf

  4. Salvar o arquivo e sair do editor;

  5. Em outro terminal, mantenha sua atenção nos logs do banco de dados:

    sudo tailf /var/log/mysql/mysql-error.log 
  6. Iniciar o processo MariaDB;

    sudo systemctl start mariadb.service 
  7. Verificar se o número de membros do cluster está correto no log de banco de dados (por exemplo: se houver 2 membros, a mensagem members = 2/2(joined/total) deve ser impressa);

  8. Verifique se a confirmação da sincronização aparece

    WSREP: Member 0.0 (vsrv-senhasegura-cert05) synced with group.

Status de aplicação e serviços

Todos os serviços utilizados pela plataforma senhasegura podem ser gerenciados pela linha de comando orbit.

Reiniciando a instância principal

Uma instância primária é uma instância que centraliza a execução de todos os serviços. E também usada como membro primário do esquema de cluster.

Você pode verificar como a instância é configurada usando o comando orbit status.

Para mudar uma instância para o uso primário e ativá-la, use a seguinte sequência de comandos para garantir um uso correto:

  1. sudo orbit application stop;

  2. sudo orbit application master;

  3. sudo orbit application start;

  4. sudo orbit proxy fajita restart;

  5. sudo orbit proxy rdpgate restart;

O orbit application stop e o orbit application start também reiniciarão os serviços básicos de servidor web NGINX e PHP-FPM.

Reinicialização dos serviços Linux

Todos os serviços podem ser reiniciados usando a interface de comando orbit.

Use o comando sudo orbit service para reiniciar um serviço linux.

Preste muita atenção ao status dos seguintes serviços. Você pode reiniciá-lo por si mesmo se uma parada inesperada do serviço acontecer.

  • nginx: Serviço de servidor Web. Se for reiniciado, reinicie também o serviço php-fpm;

  • php-fpm: Serviço PHP Wrapper;

  • mariadb: Serviço de banco de dados;

  • docker: Serviço de isolamento de proxy;

  • wazuh-manager: Serviço HIDS;

Host-Based Intrusion Detection Systems IP bloqueado

Se Host-Based Intrusion Detection Systems bloquear um IP, você pode desbloquear o IP usando o comando orbit firewall.

  1. sudo orbit firewall –show

  2. sudo orbit firewall unblock –host=[blocked IP]

Reiniciando o ambiente de cluster

Em um ambiente de cluster você deve reiniciar ou encerrar as instâncias na ordem correta para evitar problemas.

Use o sudo orbit shutdown em membros do cluster, uma instância de cada vez, esperando o encerramento completo para iniciar o processo em outro membro.

Dessa forma, os membros de cluster disponíveis entenderão que os membros estão sendo desativados. Mantenha o nó primário como o último a ser desligado e o primeiro a ser ligado novamente.