Telepieza es un mezcla de ayuda, información, opinión, ocio, negocio y diversión, esperamos que todos vosotros os sintaís en vuestra casa.
|
13
03
2008
Replicar bases de datos Mysql en servidores locales o remotosEscrito por: Telepieza en Base_de_Datos Enviar Entrada
Mysql permite replicar bases de datos, dentro de un mismo servidor mysql (en la misma máquina), o entre B.D. localizadas en diferentes servidores en red local o remota. Para poder conseguir replicar uno de los servidores (Servidor M) tiene que ser el maestro y el otro servidor el esclavo (Servidor E).
Cuando indiquemos en el manual Mysql> es porque tenemos que introducir los comandos dentro de la consola de Mysql. Para entrar en la consola introducir el comando : mysql -u root -p Ejemplo del comando en un servidor linux : # /usr/local/mysql/bin/mysql -u root -p (Puede ser diferente la ruta en tu PC) En ese momento el servidor mysql pide el password de root , lo introducimos y se accede a la consola. La replicación de Base de Datos en mysql tiene varias características a considerar y son:
La actualización de la información de la Base de datos Mysql Master (total o parcial de sus tablas), automáticamente Mysql actualiza unos ficheros de datos “mysql-bin.XXXXXX”. Una vez actualizados estos ficheros se envía un evento al servidor con la base de datos Esclava y ésta se comunica con el Servidor Esclavo para recibir la porción del fichero de “mysql-bin.XXXXXX” que le falta; no todo el fichero sino la porción que le falta por tratar solamente (esto se sabe por posiciones tratadas dentro del fichero, nº linea). MENSAJE : Tienda Led Bombillas Led Dicroicas Led Tubos Led Tiras Led CONFIGURACIÓN DEL SERVIDOR MAESTRO MYSQL Debajo de la etiqueta [mysqld] del fichero /etc/my.cnf del maestro añadir las líneas de la B.D. (empresa):
Y reiniciar luego el servicio MySql del Servidor Maestro. Con esto ya es suficiente. CONFIGURACIÓN DEL SERVIDOR ESCLAVO MYSQL 1.- Definir variables globales para el servidor mysql Debajo de la etiqueta [mysqld] del fichero /etc/my.cnf del esclavo añadir las líneas: de la B.D. (empresa)
2.- Definir variables de replicación en el Servidor Esclavo: Mysql>CHANGE MASTER TO;
Al realizar este comando se crea un fichero llamado master.info que luego se puede editar para cambiar estos valores a mano. También se crea el fichero relay-log.info que muestra información de cual es el último archivo absorbido del master, ultima posición leída de este archivo, y log de esta última transferencia. Ejemplo: /usr/local/mysql/data/relay-log.info
Y reiniciar luego el servicio MySql del Servidor Esclavo. Con esto ya es suficiente. 3.- Arrancar el servicio Esclavo El mandato para arrancar el Servicio del Esclavo (E) es : Mysql>START SLAVE ; El mandato para parar el Servicio del Esclavo (E) es : Mysql>STOP SLAVE; Estos comandos sirven para parar o arrancar la replicación en el esclavo, si se para no se replica. Se puede arrancar cuando uno quiera, seguirá por la última posición de replicación que tiene guardada (la última ok), es decir, no se perderían datos aunque el esclavo haya estado 2 horas o más parado, solo que tardará un poco más en absorber toda la información no replicada. DONDE VER LOS ERRORES DE MYSQL En caso de error al arrancar el servidor o pararlo, o bien posibles dudas sobre replicación, se pueden ver los logs de errores en:
Según la máquina COMANDOS IMPORTANTES PARA VER Y CONTROLAR LA REPLICACIÓN 1.- Utilidades del Servidor Maestro Estando dentro del servidor Maestro (M) : Mysql>SHOW MASTER STATUS; El master por cada cambio realizado en la Mysql principal (insert, update, delete) trabaja creando líneas de cambios en un fichero bin. La sentencia SHOW MASTER STATUS : Indica el fichero .bin que está utilizando el master para guardar los cambios actualmente y por que posición va actualmente (línea dentro del fichero). Ejemplo de resultado de SHOW MASTER STATUS/
Estando dentro del servidor Maestro (M) : Mysql> SHOW PROCESSLISTG; Muestra el estado del flujo del servidor que se encarga de enviar al esclavo los ficheros de “mensajes” actualizaciones en la base de datos del maestro. *************************** 10. row ***************************
2.- Utilidades del Servidor Esclavo Estando dentro del servidor Esclavo (E) : Mysql> SHOW SLAVE STATUS; Slave_IO_State: Waiting for master to send event
Si los campos Slave_IO_Running : No y Slave_SQL_Running : No. Por estar el servicio parado en el Servidor Esclavo (E), activar con el mandato : Mysql> START SLAVE; Estando aún dentro del Servidor Esclavo (E) : Mysql> SHOW PROCESSLISTG; El comando enseña para el esclavo los 2 flujos que hay trabajando, en concreto siempre habrá 2, el primero que lee del servidor master (flujo entre máquinas), y el segundo, que coge los datos recibidos y actualiza la base de datos (flujo interno de actualización). El master guarda los cambios en la base de datos en un fichero log, en ciertas posiciones. Cuando hace esto manda un evento al proceso del esclavo. El esclavo recibe el evento y se conecta con el flujo 1 al servidor para recibir el log, una vez recibido el flujo 2 mete la información nueva al mysql propio. *************************** 1. row ***************************
*************************** 2. row ***************************
RESETEAR o PURGAR LOS LOG’S EN EN SERVIDOR MAESTRO
Para inicializa los contadores y borra todos los “mysql-bin” temporales, el mandato es : Mysql> RESET MASTER; Para expirar los registros binarios. Podemos utilizar dicha sentencia después de ejecutar la sentecia : Mysql> PURGE MASTER; En cada uno de los esclavos para determinar qué registros binarios ya no son necesarios. Mysql> SHOW SLAVE STATUS; Saludos de Telepieza Post Revisado a fecha : 29 de Diciembre del 2.008
Artículos Relacionados51 Respuestas a “Replicar bases de datos Mysql en servidores locales o remotos”Deja una Respuesta |
Si desea contactar con telepieza, puede enviar un e-mail a:
telepieza@telepieza.com.
Normas de uso y Politica de privacidad .Telepieza empezó el 20/12/2007 a las 18h (Hora Española).
Ayude a financiar Telepieza en Internet, picando un anuncio de su interes en nuestro Weblog.


