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

julio 16 20107 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

Comparte esta informaci贸n:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • LinkedIn
  • Technorati
  • TwitThis

Quiz谩 te interese :

Acerca del autor: Lisandro Vergara Diaz

7 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

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

-->