Ir al contenido



Foto

replicacion master-master


  • Por favor identifícate para responder
2 respuestas en este tema

#1 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.231 mensajes
  • LocationArgentina

Escrito 28 diciembre 2018 - 08:50

Buenos días, inicio este hilo como un intento desesperado por aprender a hacer replicación como corresponde.

 

Tengo dos equipos, en un cliente de la empresa donde trabajo, en la misma LAN, ambos con IP fija supuestamente. Uno es llamado Original, y el otro es Suplente.

A modo de práctica, hay instalado un equipo en mi lugar de trabajo y tengo mi notebook. Ambos serán la simulación de "suplente" y "original" respectivamente.

 

 

Tengo entendido que MySQL no ofrece por defecto replicación master-master, y que por tanto debe realizarse la configuración master-slave en las dos vías.

He seguido esto:

http://codigoxules.o...lave-con-mysql/

 

No tan al pie de la letra, como por ejemplo no cambiar el bin-address porque al cambiarlo con la IP (que son dinámicas, tanto en el equipo de prueba como el mio) no me dejaba hacer conexiones localhost.

Y como la configuración es a dos vías, puse relay-log en ambos equipos.

Para probar, al menos, creería que no debiera de haber problemas que las IP sean dinámicas. Lo importante es que en la LAN del cliente si esté fija.

 

Deshabilité los puertos entrada y salida 3306 en el firewall también (en ambos equipos) pensando en que tal vez sea necesario, hago ping perfectamente, y lo máximo que he conseguido es que la replicación funcione desde el equipo hacia mi PC, y no desde mi PC hacia el equipo.  NOTA: los pasos se siguieron asumiendo que el "equipo1" sea el mio. Es decir, que todos los pasos se siguieron tomando como punto de partida desde mi PC.

 

Antes había leído otros manuales:

https://www.digitalo...ter-replication

https://docs.bluehos...r-en-mysql.html

 

Y hasta había visto unos videos. Como este:

 

Cada manual tiene sus diferencias, y la verdad es que ando mareado, en cual confiar, para configurar adecudamente. Acudo a ustedes que son los maestros y que me brinden alguna referencia más segura para seguir.

 

Adjunto lo que me dice el show slave status \G tanto de mi equipo alias "Original", como el "suplente" de práctica. Por si sirve de ayuda para comprender el lio que me estoy dando.

 

Original:


delphi
  1. mysql> show slave status \G;
  2. *************************** 1. row ***************************
  3. Slave_IO_State: Waiting for master to send event
  4. Master_Host: 192.168.100.39
  5. Master_User: replicador
  6. Master_Port: 3306
  7. Connect_Retry: 60
  8. Master_Log_File: mysql-bin.000003
  9. Read_Master_Log_Pos: 1241
  10. Relay_Log_File: mysql-relay-bin.000006
  11. Relay_Log_Pos: 1454
  12. Relay_Master_Log_File: mysql-bin.000003
  13. Slave_IO_Running: Yes
  14. Slave_SQL_Running: Yes
  15. Replicate_Do_DB:
  16. Replicate_Ignore_DB:
  17. Replicate_Do_Table:
  18. Replicate_Ignore_Table:
  19. Replicate_Wild_Do_Table:
  20. Replicate_Wild_Ignore_Table:
  21. Last_Errno: 0
  22. Last_Error:
  23. Skip_Counter: 0
  24. Exec_Master_Log_Pos: 1241
  25. Relay_Log_Space: 1874
  26. Until_Condition: None
  27. Until_Log_File:
  28. Until_Log_Pos: 0
  29. Master_SSL_Allowed: No
  30. Master_SSL_CA_File:
  31. Master_SSL_CA_Path:
  32. Master_SSL_Cert:
  33. Master_SSL_Cipher:
  34. Master_SSL_Key:
  35. Seconds_Behind_Master: 0
  36. Master_SSL_Verify_Server_Cert: No
  37. Last_IO_Errno: 0
  38. Last_IO_Error:
  39. Last_SQL_Errno: 0
  40. Last_SQL_Error:
  41. Replicate_Ignore_Server_Ids:
  42. Master_Server_Id: 2
  43. Master_UUID: 3e8f5870-c0d1-11e8-9448-40e230af11f6
  44. Master_Info_File: c:\wamp64\bin\mysql\mysql5.7.21\data\master.info
  45. SQL_Delay: 0
  46. SQL_Remaining_Delay: NULL
  47. Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
  48. Master_Retry_Count: 86400
  49. Master_Bind:
  50. Last_IO_Error_Timestamp:
  51. Last_SQL_Error_Timestamp:
  52. Master_SSL_Crl:
  53. Master_SSL_Crlpath:
  54. Retrieved_Gtid_Set:
  55. Executed_Gtid_Set:
  56. Auto_Position: 0
  57. Replicate_Rewrite_DB:
  58. Channel_Name:
  59. Master_TLS_Version:
  60. 1 row in set (0.00 sec)
  61.  
  62. ERROR:
  63. No query specified
  64.  
  65. mysql>

Suplente:


