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 ...
Obtener el Diccionario de datos de una Tabla de MySql con C# INFORMATION_SCHEMA MySql guarda l ...
MySQL anuncia una versi贸n con importantes mejoras para la semana que viene","Sun ha anunciado un ...















[...] 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