Mostrando las entradas con la etiqueta cursos. Mostrar todas las entradas
Mostrando las entradas con la etiqueta cursos. Mostrar todas las entradas

24 de febrero de 2011

Replicación semisíncrona en MySQL bajo Windows

La replicación en MySQL por defecto es asíncrona (dejando a un lado MySQL Cluster). El servidor maestro actualiza sus bases de datos replicadas y escribe los eventos en el log binario sin preocuparse del estado en el que se encuentren los servidores esclavos o si estos han procesado dichos eventos correctamente. 
Sin embargo MySQL 5.5 si que nos proporciona una interface para utilizar replicaciones semisíncronas. Este es su funcionamiento:
  • Si el maestro tiene activado el modo semisíncrono y hay al menos un esclavo también semisíncrono, el servidor maestro espera confirmar la transacción hasta que el esclavo semisíncrono reconoce que ha recibido todos los eventos de dicha transacción, o hasta que pasa un tiempo determinado.
  • El esclavo reconoce que recibe los eventos de la transacción cuando han sido tratados por el proceso IO. No tienen que reproducirse en las tablas replicadas (proceso SQL).
  • Si pasa un determinado tiempo sin que ningún esclavo reconozca la transacción, el maestro vuelve a la replicación asíncrona automáticamente. En cuanto un esclavo semisíncrono vuelva a la actividad, el maestro regresa al modo semisíncrono.
Veamos cómo podemos configurar esta replicación en Windows. Partimos de una estructura típica de replicación maestro-esclavo. A continuación lo que tenemos que hacer es cargar los plugins que nos permitirán activar esta funcionalidad. Si lo hacemos tal y como lo explica el manual (http://dev.mysql.com/doc/refman/5.5/en/replication-semisync-installation.html) obtendremos un error:
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
ERROR 1126 (HY000): Can't open shared library 'C:\Program Files\MySQL\MySQL Server A\lib/plugin/semisync_master.so' (errno: 2 )

Obtenemos un error, puesto que este comando se utiliza cuando el servidor funciona sobre Unix. Sin embargo en Internet la información de cómo realizarlo en sistemas Windows es casi inexistente, así que sirva este artículo para ver cómo tenemos que realizarlo en este sistema operativo. La solución es sencilla, y se trata de cargar liberías dinámicas .dll en lugar de las indicadas anteriormente:
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.dll';
Query OK, 0 rows affected (0.07 sec)

Y comprobamos que se ha cargado correctamente:
mysql> show plugins;
+-----------------------+----------+--------------------+---------------------+---------+
| Name                  | Status   | Type               | Library             | License |
+-----------------------+----------+--------------------+---------------------+---------+
| binlog                | ACTIVE   | STORAGE ENGINE     | NULL                | GPL     |
| mysql_native_password | ACTIVE   | AUTHENTICATION     | NULL                | GPL     |
| mysql_old_password    | ACTIVE   | AUTHENTICATION     | NULL                | GPL     |
| CSV                   | ACTIVE   | STORAGE ENGINE     | NULL                | GPL     |
| MEMORY                | ACTIVE   | STORAGE ENGINE     | NULL                | GPL     |
| MyISAM                | ACTIVE   | STORAGE ENGINE     | NULL                | GPL     |
| MRG_MYISAM            | ACTIVE   | STORAGE ENGINE     | NULL                | GPL     |
| ARCHIVE               | ACTIVE   | STORAGE ENGINE     | NULL                | GPL     |
| BLACKHOLE             | ACTIVE   | STORAGE ENGINE     | NULL                | GPL     |
| FEDERATED             | DISABLED | STORAGE ENGINE     | NULL                | GPL     |
| InnoDB                | ACTIVE   | STORAGE ENGINE     | NULL                | GPL     |
| INNODB_TRX            | ACTIVE   | INFORMATION SCHEMA | NULL                | GPL     |
| INNODB_LOCKS          | ACTIVE   | INFORMATION SCHEMA | NULL                | GPL     |
| INNODB_LOCK_WAITS     | ACTIVE   | INFORMATION SCHEMA | NULL                | GPL     |
| INNODB_CMP            | ACTIVE   | INFORMATION SCHEMA | NULL                | GPL     |
| INNODB_CMP_RESET      | ACTIVE   | INFORMATION SCHEMA | NULL                | GPL     |
| INNODB_CMPMEM         | ACTIVE   | INFORMATION SCHEMA | NULL                | GPL     |
| INNODB_CMPMEM_RESET   | ACTIVE   | INFORMATION SCHEMA | NULL                | GPL     |
| PERFORMANCE_SCHEMA    | ACTIVE   | STORAGE ENGINE     | NULL                | GPL     |
| partition             | ACTIVE   | STORAGE ENGINE     | NULL                | GPL     |
| rpl_semi_sync_master  | ACTIVE   | REPLICATION        | semisync_master.dll | GPL     |
+-----------------------+----------+--------------------+---------------------+---------+
21 rows in set (0.01 sec)


Y posteriormente realizamos algo parecido en el esclavo:
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.dll';
Query OK, 0 rows affected (0.00 sec)


El último paso es activar este tipo de replicación. Lo podemos hacer modificando los ficheros de configuración de los servidores (lo que motivaría tener que reiniciarlos) o también podemos hacerlo dinámicamente (lo configuramos hasta el próximo reinicio). Vamos a hacerlo de esta última forma:
En el maestro:
mysql> SET GLOBAL rpl_semi_sync_master_enabled=1;
Query OK, 0 rows affected (0.00 sec)


En el esclavo:
mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;
Query OK, 0 rows affected (0.00 sec)

Reiniciamos el esclavo para que el maestro se de por enterado del cambio efectuado en el esclavo:
mysql> stop slave;
Query OK, 0 rows affected (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)


Y ya estaría configurado. Si os resulta interesante este artículo, igual próximamente os hago alguna demostración de funcionamiento y monitorización de este tipo de replicación.

13 de abril de 2009

El pan nuestro de cada día

Los que nos dedicamos a enseñar informática de una forma más o menos habitual, no nos pilla por sorpresa, seguramente, artículos como Google Chrome and the Original Google donde su autor destaca algunos mensajes que los usuarios postean en los foros de ayuda del navegador Chrome. Yo diría incluso que son razonables.

Sea cual sea el nivel del curso, me da igual que sea de Informática de Usuario o Administrador de Bases de datos, en todos te encuentras anécdotas similares y preguntas absolutamente extrañas. La pregunta de la que siempre me acordaré y que me hizo mucha gracia fue la de una alumna que me preguntó una vez si "cualquiera podía ser base de datos". Le contesté que con buena memoria y un poco de constancia, obviamente. A veces pienso que me están grabando con una cámara y todo es una broma :)

