
é minha primeira pergunta aqui e inglês não é minha língua nativa, mas tentarei explicar.
Eu tenho um servidor MySQL mestre com um endereço IP público em execução na infraestrutura do meu provedor e quero executar um servidor escravo MySQL local em meu escritório que replicará todos os dados para fins de teste.
Configurar a replicação funciona perfeitamente, criei um túnel SSH para que meu escravo leia o binlog do mestre, aqui está tudo bem.
Meu problema é configurar os dados do mestre. Normalmente quando quero carregar os dados do mestre para qualquer escravo da mesma rede, executo o seguinte comando no mestre:
mysqldump 'master' --master-data=1 | mysql 'slave'
mas aqui não posso ter nenhum IP para o escravo porque ele está localizado no meu escritório atrás de uma série de roteadores NAT...
Alguém tem uma solução, sabendo que não consigo parar o master e que contém cerca de 50 GB de dados. Se você tiver alguma outra solução para fazer uma transferência de dados 'quente' de um mestre para um escravo também estou muito interessado.
Obrigado antecipadamente.
Responder1
Supondo que você possa fazer ssh para o mestre, que tal, do escravo.
ssh master 'mysqldump \'master\' --master-data=1' | mysql 'slave'
Isso executará o comando dump no master, mas o recarregará localmente.
Responder2
Por que você simplesmente não o encaminha para um arquivo e o transfere mais tarde por scp
ou rsync
?
mysqldump master --master-data=1 >master.dump
no escravo
mysql <master.dump
Alternativamente, execute o mysqldump
comando no escravo e não no mestre. Talvez funcione melhor sem o erro acima.
Dica: talvez você deva descartar todos os bancos de dados e não apenas um?