La replicación de una base de datos en tiempo real siempre es conveniente entre otras cosas para la alta disponibilidad. Aquí explicaré como hacer la replicación en MySQL en un Sistema Operativo GNU/Linux.

Instalé MySQL server en el servidor maestro y servidor esclavo

Comenzaremos configurando servidor Maestro.

Edité el archivo de configuración de MySQL

busqué el apartado de [mysqld] y se agrega lo siguiente

Donde -exampledb- es el nombre de la base de datos a replicar que debe estar tanto en el master como en el slave, puedes realizar un respaldo y luego exportarla o si la vas a crear desde 0, creala en ambos servidores.

Comenté la siguiente linea para que permita el acceso remoto de cualquier otro servidor y no solo de su localhost

Entramos a mysql

Aquí se crea el usuario esclavo

Donde root es el usuario que va a replicar,  -172.28.4.2-  será la ip del servidor esclavo ó el dominio en caso de tenerlo por DNS`s y -pass- será el password de éste usuario. Yo uso éste usuario porque ya existe en el servidor esclavo.

Se recargan los permisos de las tablas

Accesamos a la base de datos en cuestión

Se bloquean las tablas para lectura

Se desbloquean las tablas para otras sesiones

Aquí ya tenemos configurado el master y vamos a ver el estatus

Algo así debe mostrar la salida, aquí guardé esta información por aparte porque se necesita en la configuración del esclavo.

Procedemos a configurar el esclavo, donde igualmente instalé mysql-sever y  edité el archivo my.cnf

buscamos el apartado de [mysqld] y agregé lo siguiente

Donde -exampledb- es la base de datos a replicar. Igualmente comenté la linea

reinicié servicios de mysql

Accedemos a mysql

Aquí es importante recordar que la base de datos a replicar ya debe estar en ambos servidores, con mismo nombre y misma estructura. Sin olvidar que el motor de almacenamiento de las tablas debe ser MyISAM y no InnoDB. Verifiqué con el siguiente comando

Aquí va donde está el maestro y los parámetros correctos

Donde -172.28.4.5- es la ip del servidor master, -root- es el usuario slave que creamos en el master, -pass- es la contraseña que indicamos, -3306- es el puerto por defecto de mysql, -mysql-bin.000009- y la posicion -1460-  lo sacamos del master con el comando anterior

Iniciamos el esclavo, en el esclavo

Aquí ya está replicando, y para verificar que así sea

Si en Slave_IO_State tenemos -Waiting for master to send event- es porque esta correcto. Y la base de datos ya debe estarse replicando del maestro al esclavo.

Saludos.

 

Engineer, Mom, SysAdmin, Linux/Unix, Backup & Storage, Astronomy, Dev Girl.