Pela primeira vez desde que foi configurado, preciso reiniciar um escravo de replicação MySQL somente leitura.
Encontrei este artigo sobre derrubar um escravo para manutenção (embora ele esteja apenas descrevendo a interrupção do mysql
daemon):
Em resumo o procedimento é:
No mysql
cliente:
STOP SLAVE;
FLUSH TABLES;
Do sistema operacional:
/etc/init.d/mysql stop
Eu reiniciaria neste ponto e depois que o sistema inicializasse:
No mysql
cliente (o mysql
daemon está configurado para iniciar na inicialização):
START SLAVE;
Isso parece certo? Há mais alguma coisa que eu deveria estar fazendo?
Isso parece certo. O escravo continuará de onde parou quando for iniciado novamente.
Observe que, a menos que você forneça a opção --skip-slave-start , o escravo deve iniciar automaticamente.
No nosso caso, estamos usando o AWS RDS Mysql Aurora (5.6). Estamos migrando para 5.7 e configurando a replicação em um novo cluster de 5.7 de um instantâneo de 5.6.
O tamanho do motor precisava ser atualizado, e essa pergunta e sua resposta se tornaram o catalisador para a solução reiniciar sem perder o progresso da replicação (no momento de emitir esses comandos, o escravo estava horas atrás do mestre).
CALL mysql.rds_stop_replication;
CALL mysql.rds_start_replication;
Vale a pena notar que depois de completar este processo, o escravo mais tarde alcançou completamente como evidenciado por
show slave status
Master_Log_File finalmente correspondendo a deshow master status
, e oshow slave status
Seconds_Behind_Master alcançando um valor zero.Para fins de comparação, aqui estão algumas estatísticas deste banco de dados: