Replicación de una Base De Datos usando MySql en Windows y Linux
Para la replicación de base de datos se necesitan un Maestro y uno o varios esclavos según sea el caso.
Para esta práctica se necesita:
- Mínimo 2 computadoras conectadas en red
- Tener instalado el gestor de bases de datos MySql
- Agregar al path la carpeta Bin de MySql si este no fue marcado en la instalación
- Tener permisos de ROOT
Empezamos Configurando el Maestro:
-
Buscar y abrir el archivo My.cnf (My.ini en sistemas Windows)
-
Buscar y comentar las siguientes lineas si es que se encuentran:
-
Agregar despues de la linea [mysqld] lo siguiente:
-
Entramos a los servicios en Windows y reiniciamos el servicio de MySql (omitir este paso en sistemas Linux)
-
Entramos en MySql escribiendo en la linea de comandos lo siguiente:
-
Ahora en el shell de mysql escribir:
-
Una vez esto seleccione la base de datos a replicar y realice lo siguiente:
-
Salir de MySql utilizando el comando quit o exit
-
Ahora haremos un Backup de la Base de Datos que se encuentra en el Maestro para tener el mismo esquema y datos en los esclavos, para hacer eso escribimos en la terminal o en el cmd:
-
Finalmente desbloqueamos las tablas de la base de Datos
En Windows se encuentra en: c:\Archivos de Programa\MySQL\MySQL Server 5.1\
En Sistemas Linux se encuentra: /etc/my.cnf
#skip-networking #bind-address = 127.0.0.1
log-bin =mysql-bin.log binlog-do-db=nombre_base_de_datos server-id=1
Nota:
El server-id en el servidor siempre será 1, y los esclavos serán 2, 3… n según sea el caso en binlog-do-db se pone el nombre de la base de datos que replicara despues de signo = .
mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
Nota:
En password pondra la contraseña que quiera ponerle al master en slave1 se está agregando el primer esclavo el usuario será en este caso Slave1, si se agrega un segundo esclavo sería Slave2 y así sucesivamente.
USE nombre_base_datos; FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
Después de esto el gestor mostrará lo siguiente:
mysqldump -u root -p --opt nombre_base_de_datos > nombre_base_de_datos.sql
mysql -u root -p UNLOCK TABLES; quit;
Ahora vamos a configurar el Esclavo
-
Como primer paso hay que crear la base de datos que queremos replicar:
-
Una vez que salimos del gestor escribimos el siguiente comando para copiar la base de datos del archivo que generamos:
-
Buscamos el archivo My.cnf (en caso de windows My.ini) y despues del [mysqld]
agregamos lo siguiente: -
Reiniciamos el servicio de MySql (omitir este paso en sistemas Linux)
-
Finalmente entramos a MySql y detenemos el esclavo
-
Una vez que se detuvo el esclavo escribimos lo siguiente con el fin de actualizar la tabla que utiliza el esclavo para replicar
-
Finalmente escribimos START SLAVE
mysql -u root -p CREATE DATABASE base_de_datos; quit;
Nota:
Antes de continuar es necesario que donde hicimos el respaldo o backup de la base de datos en el master copiemos el archivo .sql que se genero y lo peguemos en la maquina que funcionara como esclavo en la unidad c:\.
mysql -u root -p nombre_base_de_datos < c:\nombre_base_de_datos.SQL
server-id=2 master-host=Dirección ip del maestro master-user=slave1 master-password=password master-connect-retry=60 replicate-do-db=nombre_base_de_datos
mysql -u root -p SLAVE STOP;
CHANGE MASTER TO MASTER_HOST='ip_del_master', MASTER_USER='slave1', MASTER_PASSWORD='clave_del_master', MASTER_LOG_FILE='mysql-bin.006', MASTER_LOG_POS=183;
Nota:
En MASTER_LOG_POS va la posicion que nos marco cuando ejecutamos SHOW MASTER STATUS en el paso 7 de la configuracion del master.
Si todo salio bien no queda mas que probar
En el Master vamos insertar un dato en la tabla de nuestra base de datos
En el esclavo hacemos una consulta para verificar que todo salió bien en caso contrario hay que verificar los pasos
Como vemos en la imagen anterior al hacer la consulta tenemos nuestro nuevo dato en la tabla
Con esto damos por concluido este tutorial cualquier duda o sugerencia estamos para servirles
Quizá te interese :
Para realizar la práctica de este tutorial previamente debe de tener instalado y configurado Gn ...
En php es muy fácil realizar consultas para tener acceso a las bases de datos de MySql, para ell ...
Obtener el Diccionario de datos de una Tabla de MySql con C# INFORMATION_SCHEMA MySql guarda l ...


















