Resetear Slave en Replicacion MySQL

Es posible que nos encontremos con la necesidad de reiniciar por completo el estado de los slaves (de todos o de alguno de ellos), incluyendo el substituir la base de datos por una más actual del master. Ésta es una situación bastante drástica, pero afortunadamente existen métodos que nos permite realizar este proceso sin detener el servicio y sin que impacte de forma drástica en el rendimiento.

Redirigir las lecturas

El servidor Master es el server más crítico. Seguramente esté en producción, y no querremos afectar a la aplicación que esté usando esta base de datos. Lo que tendremos que hacer es modificar nuestra aplicación para que las lecturas que antes iban a los slaves, pasen al master de forma temporal, antes de iniciar este proceso.

Reiniciar los slaves

Pararemos la replicación en los slaves y reiniciamos el estado de los mismos.

Full Backup en el Master

Acto seguido, podremos iniciar un proceso de copia de seguridad del Máster, con una de las herramientas de Percona,XtraBackup. XtraBackup nos permitirá realizar un backup en caliente de nuestras bases de datos (InnoDB) sin prácticamente afectar al rendimiento del server. Además, es bastante rápido.

Si no disponemos de la herramienta, podremos instalarla siguiendo las instrucciones descritas en éste otro Post, referentes a la instalación del repositorio de Percona. Una vez tengamos el repositorio, podremos instalar con yum el paquete “percona-xtrabackup” para a continuación, iniciar el backup en el Master.

Como se puede observar, la primera instrucción nos creará un FULL backup en un directorio con el timestamp del backup, dentro del path que le pasemos (en el ejemplo “/path/to/backupdir”). La segunda instrucción servirá para preparar el backup, aplicando todas las instrucciones que hayan quedado colgadas desde el mismo. Finalmente, con la tercera, nos encargaremos de transferir el backup a cada uno de los slaves, en el ejemplo, al directorio /tmp/FULLBackup.

Reiniciar el estado en los slaves

Una vez transferido el backup del máster a los slaves, deberemos realizar el siguiente proceso en cada slave que queremos resetear:

Primero haremos un backup del directorio dbpath actual (por defecto /var/lib/mysql), simplemente renombrando el directorio con un “mv”.

A continuación moveremos directamente el backup transferido desde el Máster a lo que es el dbpath del slave (vacío tras haberlo renombrado en el paso anterior), y le daremos los correspondientes permisos.

Iniciaremos de nuevo mysql en los slaves

Iniciar replicación en los Slaves

Una vez iniciados los slaves que acabamos de restaurar, deberemos iniciar la replicación, justo en el punto exacto. Para ello, en el dbpath de cada slave restaurado, habrá un fichero con la información de dicha posición, parecido al siguiente:

Este fichero nos indicará el nombre del fichero desde el cual empezar a replicar (“TheMaster-bin.000001” en el ejemplo) y la posición dentro de dicho fichero (“481” en el ejemplo). Así pues, entraremos en el mysql de los slaves que estamos restaurando y ejecutaremos la sentencia CHANGE MASTER TO con los parámetros correspondientes a nuestro master y nuestra posición en el binlog:

Finalmente, podremos iniciar los slaves y corroborar si todo está correcto:

Fuente: http://www.percona.com/doc/percona-xtrabackup/2.2/howtos/setting_up_replication.html

 

facebook Resetear Slave en Replicacion MySQLtwitter Resetear Slave en Replicacion MySQLgoogle Resetear Slave en Replicacion MySQLdiggit Resetear Slave en Replicacion MySQLpinterest Resetear Slave en Replicacion MySQLlinkedin Resetear Slave en Replicacion MySQLprint Resetear Slave en Replicacion MySQLemail Resetear Slave en Replicacion MySQLSi te gusto, comparte el articulo.

Artículos Relacionados

Agregar comentario


*

Recibe nuestro newsletter

Suscribete a nuestro newsletter y mantente informado con nuestros últimos artículos, noticias y más. Todo completamente gratis.