La informática es muy dificil. Demasiado. Es una herramienta que hoy todo el mundo está obligado a utilizar pero que muy pocos tienen una base suficientemente técnica como para entenderla minimamente. Los que somos de la generación del Z80 quizás tengamos algo de ventaja en todo esto, pero reconozco que para alguien que tenga que meterse en estos berenjenales, es muy dificil. Y sorprendemente las nuevas generaciones no han evolucionado mucho más. Sacándolos del Tuenti y del "messenger", están más perdidos que el barco del arroz.

Con decir que cuando tengo que enseñar algo relacionado con Internet, casi que me doy por satisfecho cuando consiguen poner las direcciones en la barra correspondiente en lugar de hacerlo en el buscador del Google.

8 de febrero de 2008

Referencias a objetos

Os pongo aquí un video de Barrio Sésamo en el que me apoyaré al final de la explicación de referencias a objetos :-)

2 de febrero de 2008

Como trabaja el método main

Aquí tenéis un ejemplo de cómo trabaja el método main en una aplicación Java. Como se crean los objetos, etc... A ver si os dais cuenta de los fallos que tiene el video... (me refiero a errores de programación :-)

27 de enero de 2008

Creado grupo para el curso de Java

Como ya nos ha surgido la necesidad de algún lugar donde poder compartir código de los diferentes ejercicios que hacéis (lo que sugirió Alfonso), he sopesado algunas posibilidades y la que he visto más interesante para poder hacer eso (y mucho más) es crear un grupo en Googlegroups. Así que dicho y hecho.

El grupo lo tenéis disponible en:


Para que no accedan al mismo personas externas al curso, lo he configurado restringido, así que cuando os deis de alta veréis que aparece un aviso indicando que hasta que no se apruebe dicha solicitud no podréis hacer nada. En cuanto me sea posible os confirmaré la suscripción.

Si tenéis alguna duda sobre cómo suscribiros al mismo o similares, preguntadme sin problemas.

20 de enero de 2008

Java is Everywhere

Mañana comienzo un nuevo curso de introducción a Java. Como es corto no creo que merezca la pena crear un blog para él sólo ya que no dará para escribir demasiado (además que los blogs de curso se quedan finalmente abandonados), así que utilizaré este en cualquier caso.

Java is Everywhere, y por supuesto, también aquí ;-)

Powered By Blogger