[...] http://www.ubicuos.com/2010/07/16/replicacion-de-una-base-de-datos-usando-mysql-en-windows-y-linux/ [...]
Ok, mi duda es la siguiente, esta tecnica solo actualiza los esclavos o si hay cambio en los esclavos tambien actualiza al master? y si se pierde la conexion de datos hay alguna manera de integrarlos luego o siempre debe de estar conectado?
Saludos
Hola isa301 ,respondiendo a tu pregunta , solo actualiza los esclavos como lo mencionas ,si haces cambios en alguno de los esclavo el master no se actualiza y respondiendo a tu segunda pregunta siempre tienen que estar en red el master con los servidores ya sea cableada o inalambrica ,y en todo caso si hay manera de integrarlos luego esto es haciendo el paso 9 de la configuracion del master y el paso 2 de la configuracion del esclavo,espero te sirva de algo mi respuesta
ok, entiendo, existe alguna manera de hacer una replicacion en mysql como la replicacion de mezcla de sql server?, a como lo explicas este metodo es excelente y podria decirse que es como la replicacion de transacciones de sql server. Graacias por tus respuestas
ok, ok ya lei nuevamente tu respuesta y pude comprenderla mejor, pero si el paso 9 se hace nuevamente, este actualizara a los esclavos con su misma informacion, y entonces k pasara con la informacion ya guardada o generada en el esclavo?
Perdón por la demora, es que he andado ocupado, mira te explico lo que se hace en el paso 9 de la configuración del master es hacer un Backup (respaldo) de la base de datos tal cual se encuentre en ese momento esto quiere decir que se creara un archivo que contendrá la base de datos con su tablas, campos y todos los datos insertados hasta el momento de hacer el backup , ahora en el paso 2 de la configuración del esclavo ( lee la nota que se encuentra antes del paso 2 de la configuración del esclavo ) lo que se hace en este paso es recuperar la base de datos con sus tablas campos y los datos insertados pero en este caso se estaría reflejando en el esclavo ( previamente debió de haber creado la base de datos como lo indica el paso 1 de la configuración de esclavo), de esta forma obtendrás en el esclavo la base de datos tal cual está en el master a la hora de realizar el backup
Espero esto te haya orientado un poco mas
Excelente artículo me funcionó perfectamente, muy bien descrito, muchas gracias
QUE TAL DIOS TE BENDIGA, TENGO UNA PEQUEÑA DUDA CON RESPECTO A LA REPLICACION DE LA MANERA EN LA QUE LA PRESENTAS YA QUE ME AGRADO MAS QUE OTRAS FORMAS QUE ENCONTRE EN LA WEB, PERO AL REALIZAR Y COMPROBAR SI QUEDO BIEN LA REPLICACION, LOS CAMBIOS QUE REALIZO EN EL MASTER NO SE REFLEJAN EN EL SLAVE AL RPINCIPIO PENSE QUE ERA UN PROBLEMA DE CONECCION PERO NO. ME PUEDES ORIENTAR PARA VER DONDE ESTA MI ERROR AL CONFIGURAR TANTO EL MASTER COMO EL SLAVE?? ES PRIMERA VEZ QUE USO REPLICACION DE BD!!!! GRACIAS POR EL TUTORIAL
ME URGE TU RESPUESTA GRACIAS
DIOS TE BENDIGA
QUE TAL DIOS TE BENDIGA, TENGO UNA PEQUEÑA DUDA CON RESPECTO A LA REPLICACION DE LA MANERA EN LA QUE LA PRESENTAS YA QUE ME AGRADO MAS QUE OTRAS FORMAS QUE ENCONTRE EN LA WEB, PERO AL REALIZAR Y COMPROBAR SI QUEDO BIEN LA REPLICACION, LOS CAMBIOS QUE REALIZO EN EL MASTER NO SE REFLEJAN EN EL SLAVE AL RPINCIPIO PENSE QUE ERA UN PROBLEMA DE CONECCION PERO NO. ME PUEDES ORIENTAR PARA VER DONDE ESTA MI ERROR AL CONFIGURAR TANTO EL MASTER COMO EL SLAVE?? ES PRIMERA VEZ QUE USO REPLICACION DE BD!!!! GRACIAS POR EL TUTORIAL
ME URGE TU RESPUESTA GRACIAS
DIOS TE BENDIGA
Hola, antes que nada gracias por tu comentario ,mira con lo que me proporcionas no puedo identificar el error pero lo que te recomiendo es hacer con calma los pasos del tutorial antes de realizar la configuración del master y del slave comprueba que haya conexión entre las maquinas de las red enviando pings entre ellas esto se hace entrando al símbolo del sistema y escribir el comando ping seguido de la ip de la máquina de la cual se quiere comprobar si hay respuesta ejemplo: ping 169.254.243.176 si hay respuesta es que hay comunicación en caso contrario algo anda mal y eso sería una posible causa , espero haberte ayudado si aun tienes dudas vuelve a preguntar que trataremos de ayudarte.
Nota: también desactiva los firewall.
grassai wn exelente articulo me saque un 7 wn en mi trabajo wn