MySQL, detener replicación definitivamente

Hace tiempo expliqué de forma muy simple y rápida cómo poder realizar una configuración MASTER-SLAVE en MySQL. Ya sabéis, en caso de que queramos mejorar un poco el rendimiento de una base de datos o tener alta disponibilidad, esta es una buena opción, ya que dejamos a MySQL la responsabilidad de duplicar los datos en vez de añadir una capa intermedia (DRDB, por ejemplo) y por lo tanto más complejidad al sistema. Ésto último, no en todos los casos es posible ;-)
Pero, ¿cómo hacemos para dejar de replicar un sistema? Esta es una buena pregunta, ya que MySQL permite parar la sincronización de un esclavo, tal que así,
mysql-slave> STOP SLAVE;
Y como se puede observar tampoco existe el proceso que se encarga de la réplica,
mysql-slave> SHOW PROCESSLIST;
+--+----+---------+----+-------+----+-----+----------------+
|Id|User|Host     |db  |Command|Time|State|Info            |
+--+----+---------+----+-------+----+-----+----------------+
|1 |root|localhost|NULL|Query  |  0 |NULL |show processlist|
+--+----+---------+----+-------+----+-----+----------------+
1 row in set (0.00 sec)
Sin embargo, si miramos el estado del esclavo vemos que sigue teniendo perfectamente definidas todas las variables de sincronización con el equipo maestro,
mysql-slave> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.0.64
                  Master_User: slave
                  Master_Port: 3306
                Connect_Retry: 30
              Master_Log_File: mysql-bin.005010
          Read_Master_Log_Pos: 1676964
               Relay_Log_File: sistema_db_2-relay-bin.000423
                Relay_Log_Pos: 1677110
        Relay_Master_Log_File: mysql-bin.005010
             Slave_IO_Running: No
            Slave_SQL_Running: No
...
...
1 row in set (0.00 sec)
Y por lo tanto ante un reinicio del servicio, por ejemplo o un "START SLAVE" la replicación volvería a comenzar.
Entonces, ¿cómo borramos definitivamente esas configuraciones? Para poder hacer eso, MySQL implemente el siguiente comando,
mysql-slave> RESET SLAVE ALL;
Query OK, 0 rows affected (0.00 sec)
que reinicia todas las variables de replicación a valores nulos y por lo tanto volver a sincronizar el máster con el slave ya no será posible. Si ahora miramos el estado del slave, ¡¡lo conseguimos!!
mysql-slave> SHOW SLAVE STATUS \G
Empty set (0.00 sec)
Ya para finalizar, y dejar los sistemas limpios si no nos interesa volver a establecer ningún equipo como slave del máster, simplemente revocamos los permisos de réplica del usuario que en su día se creó para dicha tarea.
mysql-master> REVOKE REPLICATION SLAVE ON *.* FROM 'slave'@'%';
Query OK, 0 rows affected (0.00 sec)


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios