Esse artigo é uma transcrição do seguinte vídeo: Tratativa de Incidentes
ATENÇÃO: Realize todas as operações com cuidado e na ordem correta por se tratar de comandos de gerência do banco de dados.
Esse troubleshooting é para o caso de uso onde o senhasegura em cluster apresenta os seguintes erros ao acessar a interface web: Database Unavailable ou Split-Brain.
1. Identificando o tipo de erro:
- Disco cheio
Em todas as instância do senhasegura insira o seguinte comando:
df -h
Caso possua um disco com 100% de utilização, o erro acontece por esse motivo.
- Nível de Processamento
Em todas as instância do senhasegura insira o seguinte comando:
top
O principal parâmetro a verificar é o load average, que sempre deve ser menor que a quantidade de vCPU de seu servidor.
- Logs de erro do banco de dados
Em todas as instância do senhasegura insira o seguinte comando:
tail -f /var/log/mysql/mysql-error.log
Esse troubleshooting está relacionado aos erros de conexão do banco de dados, como por exemplo:
[ERROR] WSREP: gcp connect failed: Connection timed out
Ao identificar o tipo de erro, sendo ele de conexão, daremos andamento aos próximos passos.
2. Processos do Banco de Dados
- Estado mysql
Verifique o estado atual do processo mysql em todas as instâncias:
systemctl status mysql
É esperado que o processo esteja com falha ou inativo. Caso o processo esteja “running”, pare o processo:
systemctl stop mysql
- Processos mysql
Verifique se existe algum processo mysql executando no plano de fundo com o seguinte comando:
ps aux | grep mysql
O único resultado esperado desse comando é o processo do comando grep.
Todos os próximos procedimentos dependem que o mysql não esteja rodando.
3. Criação de um Novo Cluster
IMPORTANTE:
Em ambas as instâncias realize a validação se a sincronização do Cluster está ativa. Para isso, verifique se o wsrep_on está como ON, no seguinte arquivo:
cat /etc/mysql/conf.d/galera.cnf
Caso o parâmetro wsrep_on esteja OFF em alguma instância, edite o arquivo e coloque como ON.
INSTÂNCIA SECUNDÁRIA:
Deixe a instância ligada com o seguinte comando:
top
INSTÂNCIA PRIMÁRIA:
Na instância primária remova os arquivos de configuração do cluster:
ATENÇÃO: tome muito cuidado para não remover nenhum arquivo além dos mostrados aqui.
cd /var/lib/mysql/
ls -lha
rm multi-master.info galera.cache grastate.dat
cd /home/mt4adm
Agora, iremos criar um novo cluster seguindo a configuração do cluster anterior, caso for realizar alguma alteração de IP, é feita via interface web ou pela CLI, com mais detalhes na seguinte documentação: Configurar um cluster senhasegura.
Comando para criação do cluster (no diretório /home/mt4adm):
galera_new_cluster
Verifique o processo mysql (que deverá estar funcionando):
systemctl status mysql
A interface web da instância primária deverá estar funcional agora, porém ao acessar a secundária o erro de Database Unavailable continuará.
Deixe a instância primária rodando com o comando top
.
4. Recuperação da Instância Secundária
INSTÂNCIA SECUNDÁRIA:
Movendo o banco de dados:
cd /var/lib/
ls -lha | grep mysql
mv /var/lib/mysql /var/lib/mysql-data-do-dia
Criando um novo diretório mysql com as permissões corretas:
install -d mysql -g mysql -o mysql
cd /home/mt4adm/
Agora, iremos ligar o banco de dados das secundárias, porém é importante verificar a sincronização a partir da primária.
INSTÂNCIA PRIMÁRIA:
Deixe o seguinte comando rodando:
tail -f /var/log/mysql/mysql-error.log
INSTÂNCIA SECUNDÁRIA:
Dê início ao banco de dados no plano de fundo:
systemctl start mysql &
Verifique a sincronização via logs:
tail -f /var/log/mysql/mysql-error.log
Nesse momento o senhasegura vai começar a sincronização, passando a database da primária para a secundária, logo esse processo pode demorar alguns minutos, dependendo do tamanho da base de dados.
A sincronização é finalizada ao aparecer nos logs os seguintes textos:
INSTÂNCIA SECUNDÁRIA:
Reading of all Master_info entries succeeded
INSTÂNCIA PRIMÁRIA:
WSREP: Member ** (hostname_da_instância) synced with group
Ao finalizar esse processo a instância secundária estará de pé e a sincronização do cluster de forma operacional.