php
  1. *************************** 1. row ***************************
  2. Slave_IO_State: Waiting for master to send event
  3. Master_Host: 192.168.100.146
  4. Master_User: replicador
  5. Master_Port: 3306
  6. Connect_Retry: 60
  7. Master_Log_File: mysql-bin.000004
  8. Read_Master_Log_Pos: 1406
  9. Relay_Log_File: mysql-relay-bin.000006
  10. Relay_Log_Pos: 978
  11. Relay_Master_Log_File: mysql-bin.000002
  12. Slave_IO_Running: Yes
  13. Slave_SQL_Running: No
  14. Replicate_Do_DB:
  15. Replicate_Ignore_DB:
  16. Replicate_Do_Table:
  17. Replicate_Ignore_Table:
  18. Replicate_Wild_Do_Table:
  19. Replicate_Wild_Ignore_Table:
  20. Last_Errno: 1050
  21. Last_Error: Error 'Table 'tabla1' already exists' on query. D
  22. efault database: 'testrep'. Query: 'CREATE TABLE `testrep`.`tabla1` ( `id` INT(2
  23. ) NOT NULL , `nombre` VARCHAR(5) NOT NULL ) ENGINE = MyISAM'
  24. Skip_Counter: 0
  25. Exec_Master_Log_Pos: 765
  26. Relay_Log_Space: 5057
  27. Until_Condition: None
  28. Until_Log_File:
  29. Until_Log_Pos: 0
  30. Master_SSL_Allowed: No
  31. Master_SSL_CA_File:
  32. Master_SSL_CA_Path:
  33. Master_SSL_Cert:
  34. Master_SSL_Cipher:
  35. Master_SSL_Key:
  36. Seconds_Behind_Master: NULL
  37. Master_SSL_Verify_Server_Cert: No
  38. Last_IO_Errno: 0
  39. Last_IO_Error:
  40. Last_SQL_Errno: 1050
  41. Last_SQL_Error: Error 'Table 'tabla1' already exists' on query. D
  42. efault database: 'testrep'. Query: 'CREATE TABLE `testrep`.`tabla1` ( `id` INT(2
  43. ) NOT NULL , `nombre` VARCHAR(5) NOT NULL ) ENGINE = MyISAM'
  44. Replicate_Ignore_Server_Ids:
  45. Master_Server_Id: 1
  46. Master_UUID: 8293291a-92c2-11e8-bda8-5404a61727ee
  47. Master_Info_File: c:\wamp64\bin\mysql\mysql5.7.14\data\master.info
  48. SQL_Delay: 0
  49. SQL_Remaining_Delay: NULL
  50. Slave_SQL_Running_State:
  51. Master_Retry_Count: 86400
  52. Master_Bind:
  53. Last_IO_Error_Timestamp:
  54. Last_SQL_Error_Timestamp: 181228 11:13:37
  55. Master_SSL_Crl:
  56. Master_SSL_Crlpath:
  57. Retrieved_Gtid_Set:
  58. Executed_Gtid_Set:
  59. Auto_Position: 0
  60. Replicate_Rewrite_DB:
  61. Channel_Name:
  62. Master_TLS_Version:
  63. 1 row in set (0.00 sec)
  64.  
  65. ERROR:
  66. No query specified
  67.  
  68. mysql>

Pueden ver que slave_sql_running me dice NO. ¿Que tengo que hacer?

 

Y esto es lo que, actualmente, me dice el master en Original:


delphi
  1. mysql> show master status;
  2. +------------------+----------+--------------+------------------+-------------------+
  3. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
  4. +------------------+----------+--------------+------------------+-------------------+
  5. | mysql-bin.000004 | 1406 | testrep | | |
  6. +------------------+----------+--------------+------------------+-------------------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql>

Y en suplente figura en cambio un 000003 y posición 1241.

 

¿Cómo he probado la replicación? Pues, yo cree en mi equipo la DB y luego la importé (dispongo de mysqlmyadmin en ambos equipos) en el suplente.

Luego hice unos inserts en tabla1 y estos no se reflejan en suplente. Pero he aquí, que si hago un insert desde el suplente si se reflejan los cambios en mi equipo.

 

Soy consciente de que en un ambiente real hay que tener configurado un buen sistema de auto increment y de offset. Pero al menos para practicar estamos bien así. Ya me urge aprenderlo bien, porque necesitamos realizar "para ayer" esto en el cliente. Llevo ya una semana con esto, y hoy recién logré parcialmente funcionar... la semana pasada a pesar de hacer ping, ni siquiera había podido hacer ninguna replicación (aunque fue siguiendo el video y esos dos manuales que puse antes)

 

Les agradecería un buen norte.

 

Saludos,


  • 0

#2 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.231 mensajes
  • LocationArgentina

Escrito 28 diciembre 2018 - 10:01

No he contemplado la posibilidad de un conflicto de versión. En mi notebook tengo Mysql 5.7.21 mientras que el otro equipo es 5.7.14. ¿Es realmente necesario que ambos equipos sean iguales?


  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.919 mensajes
  • LocationMéxico

Escrito 28 diciembre 2018 - 05:32

Ay caramba!!!

 

Esas son cosas que no he explorado amigo pero voy a poner una notificación al tema para aprender de esto, es muy interesante. (y)

 

Saludos


  • 0