¿Cómo deshabilito completamente la replicación de MySQL?

64

Estoy ejecutando la replicación MySQL dual master y ahora quiero pasar a una sola base de datos sin replicación. ¿Cómo deshabilito completamente la replicación en ambas bases de datos?


fuente

Respuestas:

81

Para deshabilitar completamente la replicación con una configuración maestro-maestro, debe hacer lo siguiente en cada esclavo:

  1. STOP SLAVE;
  2. RESET SLAVE;(Usar RESET SLAVE ALL;para MySQL 5.5.16 y posterior)
  3. Edite my.cnf y elimine cualquier información (si está presente) que se refiera a las opciones "maestro -..." o "replicar -...". Es posible que no tenga nada en my.cnf, ya que la replicación también se puede configurar dinámicamente.
  4. Reinicie mysqld.

fuente
Si la replicación se configura dinámicamente, los pasos 1 y 2 deberían ser suficientes.
tanyehzheng
44
Hasta que se reinicie MySQL, informará la información de replicación anterior en las SLAVE STATUSconsultas incluso después de que RESET SLAVEse haya dado el comando. Importante saber para monitoreo o herramientas de administración de configuración remota. Comportamiento confirmado con MySQL 5.5.38 en CentOS 6.5.
Chris Laskey
Hago los pasos, pero ¿por qué ese esclavo inactivo todavía está en la lista del comando mtop? ¿Cómo eliminarlo de la lista?
Scott Chu
18

Sé que esta es una pregunta antigua, pero descubrí que también tengo que restablecer las variables esclavas. Si usa "bla" como se sugiere, el servidor intentará iniciar para encontrar el servidor "bla".

Cambiar MASTERaMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';

Puede verificar que la máquina ya no sea esclava

SHOW SLAVE STATUS \G;
H. Pauwelyn
fuente
55
Esto ya no funciona. La configuración CHANGE MASTER TO MASTER_HOST=''ahora arroja un error.
Gris
ERROR 1210 (HY000): argumentos incorrectos para MASTER_HOST
Kazimieras Aliulis
Funciona para mí en CentOS 6 (MySQL 5.1), después de que SHOW SLAVE STATUS devuelve un conjunto vacío, mientras que después de RESET SLAVE todavía mostraba información maestra.
Martijn
Esta respuesta sigue siendo válida para los usuarios de MySQL 5.1 (aún puede existir).
RolandoMySQLDBA
12

En los servidores esclavos:

  1. Ejecute "detener esclavo" para detener la replicación.
  2. Ejecute "reiniciar esclavo" para decirle al servidor esclavo que olvide su posición en el registro binario recuperado del servidor maestro.
  3. Agregue "skip-slave-start" a my.cnf para evitar que se inicie la replicación cuando reinicie MySQL.

No es necesario reiniciar MySQL ni en el maestro ni en el esclavo. La documentación completa se puede encontrar en la sección 19 del Manual de referencia de MySQL .

Recomiendo dejar el resto de la configuración de replicación en su lugar en caso de que decida volver a su configuración anterior. De esa manera, solo tendría que pasar los datos y restablecer la posición del esclavo (no olvide eliminar skip-slave-start) en lugar de recrear la configuración completa.


fuente
7

Independientemente de la versión de MySQL, la forma más completa de hacerlo es la siguiente

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

Esto tiene que funcionar para la última versión porque la configuración de replicación aún permanece en la RAM para MySQL 5.5.

Acabo de responder una pregunta similar sobre este tema: ¿Cómo cambiar un esclavo anterior de MySQL para que sea un maestro y eliminar la información del estado del esclavo?

RolandoMySQLDBA
fuente
6

Editar el archivo my.cnf solo no es suficiente para deshabilitar la replicación. De hecho, ya no es la forma recomendada de habilitarlo. Poner entradas en el archivo my.cnf solo es efectivo para el próximo inicio y se comporta como si hubiera ingresado el comando en el cliente mysql:

mysql> cambie master a master_host = 'blah', master_user = 'blah', master_password = 'blah' ...;

Ambos métodos crearán un archivo en el directorio de datos llamado master.info . Mientras exista este archivo, el servidor intentará replicarse utilizando los detalles allí. El "RESTABLECER ESCLAVO"; El comando que aparece en la primera respuesta eliminará el archivo master.info (así como el archivo relay-log.info ). Como se mencionó en la primera respuesta, también debe asegurarse de no tener esa información de configuración en el archivo my.cnf, de lo contrario, en el próximo reinicio del servidor, el registro se volverá a habilitar.

Tim
fuente
5

Una respuesta está aquí:

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

* Edite el archivo de configuración de MySQL: /etc/my.cnf y elimine las siguientes 7 líneas en la sección titulada [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 MySQL.


fuente
4

Estoy agregando esto a la respuesta de Harrison Fisk:

Si lo usó, RESET SLAVE ALL;entonces reiniciar no es necesario.

Además, es posible que desee habilitar eventos que se han deshabilitado en esclavo:

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

Para cada uno de ellos:

alter event <event_name> enable;
Franc Drobnič
fuente