Replicación de una Base De Datos usando MySql en Windows y Linux

julio 16 201011 comentarios

Guardado en : Microsoft, Programación, Software Libre, Ubicuos

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:

  1. Buscar y abrir el archivo My.cnf (My.ini en sistemas Windows)

  2. En Windows se encuentra en: c:\Archivos de Programa\MySQL\MySQL Server 5.1\
    En Sistemas Linux se encuentra: /etc/my.cnf

  3. Buscar y comentar las siguientes lineas si es que se encuentran:

  4.  #skip-networking
    #bind-address = 127.0.0.1
  5. Agregar despues de la linea [mysqld] lo siguiente:

  6. 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 = .

  7. Entramos a los servicios en Windows y reiniciamos el servicio de MySql (omitir este paso en sistemas Linux)

  8. Entramos en MySql escribiendo en la linea de comandos lo siguiente:

  9. mysql -u root -p
  10. Ahora en el shell de mysql escribir:

  11. 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.

  12. Una vez esto seleccione la base de datos a replicar y realice lo siguiente:

  13. USE nombre_base_datos;
    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;

    Después de esto el gestor mostrará lo siguiente:

  14. Salir de MySql utilizando el comando quit o exit

  15. 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:

  16. mysqldump -u root -p --opt nombre_base_de_datos > nombre_base_de_datos.sql
  17. Finalmente desbloqueamos las tablas de la base de Datos

  18. mysql -u root -p
    UNLOCK TABLES;
    quit;

Ahora vamos a configurar el Esclavo

  1. Como primer paso hay que crear la base de datos que queremos replicar:

  2. 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:\.

  3. Una vez que salimos del gestor escribimos el siguiente comando para copiar la base de datos del archivo que generamos:

  4. mysql -u root -p  nombre_base_de_datos < c:\nombre_base_de_datos.SQL

  5. Buscamos el archivo My.cnf (en caso de windows My.ini) y despues del [mysqld]
    agregamos lo siguiente:

  6. 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

  7. Reiniciamos el servicio de MySql (omitir este paso en sistemas Linux)

  8. Finalmente entramos a MySql y detenemos el esclavo

  9. mysql -u root -p
    SLAVE STOP;
  10. Una vez que se detuvo el esclavo escribimos lo siguiente con el fin de actualizar la tabla que utiliza el esclavo para replicar

  11. 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.

  12. Finalmente escribimos START SLAVE

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 :

Acerca del autor:

Soy un chavo de 22 años ,estoy en la última etapa de mi carrera (Ingeniería en sistemas computacionales) mi objetivo profesional es desarrollar mi creatividad y poner en acción todos los conocimientos que he adquirido dentro y fuera de mi carrera, así mismo pretendo desarrollar mis habilidades técnicas y adquirir experiencia, integrando mis conocimientos, valores y habilidades para desarrollar mi trabajo con la mayor eficiencia y eficacia posible, y darle un valor agregado a mi trabajo, dando lo mejor de mí en mis labores.

11 Respuestas a “Replicación de una Base De Datos usando MySql en Windows y Linux”

  1. isa301 dice:

    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

  2. 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

  3. isa301 dice:

    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

  4. isa301 dice:

    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?

  5. 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

  6. Juan Diego dice:

    Excelente artículo me funcionó perfectamente, muy bien descrito, muchas gracias

  7. EMANUEL dice:

    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

  8. 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

  9. 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.

  10. alex dice:

    grassai wn exelente articulo me saque un 7 wn en mi trabajo wn

Deja un comentario


Licencia y uso

Las técnicas demostradas en los tutoriales pueden ser utilizadas sin ninguna limitación y tampoco es obligatorio dar una atribución.


Los textos, imágenes y tutoriales son propiedad de sus respectivos autores, nuestro contenido se encuentra bajo licencia Creative Commons Share-Alike.

Escribe algo para el sitio

El escribir un tutorial o un artículo, mandarnos un enlace para Ubicuos, no solamente es una forma de obtener publicidad, si no también de dar algo a la comunidad y nosotros te lo recompensamos con los premios del mes! Leer más de nuestras promociones

¿Sugerencias?

Este es TU sitio, si tienes sugerencias o ideas de cómo podemos mejorarlo para ti, ¡Por favor háznoslos saber!

Hacemos nuestro mayor esfuerzo en proporcionar un sitio útil y amigable y esperamos que disfrutes tu tiempo aquí.

Ayuda a Difundir

Te gusta Ubicuos?

Ve las formas en que nos puedes apoyar.

Apoyando a Ubicuos.com

Submit your linkClose

-->