Entradas (RSS)
junio 4th, 2008 a las 9:37
Gracias por el tutorial está exelente! yo lo prové en windows y va de maravilla, hace la replicacion perfecta y casi que en tiempo real. pero cuando voy a trabajar en una tabla que contiene un campo blob, la replicacion se cae. que puedo hacer alrespecto ya aumente el max packet size a 1024M pero nada.. espero que me puedas dar una solucion. gracias
junio 4th, 2008 a las 9:55
para ayudarte necesito que me pases el error que da el Mysql.
Saludos
junio 4th, 2008 a las 10:07
uso mysql 4.1
este es el error que me da:
se queda pegado ahi cuando replica un campo blob. solo se corrige si avanza algunas posiciones pero eso no es la idea espero que me ayudes
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.100
Master_User: pc1
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: CESAR-bin.000027
Read_Master_Log_Pos: 1457118
Relay_Log_File: toshiba-relay-bin.000013
Relay_Log_Pos: 722058
Relay_Master_Log_File: CESAR-bin.000027
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 1064
Last_Error: Error ‘You have an error in your SQL syntax; check
the manual that corresponds to your MySQL server version for the right syntax to
use near ‘; SELECT last_insert_id() AS `COD_IMAGEN`’ at line 1′ on query. Defau
lt database: ‘amecsa’. Query: ‘INSERT INTO `amecsa`.`imagenes` (`COD_BOLETA`, `N
OM_IMAGEN`, `IMAGEN`) VALUES (5, ‘yo’, _binary ‘ Ï ß§♠ExifII*\☼☼☺☻
♫┬►☺☻♠ð→☺♣☺Í←☺♣☺Ì(☺♥☺\
0☻yy1☺☻\’µ2☺☻¶♫☺‼☻♥☺☻}}iç♦☺*☺\
0☺ñ♥☺Çü☻ñ♥☺ÇÇ♥ñ♥☺ÇÇ♦ñ♣☺\”☺♠ñ♥☺
~~♀ñ♥☺♥||$☻Sony EricssonK550iH☺H☺\
0R6BC002 prgCXC1250670_CHINA_LI 0.02008:01:17 20:40:07d\
0☼Üé♣☺õ☺Øé♣☺ý☺\’ê♥☺¶☺||É♦0220♥É☻
¶¶☺♦É☻¶\☻☺æ♦☺☻♥♦Æ
☺∟☻Æ♥☺☻pÆ♥☺uu Æ♥☺ssá♦0100☺á♥
☺☺}Ç☻á♦☺╚♦\
Skip_Counter: 0
Exec_Master_Log_Pos: 721757
Relay_Log_Space: 1457419
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
1 row in set (0.00 sec)
ERROR:
No query specified
junio 4th, 2008 a las 11:58
He leído un montón sobre el error 1064 y las posibles causas son :
1.- Valor en negativo en el campo LIMIT
2.- Las versiones MySQL no soportan la replicación de dicho campo
3.- Problema en el tipo de motor a replicar MyISAM o INNODB
4.- Parámetros en la configuración de la B.D. o .ini
Para poderte ayudar tendría que realizar un banco de pruebas y es mejor que los expertos en MySQL te aconsejen por estar ellos todos los días en esas historias.
Ves al forum http://forums.mysql.com que por cierto son magníficos y te contestarán a la primera.
junio 6th, 2008 a las 1:29
E-mail de Cesar a Telepieza :
Muy agradecido con tu ayuda, más bien me respondiste de una forma muy rápida!! Y te lo agradezco. Actualicé de la versión 4.1.9-nt a la versión 4.1.22 comunity-nt y ya no me da problemas. Los campos blob se replican ahora sin problemas lo uso para fotografías. Aunque meditaré pasarme a la 5.1
Gracias!
julio 8th, 2008 a las 8:44
[...] * Replicar bases de datos Mysql en servidores locales o remotos [...]
septiembre 5th, 2008 a las 0:32
Hola….he leido co mucha atencion el tema de la replicacion esta excelente, ahora….una pregunta…cuando se replica tambien lo hacen los procedimientos almacenados y los trigger???
septiembre 5th, 2008 a las 11:05
la replicación son sólo datos y se sustenta con ficheros binarios y desde el momento que lo configuras en los ficheros de configuración del MySql. Según lo expuesto al ser sólo datos, los procedimientos almacenados y trigger no se replican …………….
abril 30th, 2009 a las 8:51
Hola, excelente el tutorial, lo probé con mysql 5, en servidores ubuntu y funciona a la perfección. La duda que tengo es la siguiente:
- Si mi servidor M cae por x razón, puedo detener el servidor S como slave e iniciar como servicio normal para que sirva como servidor maestro a la hora de servir datos a una aplicacion?
Gracias
mayo 4th, 2009 a las 18:43
Si puedes, pero recuerda que las dos bases de datos están sincronizadas mediante la replicación de los ficheros bin, si por algún motivo se para el master y arrancas el slave como master, después tienes que volver a sincronizar las dos bases de datos (Realizar una copia de seguridad de la slave a la Master) y empezar de nuevo la replicación.
junio 2nd, 2009 a las 8:43
Saludos he leido sobre el tema, ahora observo que dices que solo el servidor m es el que puede modificar los datos(insert,update,delete), resulta que necesito hacer eso en los dos, pues en uno de los servidores se tendra informacion pertinente a una zona(Slave) y en el otro (Master) sera la central, es decir es una agencia con sucursales y pues en la agencia central se manipulan datos tambien en la misma base de datos pero propios de dicha agencia, y la de las sucursales se le agregan a la misma base de datos pero con identificadores de cada agencia para direfenciarlos, como podria solucionar eso, segun leo esto no me serviria para eso o me equivoco..
De antemano muchas gracias
junio 2nd, 2009 a las 9:50
Una cosa es lo que tu necesitas y otra es lo que hace la replicación MySql. La replicación MySql es UNIDIRECCIONAL, eso significa que va desde el Master (M) al Slave (S). MAESTRO —> ESCLAVO. Si quieres grabar en los Slave como indicas es posible, pero tienes que hacerlo en tablas que no se replican y después en procesos nocturnos tienes que ejecutar un programa para insertar dichos registros al MASTER. Cuando realizas la grabación al Master, al ser tablas que no se replican , el proceso de replicación no te duplicara la información al SLAVE. En el manual se explica muy bien la configuración de tablas para replicar y no replicar entre el MASTER y EL SLAVE. (SUERTE).
junio 14th, 2009 a las 1:53
Hola!
Muy buen tutorial.
Un par de dudas:
- ¿Es posible que la replicación sea un proceso automático? Por ejemplo, si quiero que se haga una replicación de cierta tabla todos los días a las 22:00 horas, es esto posible? Hay alguna forma de programar la replicación?
- En mi caso la base de datos “maestra” no es MySQL, está alojada en un servidor remoto y accedo por ODBC. La base de datos donde quiero que se repliquen los datos, sí es MySQL. Si la maestra no es MySQL, cómo se haría la réplica?
Muchas gracias por vuestra ayuda!
Marta
junio 14th, 2009 a las 11:23
Vamos por partes, a tú primera pregunta, es muy sencilla, si quieres que se repliquen a las 10 de la noche, simplemente activa el servicio en el SLAVE (START SLAVE ) a dicha hora y el MASTER enviará la información de forma automática al SLAVE por estar el servicio activo, Lo que tienes que hacer es activar el SLAVE con el comando (START SLAVE) para replicar o parar el servicio del SLAVE con el comando (STOP SLAVE.). Tu segunda pregunta es aún más sencilla, simplemente pasa la información de tu base de datos no MySQL a una hora determinada a la Base de Datos MySQL siendo por supuerto la MASTER con la técnica ODBC y una vez grabada la información, cuando el SLAVE tenga activo la recepción de datos con el comando START SLAVE se replicará de forma automática.
julio 10th, 2009 a las 0:52
Y COMO SE CONFIGURA CON WINDOWS XP EN LOCAL Y WINDOWS SERVER EN MAESTRO
septiembre 3rd, 2009 a las 17:28
Hola, con respecto a esto como puedo definir :
1.- el tiempo de replica de un servidor a otro, porque el valor Seconds_Behind_Master: NULL me aparece , y quiero que se repliquen los datos cada una hora
2.- En el directorio var del esclavo se generan muchos archivos *relay*, cuando la replica se cae, como puedo sincronizar el esclavo – maestro
He intentando
Segun:
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting to reconnect after a failed master event read
Master_Host: 146.155.98.131
Master_User: repl
Master_Port: 3307
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 4
Relay_Log_File: miguelm-relay-bin.000009
Relay_Log_Pos: 235
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 1062
Last_Error: Error ‘Duplicate entry ’42493′ for key 1′ on query. Default database: ‘rtdb’. Query: ‘INSERT INTO `Transactions` VALUES (42493,2782,0,’EmailRecord’,NULL,NULL,NULL,”,1,’2007-04-06 04:35:12′,’RT::Ticket’,NULL,NULL,NULL),(42494,12133,0,’Create’,NULL,NULL,NULL,NULL,1,’2007-04-06 05:37:43′,’RT::Group’,NULL,NULL,NULL),(42495,12132,0,’Create’,NULL,NULL,NULL,NULL,1,’2007-04-06 05:37:43′,’RT::User’,NULL,NULL,NULL),(42496,12134,0,’Create’,NULL,NULL,NULL,NULL,12132,’2007-04-06 05:37:43′,’RT::Group’,NULL,NULL,NULL),(42497,12135,0,’Create’,NULL,NULL,NULL,NULL,12132,’2007-04-06 05:37:44′,’RT::Group’,NULL,NULL,NULL),(42498,12136,0,’Create’,NULL,NULL,NULL,NULL,12132,’2007-04-06 05:37:44′,’RT::Group’,NULL,NULL,NULL),(42499,12137,0,’Create’,NULL,NULL,NULL,NULL,12132,’2007-04-06 05:37:44′,’RT::Group’,NULL,NULL,NULL),(42500,2783,0,’Create’,NULL,NULL,NULL,NULL,12132,’2007-04-06 05:37:44′,’RT::Ticket’,NULL,NULL,NULL),(42501,2783,0,’EmailRecord’,NULL,
Skip_Counter: 0
Exec_Master_Log_Pos: 98
Relay_Log_Space: 116387242
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
1 row in set (0.01 sec)
CHANGE MASTER TO RELAY_LOG_FILE=’/datdes_loc/mysql-5.0.41-replicas/var/miguelm-relay-bin.000009′,RELAY_LOG_POS=235;
START SLAVE SQL_THREAD;
Pero no levanta la replicacion.
De antemano muchas gracias,
septiembre 3rd, 2009 a las 18:09
El mensaje es muy claro, tienes un error de clave duplicada cuando intenta el insert en la tabla transaction en el SLAVE, para poder solucionar el problema tienes que ir al slave y borrar el registro duplicado (Last_Error: Error ‘Duplicate entry ‘42493′ for key 1′) , por dicho motivo el servicio de duplicación se para. El porqué de clave duplicada. eso es por temas de tu aplicación o software, y no de la replicación de datos entre un MASTER y un SLAVE.
Saludos.
septiembre 3rd, 2009 a las 20:38
gracias, por la pronta respuesta.!!
y como sincronizo los datos del slave con el master.? para no perder los datos que se han actualizado mientras el slave ha estado abajo?
y con respecto al punto uno.?
1.- el tiempo de replica de un servidor a otro, porque el valor Seconds_Behind_Master: NULL me aparece , y quiero que se repliquen los datos cada una hora.
gracias,
septiembre 3rd, 2009 a las 23:46
Si borras el registro ya existente en la Base de datos y arrancas el Slave, de forma automática se sincronizarán las bases de datos. La sincronización va por ficheros binarios y cuando se graban en el Slave se dan como termiandos. Por dicho motivo te indico que borres el registro en la base de datos, para que el proceso de duplicación siga donde te ha dado el error, Para duplicar cada hora, lo que tienes que hacer es arrancar el servicio de duplicación en el SLAVE cada hora, y pararlo al cabo de 15 minutos mediante un CRON, si tienes un LINUX o una TAREA de Trabajo si tienes un Windows.
octubre 27th, 2009 a las 2:05
Estube probando la replicacion de la Base Maestro (IP:192.168.254.12)a la Base Esclavo (IP:192.168.254.60), tengo el problema que lo dejo trabajando pero mas tarde deje de replicar y utilizo el show slave status, y me muestra un error:
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.254.12
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 268886
Relay_Log_File: mysqld-relay-bin.000003
Relay_Log_Pos: 154145
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table: baca.orden_trabajo,baca.cliente,baca.orden_trabajo,baca.cliente
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 1146
Last_Error: Error ‘Table ‘baca.nx’ doesn’t exist’ on query. Default database: ‘baca’. Query: ‘UPDATE orden_trabajo set temp1=’NO’ where num_orden in (select * from nx)’
Skip_Counter: 0
Exec_Master_Log_Pos: 154008
Relay_Log_Space: 269710
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
1 row in set (0.00 sec)
ERROR:
No query specified
mysql> show processlist \G;
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 804
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 4
User: root
Host: localhost
db: NULL
Command: Sleep
Time: 705
State:
Info: NULL
*************************** 3. row ***************************
Id: 6
User: root
Host: localhost
db: baca
Command: Query
Time: 0
State: NULL
Info: show processlist
3 rows in set (0.00 sec)
ERROR:
No query specified
mysql> show master status \G;
*************************** 1. row ***************************
File: mysql-bin.000001
Position: 34238
Binlog_Do_DB: baca,baca
Binlog_Ignore_DB:
1 row in set (0.00 sec)
ERROR:
No query specified
SI ALGUIEN ME PUEDE AYUDAR POR FAVOR, GRACIAS
octubre 27th, 2009 a las 2:37
Para poder replicar las dos bases de datos tienen que ser identicas, en tu caso, da un error la tabla baca.nx indicando que no existe. Tienes que comprobar que dichas bases de datos sean iguales,
Tu Mensaje de Error :
Last_Error: Error ‘Table ‘baca.nx’ doesn’t exist’ on query. Default database: ‘baca’. Query: ‘UPDATE orden_trabajo set temp1=’NO’ where num_orden in (select * from nx)’
Skip_Counter: 0
octubre 29th, 2009 a las 19:26
Hola, segui paso a paso todas las instrucciones pero al hacer show slave status me sale esta inf
Slave_IO_State: waiting to reconnect after a failed master event read
Master_Host: 10.31.69.12
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: binary.000001
Read_Master_Log_Pos: 98
Relay_Log_File: mysqld-relay-bin.000001
Relay_Log_Pos: 154145
Relay_Master_Log_File: binary.000001
Slave_IO_Running: No
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 98
Relay_Log_Space: 98
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
1 row in set (0.02 sec)
ERROR:
No query specified
Alguien sabe posibles formas de resolver esto?
octubre 29th, 2009 a las 20:29
Segun lo que veo, el master intenta enviar un registro (1 row in set (0.02 sec) y el esclavo no lo entiende, mi consejo es que pares el servicio de replicación y reinicies los ficheros bin de replicación, entiendo que te debe de funcionar a la primera sin problemas.
febrero 1st, 2010 a las 17:52
Buenos Dias..! necesito tu ayuda..
Estoy intentando implementar la replicacion bajo windows vista tanto en el master como en el Slave con mysql5, pero mi problema es que al hacer un cambio en el maestro no se reflejan en el esclavo… Aparentemente tanto el master como el slave estan sincronizados pero no se como buscar cual es el problema… Alguna idea??
Espero me puedas contestar lo mas pronto..
Gracias!!!
febrero 4th, 2010 a las 11:13
Cuando arrancas el Master y el Slave, el sistema en la carpeta de MySql, te genera un fichero de error, para poder ayudarte necesito que me envíes dicho fichero o la parte que da el error.
mayo 6th, 2010 a las 0:36
Hola me parece muy bueno el blog y ya hace un tiempo mediante la informacion que aqui proporcionan realice una practica de replicacion la cual fue exitosa. En este momento que he querido volver a implementar replicacion se me ha presentado un problema el cual muestra el siguiente mensaje:
Fatal error: The SLAVE I/O thread stops because MASTER AND SLAVE have equal MySQL SERVER ids; these ids must be different FOR REPLICATION TO WORK (OR the –replicate-same-SERVER-id OPTION must be used ON SLAVE but this does NOT always make sense; please CHECK the manual BEFORE USING it).
Quisiera saber si alguien sabe a que se debe.. Los ids tanto en el servidor y en el cliente son diferentes por lo q no me explico que pueda estar pasando…
Si pueden ayudarme muchas Gracias!!
mayo 6th, 2010 a las 1:25
La replicación se realiza mediante ficheros binarios, te indica que tienes el mismo número tanto en el Master como en el Slave. Te ha pasado algo en algún ordenador. Antes de solucionar el problema tienes que saber que te ha pasado con las Bases de Datos. Cuando lo sepas paras los servicios se SLAVE y MASTER y vuelve a arrancar el servicio de replicación.
mayo 6th, 2010 a las 1:51
Correcto eso es lo que indica el error pero estoy segura de q tanto en el slave como en el master tienen diferentes ids. Para comprobarlo use en cada servidor SHOW VARIABLES LIKE ‘server_id’ la misma devuelve los ids de cada servidor y puedo ver q son diferentes. Este error me aparace en el lado del master.. tienes alguna idea de como saber si le paso algo a mi base de datos??
mayo 6th, 2010 a las 11:13
Necesito que me envies los log de los errores a la dirección : mariano@telepieza.com, sin eso no te puedo ayudar, una cosa son los log de la replicación y otra los log de los errores, mira en enviar dicha información para que yo pueda descubrir cual es el error que hace no replicar la Base de Datos.
mayo 6th, 2010 a las 15:57
Hola Mariano… Ya envie a la direccion que indicas el log de errores..
Te agradezco x la ayuda!!
mayo 6th, 2010 a las 17:45
Los miro y te digo algo. saludos
mayo 19th, 2010 a las 15:09
Buenos dias primera vez que voy a replicar bases de datos mysql en donde trabajo tenemos la version 4.1.21, me podrian dar unos tips para replicar estas bases de datos y como es el procedimiento para hacerlo de manera remota,
saludos cordiales
mayo 20th, 2010 a las 10:15
La replicación de B.D. empieza a funcionar a partir de la Versión 5, te recomiendo que pases a dicha versión.
septiembre 15th, 2010 a las 4:17
hola esta muy bueno el tutorial yo lo implemente sin problemas gracias a este tutorial pero tengo una consulta para hacer yo necesito replicar mas de una db puntualmente 3 bases de datos del master al slave como seria la implementacion en este caso?
puedo hacer esto?
replicate-do-db = db1;db2;db3
o tengo que escribir todas las lineas para cada db?
log-bin=mysql-bin #Nombre de los ficheros transmitidos entre servidores
server-id = 1 #Id del servidor (Diferente nº que todos los esclavos)
replicate-do-db = empresa # Base de datos a replicar
replicate-ignore-table = empresa.tabla1 # Tabla1 a no replicar
replicate-ignore-table = empresa.tabla2 # Tabla2 a no replicar
binlog-do-db=empresa # Base de datos a crear logs únicamente
gracias diego
febrero 3rd, 2011 a las 19:59
Hola como estas exelente articulo ,gracias por compartir
una pregunta , yo necesito replicar una tabla pero no todos los campos de esa tabla , estube buscando en la documentacion de mysql pero no hubo caso,
Tenes idea si se puede llegar a hacer ?
Saludos y muchas gracias
mayo 7th, 2011 a las 11:59
te aconsejo que la tabla la dividas en dos tablas, una para su replicación y la otra no, las replicaciones se realizan por tablas enterar.
junio 20th, 2011 a las 17:49
Que tal, solo como comentario….. el tutorial está bueno pero no incluye los problemas a los que te puedes enfrentar….. por eso tantos comments con preguntas…
Para todos…. si te marca NO en donde debe decir YES ya que checaste con “SHOW SLAVE STATUS \G;” lo más probable es q no se sincronizan los logs ya que el log del master está creciendo… esto pasa, por lo que he visto en experiencia propia, porque el log de mysql del server crece cuando modifican CUALQUIER base de datos… no solo la que queremos replicar…. aunque se especifica qué Base de datos se quiere replicar, mysql hace eso…. entonces, se tienen q ignorar todas las demás bases de datos…. y ya no habrá problema alguno… despues de hacer esto y reiniciar los mysql’s ya se podrá sincronizar la info del master que sale con “SHOW MASTER STATUS;” con el esclavo…
A penas tenga tiempo haré un tuto detallado explicando las broncas tambien para que más que comments con dudas solo haiga agradecimientos
… suerte a todos… como en 1 semana pueden buscarlo como Réplica MySQL Le Micke
julio 20th, 2011 a las 14:42
LeMICKE y como especificas ignoarar una bd, aca muestra como ignoarar tabalas de una bd, pero no la BD en si.. cual seria ese comando???… Mi problema esta en:
Slave_IO_Running: No
El master lo tengo en un XP y el Sclavo en un Linux, puede esto influenciar???
Best tutorial
agosto 9th, 2011 a las 0:19
Saludos,
Una pregunta, el mismo tratamiento se da si en una BD tengo tablas con motores distintos: MyISAM e InnoDB. Por favor sacame de esa duda. porque necesito hacer esto y tengo esa mezcla de motores de almacenamiento.
Gracias de antemano!
agosto 13th, 2011 a las 12:41
Según la documentación, el traspaso de datos se realiza mediante ficheros binarios, eso significa que no importa el tipo de motor que estas utilizando.
febrero 9th, 2012 a las 7:44
[...] http://www.telepieza.com/wordpress/2008/03/13/replicar-bases-de-datos-mysql-en-servidores-locales-o-... Share this:TwitterFacebookMe gusta:Me gustaSé el primero en decir que te gusta esta post. [...]
febrero 13th, 2012 a las 7:05
¡Hola a todos!
Estoy empezando a documentarme sobre bases de datos distribuidas y se que la distribución en MySql es unidireccional.
Pero he leído en un libro sobre MySQL que puedo tener dos maestros sincronizados entre sí del que cuelguen varios esclavos ¿Es posible esto?
febrero 13th, 2012 a las 9:33
Al ser unidireccional la respuesta es que no es posible tener dos MASTER a la vez, los que se puede tener es un MASTER y muchos SLAVE, pero no DOS MASTER.
marzo 2nd, 2012 a las 3:52
Una consulta si tengo una sucursal y quiero que la misma empiece el dia con todo lo del master, conviene usar una replicacion a determinada hora, o es mejor y mas seguro hacer un dump en el servidor y que la sucursal antes de arrancar levante ese dump ?? Obviamete previamente deberia mandar los movimientos realizados localmente para no perderse.
O hay alguna forma mas recomendable ??, gracias
mayo 15th, 2012 a las 19:14
Te aconsejo que las dos bases de datos sean iguales , con un dump es más que suficiente y después ya puedes replicar
junio 14th, 2012 a las 1:42
buen material gracias…mi consulta es si al reiniciar los server mysql la configuración queda grabada? me paso que funciono todo ok el primer dia , al otro dia no replicaba nada… quedo sólo en la cache.
atte
MM
junio 14th, 2012 a las 23:15
excelente tutorial preciso, muchas gracias
julio 4th, 2012 a las 20:13
Holas, ¿Es posible replicar con el MASTER en XP y el SLAVE en linux usando la distro 5.1 de MySQL?, Salu2 y gracias por la valiosa info que comparten.
julio 4th, 2012 a las 22:02
Si es posible, no tiene nada que ver los diferentes sistemas operativos, la respuesta es SI.
julio 18th, 2012 a las 17:01
Slave!!!! no slaver!!!
julio 18th, 2012 a las 18:26
it’s ok, Slave!!!!