Problema
Eu tenho a configuração de replicação do MySQL entre 2 servidores, mestre ( A ) e escravo ( B ). Eu preciso adicionar um novo escravo ao mix ( C ). Quero que esse escravo obtenha suas atualizações diretamente do mestre, não quero replicação em cadeia do escravo. No entanto, o mestre está "quente", eu geralmente uso o Xtrabackup para criar um backup completo do mestre, mas isso o bloqueará por uns bons 10 minutos, pois o banco de dados tem cerca de 20 GB de tamanho.
Solução possível
ABRIR TABELAS COM LER LOCK no escravo B , use SHOW SLAVE STATUS em B , anote o binlog e posicione. Em seguida, faça backup do banco de dados com o Xtrabackup, envie o backup para C e use-o para criar o escravo e defina a replicação para apontar para A com a posição do binlog que acabei de escrever.
Questão
Existe uma maneira melhor que não exija que eu trave B por tanto tempo? Ou algo que é mais facilmente automatizado?
fonte
start slave
(SlaveC) eu recebo "Falha ao abrir o log de retransmissão '/var/log/mysql/mysql-relay-bin.001603"Quando adicionamos um escravo ao nosso mix, fazemos o seguinte:
fonte
Fiz o que o @RolandoMySQLDBA sugere, mas também adicionei etapas de 6 ' e 8' (isso resolve o que os comentários de @Hussain Tamboli .):
Etapa 1) Configurar um novo servidor (ServerC)
Etapa 2) No ServerC, instale o MySQL (mesma versão do ServerB)
Etapa 3) No ServerC, serviço mysql stop
Etapa 4) Copie /etc/my.cnf do ServerB para o ServerC
Etapa 5) No ServerC, altere server_id para um valor diferente de ServerA e ServerB
Etapa 6) rsync / var / lib / mysql no ServerB para ServerC
Etapa 6 ') rsync / var / log / mysql no ServerB para ServerC
Etapa 7) Quando o rsync estiver concluído, execute "STOP SLAVE;" no ServerB
Etapa 8) rsync / var / lib / mysql no ServerB para ServerC
Etapa 8 ') rsync / var / log / mysql no ServerB para ServerC
Etapa 9) No ServerB, execute "START SLAVE;"
Etapa 10) No ServerC, serviço mysql start
Etapa 11) No ServerC, execute "START SLAVE;" (Faça isso se skip-slave-start estiver em /etc/my.cnf)
fonte
Você tem a opção "LOAD DATA FROM MASTER", mas isso é altamente desencorajado.
Você faz backups noturnos / semanais no seu sistema? Nesse caso, observe também a posição do seu backup, então você pode usá-lo para configurar um novo escravo. Apenas deixe como está e deixe-o atualizado por algum tempo.
fonte
Tentei as respostas do Rolando e funcionou bem, mas ele começou a ser reproduzido desde o início e tive que adicionar mais código de erro para pular (sei que não é recomendado, mas sei o que estava fazendo).
Uma vez feito o passo 7, verifiquei o log do mysql e anotei o nome e a posição do log do bin e continuei até o 9º passo. Antes da 10ª etapa, acabei de executar o
change master
arquivo de log e a posição do log. E continuou a partir do passo 11. Tudo parece bem para mim.fonte
Você precisa alterar o uuid do escravo no auto.cnf para que o mestre possa diferenciar os dois escravos.
fonte