Como desativo completamente a replicação do MySQL

64

Estou executando a replicação do MySQL dual master e agora quero passar para um único banco de dados sem replicação. Como desabilito completamente a replicação nos dois bancos de dados?


fonte

Respostas:

81

Para desativar completamente a replicação com uma configuração mestre-mestre, faça o seguinte em cada escravo:

  1. STOP SLAVE;
  2. RESET SLAVE;(Use RESET SLAVE ALL;para o MySQL 5.5.16 e posterior)
  3. Edite o my.cnf e remova qualquer informação (se presente) referente às opções "master -..." ou "replicate -...". Você pode não ter nada no my.cnf, pois a replicação também pode ser configurada dinamicamente.
  4. Reinicie o mysqld.

fonte
se a replicação estiver configurada dinamicamente, as etapas 1 e 2 devem ser suficientes.
precisa saber é o seguinte
4
Até o MySQL ser reiniciado, ele reportará as informações antigas de replicação nas SLAVE STATUSconsultas, mesmo após o RESET SLAVEcomando ser fornecido. É importante conhecer as ferramentas de monitoramento ou gerenciamento de configuração remota. Comportamento confirmado com o MySQL 5.5.38 no CentOS 6.5.
18730 Chris Laskey
Eu faço as etapas, mas por que esse escravo inativo ainda está na lista de comandos mtop? Como removê-lo da lista?
Scott Chu
18

Eu sei que essa é uma pergunta antiga, mas descobri que também preciso redefinir as variáveis ​​escravas. Se você usar "blá" como sugerido, o servidor tentará na inicialização para encontrar o servidor 'blá'.

Mude MASTERparaMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

Você pode verificar se a máquina não é mais escrava

SHOW SLAVE STATUS \G;
H. Pauwelyn
fonte
5
Isso não funciona mais. A configuração CHANGE MASTER TO MASTER_HOST=''agora gera um erro.
Grey
ERRO 1210 (HY000): argumentos incorretos para MASTER_HOST
Kazimieras Aliulis
Funciona para mim no CentOS 6 (MySQL 5.1), após este SHOW SLAVE STATUS retornar um conjunto vazio, enquanto após um RESET SLAVE ele ainda mostra algumas informações principais.
Martijn
Esta resposta ainda é válida para usuários do MySQL 5.1 (ainda pode haver por aí).
RolandoMySQLDBA
12

Nos servidores escravos:

  1. Execute "stop slave" para interromper a replicação.
  2. Execute "redefinir escravo" para dizer ao servidor escravo que esqueça sua posição no log binário recuperado do servidor mestre.
  3. Adicione "skip-slave-start" ao my.cnf para impedir que a replicação seja iniciada quando você reiniciar o MySQL.

Não há necessidade de reiniciar o MySQL no mestre ou no escravo. A documentação completa pode ser encontrada na seção 19 do Manual de Referência do MySQL .

Eu recomendo deixar o restante das configurações de replicação no local, caso decida reverter para a configuração anterior. Dessa forma, você teria que empurrar os dados e redefinir a posição do escravo (não se esqueça de remover skip-slave-start) em vez de recriar todo o pano de instalação.


fonte
7

Independentemente da versão do MySQL, a maneira mais completa de fazer isso é a seguinte

cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start

Isso tem que funcionar para a versão mais recente, porque a configuração de replicação ainda permanece na RAM do MySQL 5.5.

Acabei de responder uma pergunta semelhante sobre este assunto: Como mudar um escravo anterior do MySQL para ser um mestre e remover as informações de status do escravo?

RolandoMySQLDBA
fonte
6

Editar o arquivo my.cnf sozinho não é suficiente para desativar a replicação. De fato, não é mais a maneira recomendada de habilitá-lo. A colocação de entradas no arquivo my.cnf só é efetiva para a próxima inicialização e se comporta como se você tivesse inserido o comando no cliente mysql:

mysql> altere master para master_host = 'blá', master_user = 'blá', master_password = 'blá' ...;

Ambos os métodos criarão um arquivo no diretório de dados chamado master.info . Enquanto esse arquivo existir, o servidor tentará replicar usando os detalhes existentes. O "RESET SLAVE;" O comando listado na primeira resposta livrará o arquivo master.info (assim como o arquivo relay-log.info ). Conforme mencionado na primeira resposta, você também deseja certificar-se de que não possui essas informações de configuração no arquivo my.cnf; caso contrário, na próxima reinicialização do servidor, o log será reativado.

Tim
fonte
5

Uma resposta está aqui:

http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm

* Edite o arquivo de configuração do MySQL: /etc/my.cnf e remova as 7 linhas a seguir na seção intitulada [mysqld]:

port=3306
log-bin
server-id=1
master-host=10.0.0.2
master-user=server_1_repl
master-password=server_1_passwd
master-port=3306*

Reinicie o MySQL.


fonte
4

Estou adicionando isso à resposta de Harrison Fisk:

Se você usou RESET SLAVE ALL;, não será necessário reiniciar.

Além disso, convém ativar eventos que foram desativados no slave:

select * from information_schema.events where status = 'SLAVESIDE_DISABLED';

Para cada um deles:

alter event <event_name> enable;
Franc Drobnič
fonte