<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title># rm-rf.es &#187; MySQL</title>
	<atom:link href="http://rm-rf.es/categoria/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://rm-rf.es</link>
	<description>Administración de sistemas, Unix, Linux, FreeBSD, Windows, hosting, dominios, servidores...</description>
	<lastBuildDate>Sat, 28 Jan 2012 19:36:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Crear un cluster MySQL con un único comando</title>
		<link>http://rm-rf.es/crear-un-cluster-mysql-con-un-unico-comando/</link>
		<comments>http://rm-rf.es/crear-un-cluster-mysql-con-un-unico-comando/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 16:04:18 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[cluster]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2235</guid>
		<description><![CDATA[Si por lo que sea no tenéis ni tiempo ni ganas para montar un cluster MySQL podéis echar un vistazo a esta opción que nos ofrece MySQL Cluster Manager. Básicamente nos bajamos la versión adecuada para nuestro sistema operativo y arquitectura de MySQL Cluster Manager, la descomprimimos y ejecutamos un comando con el que arrancará [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-1945" style="margin: 5px;" title="MySQL" src="http://rm-rf.es/wp-content/uploads/2011/07/logo-mysql-e1309861294982.jpg" alt="MySQL" width="211" height="118" align="right" />Si por lo que sea no tenéis ni tiempo ni ganas para montar un cluster MySQL podéis <a href="http://www.clusterdb.com/mysql-cluster/mysql-cluster-manager-1-1-2-creating-a-cluster-is-now-trivial/">echar un vistazo a esta opción</a> que nos ofrece <strong>MySQL Cluster Manager</strong>. Básicamente nos bajamos la versión adecuada para nuestro sistema operativo y arquitectura de MySQL Cluster Manager, la descomprimimos y ejecutamos un comando con el que arrancará el cluster.</p>
<p>Para bajarla, hay acceder a <a href="https://edelivery.oracle.com/" target="_blank">edelivery.oracle.com</a> (hay que registrarse en Oracle) y elegir el pack &#8220;MySQL Database&#8221;, luego sale ya todo el listado de descargas.</p>
<p>Una vez descargado, es tan simple como:</p>
<pre># tar -xzvf mcm-1.1.2_32-cluster-7.1.15a_64-solaris10-x86.tar.gz
# mv  mcm-1.1.2_32-cluster-7.1.15a_64-solaris10-x86 mcm
# cd mcm
# ./bin/mcmd --bootstrap
MySQL Cluster Manager 1.1.2 started
Connect to MySQL Cluster Manager by running "/home/alex/V27753-01/mcm/bin/mcm" -a localhost:1862
Configuring default cluster 'mycluster'...
...
...
</pre>
<p>A partir de ese momento ya tendremos un <strong>cluster MySQL formado por dos nodos de datos (ndbd), dos servidores MySQL (mysqld) y un nodo de gestión (ndb_mgmd)</strong>. Si quisieramos personalizar el cluster deberíamos acceder a la consola mcmd y gestionarlo desde ahí:</p>
<pre>#./bin/mcmd
mcm&gt;create site -h khepri14 mysite;
mcm&gt;add package -b /home/mcm/cluster mypackage;
mcm&gt;create cluster -P mypackage -R ndb_mgmd@khepri14,ndbd@khepri14,ndbd@khepri14,mysqld@khepri14,mysqld@khepri14 m
ycluster;
mcm&gt;set port:mysqld:4=3306,port:mysqld:5=3307 mycluster;
mcm&gt;start cluster mycluster;</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/mysql-cluster-instalacion-nodos-de-datos-sql-gestion-mgm/" title="MySQL Cluster (I): Instalación de nodos de datos/SQL y gestión (MGM)">MySQL Cluster (I): Instalación de nodos de datos/SQL y gestión (MGM)</a></li><li><a href="http://rm-rf.es/red-hat-cluster-generic-error-al-crear-un-ip-resource/" title="Red Hat Cluster: &#8220;generic error&#8221; al crear un IP Resource">Red Hat Cluster: &#8220;generic error&#8221; al crear un IP Resource</a></li><li><a href="http://rm-rf.es/replicacion-mysql-sql_slave_skip_counter/" title="Replicación MySQL: SQL_SLAVE_SKIP_COUNTER">Replicación MySQL: SQL_SLAVE_SKIP_COUNTER</a></li><li><a href="http://rm-rf.es/replicacion-mysql-maestro-esclavo/" title="Replicacion MySQL maestro-esclavo">Replicacion MySQL maestro-esclavo</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/crear-un-cluster-mysql-con-un-unico-comando/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Replicación MySQL: SQL_SLAVE_SKIP_COUNTER</title>
		<link>http://rm-rf.es/replicacion-mysql-sql_slave_skip_counter/</link>
		<comments>http://rm-rf.es/replicacion-mysql-sql_slave_skip_counter/#comments</comments>
		<pubDate>Sun, 07 Aug 2011 17:11:37 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[alta disponibilidad]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2103</guid>
		<description><![CDATA[Hace unos días vimos como crear una replicación MySQL maestro-esclavo paso a paso. Ahora vamos a empezar a ver la forma de arreglar los errores más comunes en este tipo de replicaciones. En esta entrada concretamente aquel provocado cuando una acción realizada en el master no se puede replicar al esclavo por el motivo que [...]]]></description>
			<content:encoded><![CDATA[<p><img align="right" class="size-full wp-image-1945" style="margin-left: 20px; margin-right: 20px;" title="MySQL" src="http://rm-rf.es/wp-content/uploads/2011/07/logo-mysql-e1309861294982.jpg" alt="MySQL" width="241" height="135" />Hace unos días vimos como <strong><a title="Replicacion MySQL maestro-esclavo" href="http://rm-rf.es/replicacion-mysql-maestro-esclavo/">crear una replicación MySQL maestro-esclavo</a></strong> paso a paso. Ahora vamos a empezar a ver la forma de arreglar los errores más comunes en este tipo de replicaciones. En esta entrada concretamente aquel provocado cuando una acción realizada en el master no se puede replicar al esclavo por el motivo que sea.</p>
<p>Vamos a forzar un fallo en la replicación creando una base de datos en el servidor esclavo y posteriormente crearla en el maestro. La forma natural de que el esclavo tuviera esa base de datos sería heredandola del maestro, no creándose de forma manual. Esto provocará el fallo de la replicación:</p>
<pre>mysql-esclavo&gt; CREATE DATABASE prueba;</pre>
<pre>mysql-master&gt; CREATE DATABASE prueba;</pre>
<p>Una vez realizado esto, <strong>el master replicará la creación de esa base de datos en el esclavo, pero como la hemos creado a mano provocará el fallo y que se pare la replicación</strong>, lo podemos ver al hacer un SHOW SLAVE STATUS en el esclavo:</p>
<pre>mysql&gt; SHOW SLAVE STATUS\G
*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.1.129
                Master_User: replicacion
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysqld-bin.000004
        Read_Master_Log_Pos: 179
             Relay_Log_File: mysqld-relay-bin.000008
              Relay_Log_Pos: 236
      Relay_Master_Log_File: mysqld-bin.000004
           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: 1007
                 <strong>Last_Error: Error 'Can't create database 'prueba'; database exists' on query. Default database: 'prueba'. Query: 'create database prueba'</strong>
               Skip_Counter: 0
        Exec_Master_Log_Pos: 98
            Relay_Log_Space: 317
            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)</pre>
<p>Sabemos que el error se encuentra en la consulta SQL de creación de la base de datos &#8220;prueba&#8221;. Gracias a la opción <strong>SET GLOBAL SQL_SLAVE_SKIP_COUNTER</strong> podemos decirle al servidor esclavo que <strong>se salte X posiciones del log</strong> binario para así evitar las consultas problemáticas:</p>
<pre>mysql-esclavo&gt;SET GLOBAL SQL_SLAVE_SKIP_COUNTER =1;</pre>
<p>Con el comando anterior hemos saltado la consulta de creación de la base de datos &#8220;prueba&#8221;, ahora podemos reiniciar la replicación en el esclavo y verificar si ya no tenemos errores y vuelve a la normalidad:</p>
<pre>mysql-esclavo&gt; START SLAVE;
Query OK, 0 rows affected (0.01 sec)

mysql-esclavo&gt; SHOW SLAVE STATUS\G
*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.1.129
                Master_User: replicacion
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysqld-bin.000004
        Read_Master_Log_Pos: 179
             Relay_Log_File: mysqld-relay-bin.000008
              Relay_Log_Pos: 317
      Relay_Master_Log_File: mysqld-bin.000004
           Slave_IO_Running: Yes
          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: 179
            Relay_Log_Space: 317
            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: 0
1 row in set (0.00 sec)</pre>
<p>Efectivamente, todo ha vuelto a la normalidad. Si siguiera pasando habría que revisar la opción de seguir saltando consultas del log. Lo importante cuando hacemos esto es mantener los mismos datos en el maestro y el esclavo, ya que en este caso sabemos que simplemente era por la prueba de crear la base de datos, pero en cuestión de consultas INSERT, DROP, etc la cosa puede no ser tan sencilla.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/replicacion-mysql-maestro-esclavo/" title="Replicacion MySQL maestro-esclavo">Replicacion MySQL maestro-esclavo</a></li><li><a href="http://rm-rf.es/red-hat-cluster-generic-error-al-crear-un-ip-resource/" title="Red Hat Cluster: &#8220;generic error&#8221; al crear un IP Resource">Red Hat Cluster: &#8220;generic error&#8221; al crear un IP Resource</a></li><li><a href="http://rm-rf.es/crear-un-cluster-mysql-con-un-unico-comando/" title="Crear un cluster MySQL con un único comando">Crear un cluster MySQL con un único comando</a></li><li><a href="http://rm-rf.es/cloud-computing-o-servidores-dedicados-%c2%bfque-elegir/" title="Cloud computing o servidores dedicados: ¿qué elegir?">Cloud computing o servidores dedicados: ¿qué elegir?</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/replicacion-mysql-sql_slave_skip_counter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Replicacion MySQL maestro-esclavo</title>
		<link>http://rm-rf.es/replicacion-mysql-maestro-esclavo/</link>
		<comments>http://rm-rf.es/replicacion-mysql-maestro-esclavo/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 18:11:34 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[alta disponibilidad]]></category>
		<category><![CDATA[manual]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=2079</guid>
		<description><![CDATA[En este artículo vamos a continuar con la alta disponibilidad de MySQL creando un sencilla arquitectura de replicación maestro-esclavo (master-slave). Nuestro sistema va a contar con dos servidores MySQL, uno que hará la función de maestro, que recibirá todos los UPDATES de tablas y los enviará mediante un log binario a otro servidor MySQL esclavo [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-1945" style="margin-left: 18px; margin-right: 18px;" title="MySQL" src="http://rm-rf.es/wp-content/uploads/2011/07/logo-mysql-e1309861294982.jpg" alt="MySQL" width="243" height="136" align="right" />En este artículo vamos a continuar con la <strong>alta disponibilidad de MySQL</strong> creando un sencilla arquitectura de <strong>replicación maestro-esclavo (master-slave)</strong>. Nuestro sistema va a contar con dos servidores MySQL, uno que hará la función de maestro, que recibirá todos los UPDATES de tablas y los enviará mediante un log binario a otro servidor MySQL esclavo (podríamos poner tantos como quisieramos).</p>
<p>Partimos de la base que tenemos instalado MySQL en ambos servidores, sino toca instalarlo como si de una instalación estándar se tratara (por yum, compilando, por paquetes precompilados, etc). También utilizaremos la base de datos <strong>world</strong> para hacer pruebas, disponible en:</p>
<p><em>http://downloads.mysql.com/docs/world.sql.zip</em></p>
<pre># yum install mysql-server</pre>
<p>Vamos a utilizar la siguiente nomenclatura para los hosts:</p>
<p><strong>mysql-master<br />
mysql-slave</strong></p>
<p>Lo primero que debemos saber a la hora de configurar los dos nodos es que:</p>
<ol>
<li>El servidor Master debe tener activado el log binario (<strong>log-bin</strong>).</li>
<li>Ambos deben tener un identificador único (<strong>server-id</strong>).</li>
<li>El servidor maestro deberá tener un usuario con privilegio <strong>REPLICATION SLAVE</strong>.</li>
</ol>
<p>&nbsp;</p>
<h3>Puesta en marcha del Master (mysql-master)</h3>
<p>Para activar el log binario, accedemos al fichero de configuración /etc/my.cnf y añadimos log-bin dentro de la sección [mysqld].</p>
<pre>[mysqld]
log-bin</pre>
<p>En la misma sección [mysqld] debemos asignar un número único a modo de identificador tanto al Master como al Slave, en este caso asignamos 1 al Master:</p>
<p>Master my.cnf:</p>
<pre>[mysqld]
log-bin
server-id=1</pre>
<p>Reiniciamos el servidor maestro y verificamos que los logs binarios se han creado en el directorio de datos:</p>
<pre>mysql-master# /etc/init.d/mysqld restart &amp;&amp; ls -l /var/lib/mysql/*bin*
-rw-rw---- 1 mysql mysql 98 Jul 30 23:28 /var/lib/mysql/mysqld-bin.000001
-rw-rw---- 1 mysql mysql 20 Jul 30 23:28 /var/lib/mysql/mysqld-bin.index</pre>
<p>Accedemos por shell a la consola MySQL y creamos el usuario con el privilegio REPLICATION SLAVE, 192.168.1.129 es la IP del servidor esclavo:</p>
<pre>mysql-master&gt; GRANT REPLICATION SLAVE ON *.* TO 'replicacion'@'192.168.1.129' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.01 sec)

mysql-master&gt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)</pre>
<p>Aprovechamos para volcar la base de datos world sobre la que haremos algunas pruebas:</p>
<pre>mysql-master&gt; create database world;
mysql-master&gt; use world
mysql-master&gt; SOURCE world.sql</pre>
<p>&nbsp;</p>
<h3>Puesta en marcha del Slave (mysql-slave)</h3>
<p>En la sección [mysqld] del fichero de configuración /etc/my.cnf debemos asignar  el id 2 al Slave:</p>
<pre>[mysqld]
server-id=2</pre>
<p>Reiniciamos el servidor MySQL esclavo:</p>
<pre>mysql-master# /etc/init.d/mysqld restart</pre>
<p>&nbsp;</p>
<h3>Copia inicial de la base de datos (directorio data)</h3>
<p>Antes de activar la replicación ambos servidores deben tener la misma información (bases de datos) y en el mismo punto de restauración. Lo primero que haremos antes de hacer la copia es hacer un flush de las tablas y bloquear las escrituras, de este modo podemos hacer el &#8216;snapshot&#8217; sin tener que apagar el servidor MySQL. Todo esto lo hacemos en el Master:</p>
<pre>mysql-master&gt; FLUSH TABLES WITH READ LOCK;</pre>
<p>Ahora podemos hacer la copia de muchas formas, con <a title="Backup de todas las bases de datos MySQL con una sola línea de comandos" href="http://rm-rf.es/backup-de-todas-las-bases-de-datos-mysql-con-una-sola-linea-de-comandos/">mysqldump</a>, <a title="El comando rsync" href="http://rm-rf.es/el-comando-rsync/">rsync</a> de los datos, comprimiendo el directorio de datos donde se alojan las bases de datos con .tar.gz, etc</p>
<pre>mysql-master# cd /var/lib &amp;&amp; tar czvf /tmp/data-mysql.tar.gz mysql
mysql-master# scp /tmp/data-mysql.tar.gz root@mysql-slave:/tmp
data-mysql.tar.gz                                                                100%  417KB 416.9KB/s   00:00</pre>
<p>Una vez realizado podemos volver a desbloquear las tablas, no sin antes abrir una nueva shell de mysql y apuntar por un lado el fichero de log binario que se está usando y la posición en la que se ha quedado pues será la que se usará posteriormente para comenzar la replicación en el esclavo:</p>
<pre>mysql-master&gt; SHOW MASTER STATUS;
+-------------------+----------+--------------+------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
|<strong> mysqld-bin.000002</strong> |   <strong>724514</strong> |              |                  |
+-------------------+----------+--------------+------------------+
1 row in set (0.01 sec)</pre>
<p>Ahora sí que podemos desbloquearlas:</p>
<pre>mysql-master&gt; UNLOCK TABLES;</pre>
<p>Llega el momento de movernos al esclavo, lo primero que debemos hacer es asegurarnos de parar la replicación en caso de que estuviera activa:</p>
<pre>mysql-slave&gt; slave stop;
Query OK, 0 rows affected, 1 warning (0.00 sec)</pre>
<p>En este momento los datos del master que hemos comprimido tendríamos que restaurarlos en la carpeta de datos del esclavo, simplemente los descomprimimos sobre la ruta /var/lib/mysql o la que tenga vuestra instalación.</p>
<p>Ahora llega el momento clave, tenemos que indicarle al esclavo quien es el servidor maestro y establacer la comunicación. Especificaremos el hostname del master, el usuario creado anteriormente para la replicación, su clave, el fichero de log binario a utilizar y su posición. Recordad que esto último lo hemos apuntado al hacer un SHOW MASTER STATUS;</p>
<pre>mysql-slave&gt; CHANGE MASTER TO
    -&gt;     MASTER_HOST='192.168.1.130',
    -&gt;     MASTER_USER='replicacion',
    -&gt;     MASTER_PASSWORD='password',
    -&gt;     MASTER_LOG_FILE='mysqld-bin.000002',
    -&gt;     MASTER_LOG_POS=724514;
Query OK, 0 rows affected (0.04 sec)</pre>
<p>Llego el momento de arrancar la replicación, para ello reactivamos el esclavo:</p>
<pre>mysql-slave&gt; START SLAVE;
Query OK, 0 rows affected (0.01 sec)</pre>
<p>&nbsp;</p>
<h3>Revisar el estado de la replicación</h3>
<p>Una vez puesta en marcha la replicación, deberían existir unos procesos concretos tanto en el master como el slave. En el master debería aparecer una conexión del servidor esclavo con el usuario usado en la replicación esperando a recibir actualizaciones a través del bin-log:</p>
<pre>mysql-master&gt; show processlist;
+----+-------------+-----------------+------+-------------+------+----------------------------------------------------------------+------------------+
| Id | User        | Host            | db   | Command     | Time | State                                                          | Info             |
+----+-------------+-----------------+------+-------------+------+----------------------------------------------------------------+------------------+
|  2 | replicacion | mysql-slave:59928 | NULL | Binlog Dump |    7 | Has sent all binlog to slave; waiting for binlog to be updated | NULL             |
|  3 | root        | localhost       | NULL | Query       |    0 | NULL                                                           | show processlist |
+----+-------------+-----------------+------+-------------+------+----------------------------------------------------------------+------------------+
2 rows in set (0.00 sec)</pre>
<p>Y el slave debería tener dos conexiones relacionadas con la replicación, un thread SQL y otro de I/O relacionado con las lecturas de relay log:</p>
<pre>mysql-slave&gt; show processlist;
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------+------------------+
| Id | User        | Host      | db   | Command | Time | State                                                                 | Info             |
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------+------------------+
|  1 | system user |           | NULL | Connect |   11 | Waiting for master to send event                                      | NULL             |
|  2 | system user |           | NULL | Connect |   11 | Has read all relay log; waiting for the slave I/O thread to update it | NULL             |
|  4 | root        | localhost | NULL | Query   |    0 | NULL                                                                  | show processlist |
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------+------------------+</pre>
<p>&nbsp;</p>
<h3>Monitorización de la replicación</h3>
<p>Ahora que ya tenemos la replicación funcionando tenemos que conocer la forma de monitorizar su funcionamiento, el comando más importante lo podemos ejecutar en el esclavo (SHOW SLAVE STATUS), nos indicará el estado detallado de la replicación:</p>
<pre>mysql-slave&gt; SHOW SLAVE STATUS\G
*************************** 1. row ***************************
             Slave_IO_State: Waiting for master to send event
                Master_Host: 192.168.1.130
                Master_User: replicacion
                Master_Port: 3306
              Connect_Retry: 60
            Master_Log_File: mysqld-bin.000002
        Read_Master_Log_Pos: 724601
             Relay_Log_File: mysqld-relay-bin.000002
              Relay_Log_Pos: 323
      Relay_Master_Log_File: mysqld-bin.000002
           Slave_IO_Running: Yes
          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: 724601
            Relay_Log_Space: 323
            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: 0
1 row in set (0.00 sec)</pre>
<p>Los puntos más importantes:</p>
<ul>
<li><strong>Slave_IO_State</strong>: Monitoriza el estado del servidor esclavo respecto al master, en este caso está esperando a recibir eventos (actualizaciones del log binario por parte del master.<strong></strong></li>
<li><strong>Master_log_File</strong>: Especifica el log binario en el servidor maestro que se está utilizando en la replicación.<strong></strong></li>
<li><strong>Read_Master_Log_Pos</strong>: Indica la posición hasta la cual se ha leído del log binario del master, debería coincidir con la que nos da el SHOW MASTER STATUS en el servidor maestro y con el valor del parámetro <strong>Exec_Master_Log_Pos</strong><strong></strong></li>
<li><strong>Relay_Master_log_File</strong>: Especifica el log binario en el servidor esclavo que se está utilizando en la replicación.<strong></strong></li>
<li><strong>Slave_IO_Running</strong> y <strong>Slave_SQL_Running</strong>: Monitorizan si los dos procesos mencionados antes están corriendo, los threads IO_THREAD y SQL_THREAD. Es crítico que ambos estén siempre corriendo.<strong></strong></li>
<li><strong>Seconds_Behind_Master</strong>: Este parámetro puede ser un indicativo claro de problemas de carga, conectividad de red, etc. Indica el número de segundos de retardo respecto al servidor maestro. Lo ideal, 0.</li>
</ul>
<p>&nbsp;</p>
<h3>Probando la replicación</h3>
<p>A partir de aquí podemos verificar de una forma muy sencilla el funcionamiento de la replicación. Si añadimos, modificamos o borramos registros en una tabla de una base de datos del master automáticamente se replicará en la slave. Si creamos una base de datos en el master automáticamente se creará en el slave, etc:</p>
<p>mysql-master:</p>
<pre>mysql-master&gt; create database test01;
Query OK, 1 row affected (0.00 sec)

mysql-master&gt; show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
| test01             |
| world              |
+--------------------+
5 rows in set (0.00 sec)</pre>
<p>Inmediatamente en el mysql-slave:</p>
<pre>mysql-slave&gt; show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
| test01 |
| world |
+--------------------+
5 rows in set (0.01 sec)</pre>
<p>&nbsp;</p>
<p>Bueno, de momento esto podría ser suficiente para una primera aproximación a la replicación maestro-esclavo de MySQL. En futuros artículos si os resulta interesante podemos indagar y detalladar algunas de las cosas tratadas en el artículo y/o revisar otros tipos de replicación, como la circular, la de doble sentido, etc.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/replicacion-mysql-sql_slave_skip_counter/" title="Replicación MySQL: SQL_SLAVE_SKIP_COUNTER">Replicación MySQL: SQL_SLAVE_SKIP_COUNTER</a></li><li><a href="http://rm-rf.es/red-hat-cluster-generic-error-al-crear-un-ip-resource/" title="Red Hat Cluster: &#8220;generic error&#8221; al crear un IP Resource">Red Hat Cluster: &#8220;generic error&#8221; al crear un IP Resource</a></li><li><a href="http://rm-rf.es/crear-un-cluster-mysql-con-un-unico-comando/" title="Crear un cluster MySQL con un único comando">Crear un cluster MySQL con un único comando</a></li><li><a href="http://rm-rf.es/cloud-computing-o-servidores-dedicados-%c2%bfque-elegir/" title="Cloud computing o servidores dedicados: ¿qué elegir?">Cloud computing o servidores dedicados: ¿qué elegir?</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/replicacion-mysql-maestro-esclavo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table</title>
		<link>http://rm-rf.es/mysqldump-error-2013-lost-connection-to-mysql-server-during-query-when-dumping-table/</link>
		<comments>http://rm-rf.es/mysqldump-error-2013-lost-connection-to-mysql-server-during-query-when-dumping-table/#comments</comments>
		<pubDate>Fri, 08 Jul 2011 09:32:44 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqldump]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1965</guid>
		<description><![CDATA[Este error se suele producir cuando hacemos un mysqldump de una base de datos MySQL con tablas de gran tamaño: mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table XXXX Para solucionarlo, podemos aumentar temporalmente el tamaño máximo del buffer de comunicación de mysql a través de la variable max_allowed_packet. El [...]]]></description>
			<content:encoded><![CDATA[<p>Este error se suele producir cuando <strong>hacemos un <a title="Backups MySQL con mysqldump" href="http://rm-rf.es/backups-mysql-con-mysqldump/">mysqldump</a> de una base de datos MySQL con tablas de gran tamaño</strong>:</p>
<p><em><strong>mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table XXXX</strong></em></p>
<p>Para solucionarlo, podemos aumentar temporalmente el tamaño máximo del buffer de comunicación de mysql a través de la variable <strong>max_allowed_packet</strong>. El valor se puede establecer en K, M ó G para indicar er kilobytes, megabytes, o gigabytes. Probad a aumentar el límite y verificar si el error queda solucionado, sino, es posible que tengáis que aumentarlo más:</p>
<pre>$ mysqldump --opt --max_allowed_packet=128M base_de_datos &gt; bd.sql</pre>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/backup-de-todas-las-bases-de-datos-mysql-con-una-sola-linea-de-comandos/" title="Backup de todas las bases de datos MySQL con una sola línea de comandos">Backup de todas las bases de datos MySQL con una sola línea de comandos</a></li><li><a href="http://rm-rf.es/mysqldump-excluir-una-tabla-en-el-backup/" title="Mysqldump: excluir una tabla en el backup">Mysqldump: excluir una tabla en el backup</a></li><li><a href="http://rm-rf.es/backups-mysql-con-mysqldump/" title="Backups MySQL con mysqldump">Backups MySQL con mysqldump</a></li><li><a href="http://rm-rf.es/mysqldump-errcode-24-when-using-lock-tables/" title="mysqldump: Errcode: 24 when using LOCK TABLES">mysqldump: Errcode: 24 when using LOCK TABLES</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/mysqldump-error-2013-lost-connection-to-mysql-server-during-query-when-dumping-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 formas de encontrar y optimizar consultas MySQL problemáticas</title>
		<link>http://rm-rf.es/5-formas-de-encontrar-y-optimizar-consultas-mysql-problematicas/</link>
		<comments>http://rm-rf.es/5-formas-de-encontrar-y-optimizar-consultas-mysql-problematicas/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 09:11:02 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[optimizacion]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1955</guid>
		<description><![CDATA[A la hora de detectar problemas en servidores MySQL (cuellos de botella, uso excesivo de CPU, bajo rendimiento, lentitud, etc) es conveniente conocer las distintas opciones que nos ofrece MySQL para dar con el problema. Vamos a ver algunas de ellas: Activar el Slow Query Log Activar el log de consultas lentas en MySQL supondrá [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-1945" title="MySQL" src="http://rm-rf.es/wp-content/uploads/2011/07/logo-mysql-e1309861294982.jpg" alt="MySQL" width="204" height="114" align="right" />A la hora de <strong>detectar problemas en servidores MySQL</strong> (cuellos de botella, uso excesivo de CPU, bajo rendimiento, lentitud, etc) es conveniente conocer las distintas opciones que nos ofrece MySQL para dar con el problema. Vamos a ver algunas de ellas:</p>
<h3>Activar el Slow Query Log</h3>
<p>Activar el log de consultas lentas en <a title="MySQL" href="http://rm-rf.es/categoria/mysql/">MySQL</a> supondrá que en el momento que una consulta SQL supere el tiempo de ejecución establecido con la variable <strong>long_query_time</strong> quedará registrada en el log establecido. Para activarlo añadimos las siguientes directivas en el fichero de configuración my.cnf:</p>
<pre>log-slow-queries=/var/log/mysql-slow-queries.log
long_query_time = 5</pre>
<p>Este tema ya lo traté en un artículo anterior, para profundizar en ello acceded a la entrada a través del siguiente enlace: <a title="Slow Queries en MySQL" href="http://rm-rf.es/slow-queries-en-mysql/">Slow Queries en MySQL</a>.</p>
<h3>Usar SHOW PROCESSLIST</h3>
<p>Tanto desde la propia shell desde MySQL como usando mysqladmin podemos <strong>visualizar a tiempo real las consultas SQL</strong> que se están ejecutando en el servidor:</p>
<pre>mysql&gt; show processlist;
+----+------+-----------+------+---------+------+-------+------------------+
| Id | User | Host      | db   | Command | Time | State | Info             |
+----+------+-----------+------+---------+------+-------+------------------+
| 35 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |
+----+------+-----------+------+---------+------+-------+------------------+
1 row in set (0.00 sec)</pre>
<p>Como podéis observar, nos muestra el estado de la consulta (State), la base de datos, el comando que está ejecutando, el usuario, el host y el tiempo de ejecución, siendo este último de los puntos más importantes. Recordad que podéis formatear la salida con \G:</p>
<pre>mysql&gt; show processlist \G
*************************** 1. row ***************************
     Id: 35
   User: root
   Host: localhost
     db: NULL
Command: Query
   Time: 0
  State: NULL
   Info: show processlist
1 row in set (0.00 sec)</pre>
<p>Y con mysqladmin desde la shell bash:</p>
<pre>$ mysqladmin processlist -u root --pXXXX
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host      | db | Command | Time | State | Info             |
+----+------+-----------+----+---------+------+-------+------------------+
| 42 | root | localhost |    | Query   | 0    |       | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+</pre>
<p>Si queréis ver el <strong>contenido completo de la consulta SQL</strong> que se está ejecutando probablemente necesitéis utilizar <strong>SHOW FULL PROCESSLIST</strong>; en lugar de SHOW PROCESSLIST:</p>
<pre>mysql&gt; SHOW FULL PROCESSLIST;
+----+------+-----------+------+---------+------+-------+-----------------------+
| Id | User | Host      | db   | Command | Time | State | Info                  |
+----+------+-----------+------+---------+------+-------+-----------------------+
| 35 | root | localhost | NULL | Query   |    0 | NULL  | SHOW FULL PROCESSLIST |
+----+------+-----------+------+---------+------+-------+-----------------------+
1 row in set (0.00 sec)</pre>
<h3>Optimizar las consultas SQL con EXPLAIN</h3>
<p>Gracias a EXPLAIN podemos <strong>obtener toda la información sobre el modo en el que una consulta SQL se ejecutaría en el servidor</strong>. Es extremadamente útil para conocer la configuración de <strong>índices</strong> en las tablas, los índices que podrían ser configurados para mejorar su rendimiento, el número de filas que se revisan, el tipo de query, etc.</p>
<p>Aquí tenéis un ejemplo de EXPLAIN contra la tabla City de la base de datos de muestra de MySQL (world). Para profundizar en el funcionamiento de EXPLAIN os recomiendo revisar la <a href="http://dev.mysql.com/doc/refman/5.0/es/explain.html" target="_blank">documentación oficial de MySQL</a>.</p>
<pre>mysql&gt; EXPLAIN select * from City;
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
|  1 | SIMPLE      | City  | ALL  | NULL          | NULL | NULL    | NULL | 4079 |       |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
1 row in set (0.00 sec)</pre>
<pre>mysql&gt; EXPLAIN select * from City \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: City
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 4079
        Extra:
1 row in set (0.00 sec)</pre>
<h3>Activar el log general</h3>
<p>Una medida quizás un poco agresiva y que no debería ser ejecutada en servidores de producción. <strong>Este log (General Query Log) registrará todas las consultas SQL que se ejecuten en el servidor</strong>. Para activarlo debemos especificar la ruta del log mediante <em>&#8211;general_log_file=</em> (MySQL 5.1.29+). También podemos activarlo y desactivarlo a tiempo real desde la shell MySQL del siguiente modo:</p>
<pre>mysql&gt; SET GLOBAL general_log = 'OFF';
mysql&gt; SET GLOBAL general_log = 'ON';</pre>
<h3>MySQL Query Analyzer</h3>
<p>Si pese a las opciones anteriores seguís sin poder detectar las consultas SQL problemáticas y optimizarlas, quizás <a href="http://www.mysql.com/products/enterprise/query.html" target="_blank">MySQL Query Analyzer</a> sea una opción factible. Es un <strong>software de pago</strong> perteneciente a la versión Enterprise que de forma gráfica monitoriza las consultas SQL del servidor y detecta el origen de los problemas. A mi entender, las otras opciones deberían ser suficiente (junto con buenos conocimientos de DBA todo sea dicho) para detectar y solucionar cualquier problema que se presente.</p>
<p>&nbsp;</p>
<p>Como habréis podido observar, la combinación de estas opciones en distintos ordenes nos permitirá arreglar muchos problemas con consultas SQL, primero detectamos los problemas con los logs de slow_queries o SHOW PROCESSLIST y después optimizamos con EXPLAIN las consultas detectadas en los pasos anteriores.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/mysql-tools-benchmarking-con-mysqlslap/" title="MySQL tools: benchmarking con mysqlslap">MySQL tools: benchmarking con mysqlslap</a></li><li><a href="http://rm-rf.es/backup-de-todas-las-bases-de-datos-mysql-con-una-sola-linea-de-comandos/" title="Backup de todas las bases de datos MySQL con una sola línea de comandos">Backup de todas las bases de datos MySQL con una sola línea de comandos</a></li><li><a href="http://rm-rf.es/mysql-query-cache-configuracion-y-optimizacion/" title="MySQL Query Cache: configuración y optimización">MySQL Query Cache: configuración y optimización</a></li><li><a href="http://rm-rf.es/disponible-mysqltuner-100/" title="Disponible MySQLTuner 1.0.0">Disponible MySQLTuner 1.0.0</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/5-formas-de-encontrar-y-optimizar-consultas-mysql-problematicas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQL tools: benchmarking con mysqlslap</title>
		<link>http://rm-rf.es/mysql-tools-benchmarking-con-mysqlslap/</link>
		<comments>http://rm-rf.es/mysql-tools-benchmarking-con-mysqlslap/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 09:50:02 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[benchmarking]]></category>
		<category><![CDATA[optimizacion]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1944</guid>
		<description><![CDATA[MySQL, a partir de la versión 5.1 integra una utilidad llamada mysqlslap que permite estresar y hacer benchmarking del servidor MySQL. Gracias a mysqlslap podremos comparar el rendimiento del servidor ante cambios realizados en las bases de datos, motores de almacenamiento y configuraciones así como con X número de clientes interactuando con las bases de [...]]]></description>
			<content:encoded><![CDATA[<p><strong><img class="size-full wp-image-1945" title="MySQL" src="http://rm-rf.es/wp-content/uploads/2011/07/logo-mysql.jpg" alt="MySQL" width="232" height="168" align="right" />MySQL</strong>, a partir de la versión 5.1 integra una utilidad llamada <strong>mysqlslap</strong> que permite <strong>estresar y hacer benchmarking del servidor MySQL</strong>. Gracias a mysqlslap podremos comparar el rendimiento del servidor ante cambios realizados en las bases de datos, motores de almacenamiento y configuraciones así como con X número de clientes interactuando con las bases de datos, cierto tipo de consultas SQL, etc.</p>
<p>Si queremos comenzar haciendo tests básicos podemos dejar que sea la propia utilidad la que <strong>genere de forma aleatoria las consultas SQL</strong>, únicamente tenemos que especificar el usuario MySQL con el cual se van a realizar:</p>
<pre>$ mysqlslap -u foo -pxxxx --auto-generate-sql
Benchmark
	Average number of seconds to run all queries: 0.007 seconds
	Minimum number of seconds to run all queries: 0.007 seconds
	Maximum number of seconds to run all queries: 0.007 seconds
	Number of clients running queries: 1
	Average number of queries per client: 0</pre>
<p>En este test se ha realizado la conexión de un único usuario (foo) que ha realizado pruebas aleatorias entre las que se incluye la creación de una tabla, la inserción y consulta de datos en ella y la eliminación de la tabla. Si queréis ver con detalle cada una de las consultas que se realizan en el test podéis añadir la cantidad de <strong>verbose con el parámetro -v</strong> (a más v más verbose):</p>
<pre>$ mysqlslap -vvv -u foo -pxxxx --auto-generate-sql</pre>
<p>Estos test realmente no sirven de mucho, así que conviene saber como personalizarlos, <strong>añadir más usuarios concurrentes en las pruebas y consultas SQL personalizadas</strong>. El número de usuarios concurrentes se especifica con el parámetro</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--concurrency=</div></div>
<p>, vamos a realizar la misma prueba pero con <strong>50 usuarios concurrentes</strong>:</p>
<pre>$ mysqlslap -u foo -pxxxx --concurrency=50 --auto-generate-sql
Benchmark
	Average number of seconds to run all queries: 0.389 seconds
	Minimum number of seconds to run all queries: 0.389 seconds
	Maximum number of seconds to run all queries: 0.389 seconds
	Number of clients running queries: 50
	Average number of queries per client: 0</pre>
<p>Otro parámetro interesante es</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--iterations=</div></div>
<p>, mediante el cual podemos especificar el <strong>número de veces que se repetirá el test</strong>. Vamos a ejecutarlo 4 veces:</p>
<pre>$ mysqlslap -u foo -pxxxx --concurrency=50 &gt;--iterations=4 --auto-generate-sql
Benchmark
	Average number of seconds to run all queries: 0.389 seconds
	Minimum number of seconds to run all queries: 0.389 seconds
	Maximum number of seconds to run all queries: 0.389 seconds
	Number of clients running queries: 50
	Average number of queries per client: 0</pre>
<p>También podemos modificar el <strong>número de consultas a realizar en el test</strong> con el parámetro</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--number-of-queries=</div></div>
<p>, serán repartidas entre el número de usuarios que ejecutan el test:</p>
<pre>$ mysqlslap -u foo -pxxxx --concurrency=50 &gt;--iterations=4 --number-of-queries=300 --auto-generate-sql
Benchmark
	Average number of seconds to run all queries: 0.233 seconds
	Minimum number of seconds to run all queries: 0.217 seconds
	Maximum number of seconds to run all queries: 0.242 seconds
	Number of clients running queries: 50
	Average number of queries per client: 6</pre>
<p>Otro parámetro de extrema utilidad es</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--engine=</div></div>
<p>, que nos permite <strong>especificar el tipo de motor</strong> a utilizar para la creación de la tabla (MyISAM, Innodb&#8230;) y así poder realizar varios tests y verificar cual es el más adecuado.</p>
<pre>$ mysqlslap -u foo -pxxxx --concurrency=50 --iterations=4 --number-of-queries=300 --engine=innodb --auto-generate-sql
Benchmark
	Running for engine innodb
	Average number of seconds to run all queries: 1.873 seconds
	Minimum number of seconds to run all queries: 1.724 seconds
	Maximum number of seconds to run all queries: 2.197 seconds
	Number of clients running queries: 50
	Average number of queries per client: 6</pre>
<p>Para poder personalizar al máximo el test de benchmarking conviene poder <strong>especificar la creación de tablas y consultas a realizar</strong>. Con</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--create=</div></div>
<p>especificamos la creación de la tabla y con</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--query=</div></div>
<p>la consulta a realizar. Este es el ejemplo disponible en la documentación de MySQL y el resultado de la prueba:</p>
<pre>$ mysqlslap --delimiter=";" \
  --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" \
  --query="SELECT * FROM a" --concurrency=50 --iterations=200
Benchmark
	Average number of seconds to run all queries: 0.038 seconds
	Minimum number of seconds to run all queries: 0.011 seconds
	Maximum number of seconds to run all queries: 0.061 seconds
	Number of clients running queries: 50
	Average number of queries per client: 1</pre>
<p>Si no queremos introducir nuestras propias consultas SQL pero sí que queremos <strong>personalizar la creación de la tabla</strong>, podemos especificar parámetros como el número de columnas VARCHAR con</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--number-char-cols</div></div>
<p>, el número de columnas INT con</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">--number-int-cols=</div></div>
<p>, etc.</p>
<p>Esta es una pequeña muestra de las posibilidades que nos brinda esta utilidad de MySQL y su gran utilidad para las pruebas de rendimiento de bases de datos en entornos de desarrollo y pre-producción. Si queréis profundizar más en las posibilidades de mysqlslap os recomiendo revisar la <a href="http://dev.mysql.com/doc/refman/5.1/en/mysqlslap.html" target="_blank">documentación de MySQL</a>.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/5-formas-de-encontrar-y-optimizar-consultas-mysql-problematicas/" title="5 formas de encontrar y optimizar consultas MySQL problemáticas">5 formas de encontrar y optimizar consultas MySQL problemáticas</a></li><li><a href="http://rm-rf.es/mysql-query-cache-configuracion-y-optimizacion/" title="MySQL Query Cache: configuración y optimización">MySQL Query Cache: configuración y optimización</a></li><li><a href="http://rm-rf.es/disponible-mysqltuner-100/" title="Disponible MySQLTuner 1.0.0">Disponible MySQLTuner 1.0.0</a></li><li><a href="http://rm-rf.es/crear-un-cluster-mysql-con-un-unico-comando/" title="Crear un cluster MySQL con un único comando">Crear un cluster MySQL con un único comando</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/mysql-tools-benchmarking-con-mysqlslap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL: resolución de nombres (DNS) y problemas con conexiones remotas</title>
		<link>http://rm-rf.es/mysql-resolucion-de-nombres-dns-y-problemas-con-conexiones-remotas/</link>
		<comments>http://rm-rf.es/mysql-resolucion-de-nombres-dns-y-problemas-con-conexiones-remotas/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 17:12:19 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[dns]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1908</guid>
		<description><![CDATA[Durante un rato, hoy me ha traído de cabeza un problema con un servidor MySQL en el que se estaban encolando todas las conexiones, las cuales no llegaban a conectar y se bloqueaban del siguiente modo: &#124; 64 &#124; unauthenticated user &#124; 10.0.3.17:37723 &#124; &#124; Connect &#124; &#124; login &#124; &#124; &#124; 65 &#124; unauthenticated [...]]]></description>
			<content:encoded><![CDATA[<p>Durante un rato, hoy me ha traído de cabeza un problema con un servidor MySQL en el que se estaban encolando todas las conexiones, las cuales no llegaban a conectar y se bloqueaban del siguiente modo:</p>
<pre>| 64 | unauthenticated user | 10.0.3.17:37723 |               | Connect |      | login |                  |
| 65 | unauthenticated user | 10.0.3.6:45973  |               | Connect |      | login |                  |
| 66 | unauthenticated user | 10.0.3.6:45974  |               | Connect |      | login |                  |
| 67 | unauthenticated user | 10.0.3.6:45975  |               | Connect |      | login |                  |
| 68 | unauthenticated user | 10.0.3.6:45976  |               | Connect |      | login |                  |
| 69 | unauthenticated user | 10.0.3.6:45977  |               | Connect |      | login |                  |
| 70 | unauthenticated user | 10.0.3.6:45978  |               | Connect |      | login |                  |
| 71 | unauthenticated user | 10.0.3.6:45979  |               | Connect |      | login |                  |
| 72 | unauthenticated user | 10.0.3.6:45980  |               | Connect |      | login |                  |
| 73 | unauthenticated user | 10.0.3.6:45981  |               | Connect |      | login |                  |</pre>
<p>En el momento que he verificado que el problema surgía <strong>únicamente con las conexiones remotas</strong> he comenzado a revisar las distintas posibilidades, entre las que se encontraba por ejemplo revisar que los usuarios MySQL estuvieran correctamente configurados, que no hubiera problemas en las bases de datos, etc. Pero realmente el problema surgía mucho antes, en el momento en el que se establecía la conexión, antes de siquiera pedir credenciales.</p>
<p>En este caso <strong>el problema radicaba en que los servidores DNS configurados para la máquina (en <a title="Hacer que /etc/resolv.conf utilice el DNS secundario o balancee carga" href="http://rm-rf.es/hacer-que-etcresolv-conf-utilice-el-dns-secundario-o-balancee-carga/">/etc/resolv.conf</a>) no funcionaban</strong> correctamente e <strong>impedían a MySQL resolver los hosts remotos que intentaban conectar</strong>. MySQL siempre que recibe una conexión remota vía IP intenta revisar a que nombre resuelve para posteriormente hacer el paso contrario y verificar/comparar que el host también resuelve a dicha IP original. El servidor no pasaba de aquí y generaba el cuello de botella.</p>
<p>Si queremos evitar que esto suceda una de dos, o nos aseguramos que los servidores DNS resuelven rápida y correctamente o deshabilitamos la resolución de nombres con <strong>&#8211;skip-name-resolve</strong>, en este caso únicamente podremos usar IPs y no hosts en la tabla de privilegios.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/%c2%bfpor-que-dig-trace-resuelve-y-dig-a-secas-no/" title="¿Por qué &#8216;dig +trace&#8217; resuelve y &#8216;dig&#8217; a secas no?">¿Por qué &#8216;dig +trace&#8217; resuelve y &#8216;dig&#8217; a secas no?</a></li><li><a href="http://rm-rf.es/crear-un-cluster-mysql-con-un-unico-comando/" title="Crear un cluster MySQL con un único comando">Crear un cluster MySQL con un único comando</a></li><li><a href="http://rm-rf.es/telefonica-bloquea-el-acceso-a-sus-dns-desde-redes-externas/" title="Telefónica bloquea el acceso a sus DNS desde redes externas">Telefónica bloquea el acceso a sus DNS desde redes externas</a></li><li><a href="http://rm-rf.es/windows-server-2003-no-funciona-la-resolucion-dns/" title="Windows Server 2003: no funciona la resolución DNS">Windows Server 2003: no funciona la resolución DNS</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/mysql-resolucion-de-nombres-dns-y-problemas-con-conexiones-remotas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup de todas las bases de datos MySQL con una sola línea de comandos</title>
		<link>http://rm-rf.es/backup-de-todas-las-bases-de-datos-mysql-con-una-sola-linea-de-comandos/</link>
		<comments>http://rm-rf.es/backup-de-todas-las-bases-de-datos-mysql-con-una-sola-linea-de-comandos/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 18:40:30 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[bases de datos]]></category>
		<category><![CDATA[mysqldump]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1594</guid>
		<description><![CDATA[Probablemente la mayoría de vosotros trabajéis con bases de datos MySQL y tengáis scripts personalizados para hacer copias de seguridad de las mismas. Por ello, y por si os fuera de utilidad os dejo esta línea de comandos  que hace un dump de todas las bases de datos de un servidor MySQL separadas en ficheros [...]]]></description>
			<content:encoded><![CDATA[<p>Probablemente la mayoría de vosotros trabajéis con bases de datos <a title="MySQL" href="http://rm-rf.es/categoria/mysql/" target="_blank">MySQL</a> y tengáis scripts personalizados para hacer <strong>copias de seguridad</strong> de las mismas. Por ello, y por si os fuera de utilidad os dejo esta línea de comandos  que hace un dump de todas las bases de datos de un servidor MySQL separadas en ficheros .sql independientes.</p>
<pre>for DB in `mysql -e "show databases" -u USUARIO -pPASSWORD | grep -v Database`; do mysqldump -u USUARIO -pPASSWORD $DB &gt; "$DB.sql"; done</pre>
<p>Como podéis ver es bastante sencillo, hacemos un bucle con la salida del comando &#8220;show databases&#8221; que vuelca por pantalla todas las bases de datos del servidor, eliminamos la única línea que no nos interesa (la que contiene Database) y vamos haciendo una a una la copia de seguridad de cada una de las bases de datos con <a title="MySQLdump" href="http://rm-rf.es/backups-mysql-con-mysqldump/" target="_blank">mysqldump</a>. Únicamente tendréis que modificar el usuario y clave con el que conectar al servicio.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/backups-mysql-con-mysqldump/" title="Backups MySQL con mysqldump">Backups MySQL con mysqldump</a></li><li><a href="http://rm-rf.es/mysqldump-error-2013-lost-connection-to-mysql-server-during-query-when-dumping-table/" title="mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table">mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table</a></li><li><a href="http://rm-rf.es/5-formas-de-encontrar-y-optimizar-consultas-mysql-problematicas/" title="5 formas de encontrar y optimizar consultas MySQL problemáticas">5 formas de encontrar y optimizar consultas MySQL problemáticas</a></li><li><a href="http://rm-rf.es/clonar-tabla-mysql-forma-rapida-sencilla/" title="Clonar una tabla MySQL de forma rápida y sencilla">Clonar una tabla MySQL de forma rápida y sencilla</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/backup-de-todas-las-bases-de-datos-mysql-con-una-sola-linea-de-comandos/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>MySQL Query Cache: configuración y optimización</title>
		<link>http://rm-rf.es/mysql-query-cache-configuracion-y-optimizacion/</link>
		<comments>http://rm-rf.es/mysql-query-cache-configuracion-y-optimizacion/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 17:05:46 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[optimizacion]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1574</guid>
		<description><![CDATA[&#8220;Query Cache&#8221; es una de las funcionalidades más interesantes que ofrece MySQL. A grandes rasgos, Query cache almacena en memoria el contenido y resultado de una consulta tipo SELECT, de modo que cuando un cliente vuelva a ejecutar la misma consulta (tiene que ser exactamente la misma), esta no tendrá que procesarse y se servirá [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<strong>Query Cache</strong>&#8221; es una de las funcionalidades más interesantes que ofrece <strong><a title="MySQL" href="http://rm-rf.es/sobre/mysql/" target="_blank">MySQL</a></strong>. A grandes rasgos,<strong> Query cache almacena en memoria el contenido y resultado de una consulta tipo SELECT</strong>, de modo que cuando un cliente vuelva a ejecutar la misma consulta (tiene que ser exactamente la misma), esta no tendrá que procesarse y se servirá directamente de la memoria sin necesidad de utilizar recursos de MySQL.</p>
<p>Según esta explicación, lo primero que viene a la mente es que la Query Cache será efectiva en bases de datos en las que las tablas no tienen demasiados cambios y predominan los SELECT frente a los INSERT. Vamos a explicar de forma sencilla como activar la caché y revisar sus resultados. Recomiendo leer la <a href="http://dev.mysql.com/doc/refman/5.1/en/query-cache.html" target="_blank">documentación de MySQL</a> para quien quiera profundizar en el tema.</p>
<p>Lo primero que debemos hacer para activar la caché de consultas es indicarlo en el fichero de configuración my.cnf, a través de la directiva</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">query_cache_type</div></div>
<p>, que acepta tres valores:</p>
<p>Query Caché desactivada:</p>
<pre>query_cache_type = 0</pre>
<p>Query Caché activada:</p>
<pre>query_cache_type = 1</pre>
<p>Query Caché activada según demanda (especificandolo en la consulta (SELECT /* SQL_CACHE */):</p>
<pre>query_cache_type = 2</pre>
<p>En nuestro caso la activamos con el parámetro &#8220;1&#8243;, podemos ver el estado actual desde la shell MySQL:</p>
<pre>mysql&gt; select @@query_cache_type;
+--------------------+
| @@query_cache_type |
+--------------------+
| ON                 |
+--------------------+
1 row in set (0.00 sec)</pre>
<p>Una vez activada, tenemos que asignar un tamaño de memoria disponible para el almacenamiento de estas consultas. En la mayoría de los casos con un valor menor de 100M debería ser suficiente. En el fichero my.cnf tenemos:</p>
<pre>query_cache_size=28M</pre>
<p>Bien, con estos dos parámetros configurados ya empezaría a utilizarse la Query Cache en nuestro servidor MySQL. Pasado un tiempo debería llegar el momento de comprobar los resultados y verificar si está siendo efectiva. Para ello, revisamos el estado de Query Cache directamente desde la shell MySQL:</p>
<pre>mysql&gt; show status like 'Qcache%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 2319      |
| Qcache_free_memory      | 7119040   |
| Qcache_hits             | 143073915 |
| Qcache_inserts          | 67474731  |
| Qcache_lowmem_prunes    | 9384509   |
| Qcache_not_cached       | 71545921  |
| Qcache_queries_in_cache | 7528      |
| Qcache_total_blocks     | 17974     |
+-------------------------+-----------+
8 rows in set (0.00 sec)</pre>
<p>La explicación de cada variable es la siguiente:</p>
<ul>
<li><strong>Qcache_free_blocks</strong>: El número de bloques de memoria disponibles en la query cache.</li>
<li><strong>Qcache_free_memory</strong>: La cantidad de memoria libre en la query cache.</li>
<li><strong>Qcache_hits</strong>: El número de aciertos de la query caché (consultas servidas desde la cache).</li>
<li><strong>Qcache_inserts</strong>: El número de consultas insertadas a la cache.</li>
<li><strong>Qcache_lowmem_prunes</strong>: El número de consultas eliminadas de la cache por falta de memoria disponible.</li>
<li><strong>Qcache_not_cached</strong>: Número de consultas que no se han podido cachear.</li>
<li><strong>Qcache_queries_in_cache</strong>: Número de consultas registradas en la cache.</li>
<li><strong>Qcache_total_blocks</strong>: Número de bloques en la cache.</li>
</ul>
<p>De estos puntos, conviene tener en cuenta que si el valor de Qcache_free_blocks es muy alto significa que hay fragmentación en la cache y conviene ejecutar <strong>FLUSH QUERY CACHE</strong> para desfragmentar (<em>esto no elimina la cache</em>). La eficiencia de la cache se mide mediante esta fórmula:<strong> Qcache_hits/(Com_select+Qcache_hits)</strong>, evidentemente un número alto de hits y un buen ratio respecto a los Com_select (número total de consultas SELECT ejecutadas) es lo óptimo. Podéis ver el número de selects globales del siguiente modo:</p>
<pre>mysql&gt; show global status like 'Com_select%';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| Com_select    | 71742078 |
+---------------+----------+
1 row in set (0.00 sec)</pre>
<p>Para comenzar a <em>trastear</em> con la Query Cache de MySQL esto puede ser suficiente, para el que quiera profundizar puede hacerlo revisando toda la documentación disponible de MySQL del enlace anterior.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/5-formas-de-encontrar-y-optimizar-consultas-mysql-problematicas/" title="5 formas de encontrar y optimizar consultas MySQL problemáticas">5 formas de encontrar y optimizar consultas MySQL problemáticas</a></li><li><a href="http://rm-rf.es/mysql-tools-benchmarking-con-mysqlslap/" title="MySQL tools: benchmarking con mysqlslap">MySQL tools: benchmarking con mysqlslap</a></li><li><a href="http://rm-rf.es/disponible-mysqltuner-100/" title="Disponible MySQLTuner 1.0.0">Disponible MySQLTuner 1.0.0</a></li><li><a href="http://rm-rf.es/crear-un-cluster-mysql-con-un-unico-comando/" title="Crear un cluster MySQL con un único comando">Crear un cluster MySQL con un único comando</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/mysql-query-cache-configuracion-y-optimizacion/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>MySQL Cluster (I): Instalación de nodos de datos/SQL y gestión (MGM)</title>
		<link>http://rm-rf.es/mysql-cluster-instalacion-nodos-de-datos-sql-gestion-mgm/</link>
		<comments>http://rm-rf.es/mysql-cluster-instalacion-nodos-de-datos-sql-gestion-mgm/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 17:22:10 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[cluster]]></category>

		<guid isPermaLink="false">http://rm-rf.es/?p=1339</guid>
		<description><![CDATA[Esta es la primera parte de una serie de artículos en los que aprenderemos a montar, configurar y gestionar un cluster MySQL básico. En este caso utilizaremos dos nodos de datos, dos nodos SQL y un nodo de gestión. Hay varias formas de instalar cada uno de los nodos, ya sea con gestores de paquetes [...]]]></description>
			<content:encoded><![CDATA[<p>Esta es la primera parte de una serie de artículos en los que aprenderemos <strong>a montar, configurar y gestionar un cluster MySQL básico</strong>. En este caso utilizaremos dos nodos de datos, dos nodos SQL y un nodo de gestión.</p>
<p>Hay varias formas de instalar cada uno de los nodos, ya sea con gestores de paquetes de las distribuciones (apt, yum, .deb, rpm), compilando desde el código fuente o con los paquetes binarios. En este caso vamos a utilizar los paquetes binarios por su sencillez de instalación, cada cual puede escoger la forma que estime oportuna y según sus necesidades.</p>
<p>No voy a detenerme a explicar <strong>como funciona un cluster MySQL</strong> en profundidad, podéis ver toda la documentación del <a href="http://dev.mysql.com/doc/index-cluster.html" target="_blank">sitio web de MySQL</a> donde está todo perféctamente explicado (esta guía está basada en esa documentación). Simplemente explicaré las partes (nodos) que van a componer este cluster.</p>
<ul>
<li><strong>Nodos de datos</strong>: Son los nodos <strong>encargados de almacenar los datos del cluster</strong>. Cada nodo será una máquina física independiente. Tal y como indica la documentación de MySQL hay tantos nodos de datos como réplicas, multiplicado por el número de fragmentos. Por ejemplo, con dos réplicas, cada uno teniendo dos fragmentos, necesita cuatro nodos de datos. Es recomendable revisar bien la documentación oficial de MySQL para entender el concepto y las diferentes configuraciones posibles.</li>
<li><strong>Nodos SQL</strong>: Son los nodos que serán usados para <strong>acceder a los datos que almacenan los nodos de datos</strong>, básicamente <strong>es un servidor MySQL estandar</strong> pero que utiliza el motor de almacenamiento <strong>NDBCLUSTER</strong>.</li>
<li><strong>Nodo de gestión</strong>: También llamado nodo <strong>MGM</strong>, es el <strong>encargado de gestionar todos los nodos del cluster</strong>, entre sus funciones encontramos las de arrancar y parar nodos, aplicar configuraciones, efectuar copias de seguridad, etc.</li>
</ul>
<h2>Instalación de nodos de datos y SQL</h2>
<p>La instalación de un nodo de datos y un nodo SQL es igual, lo único que cambia es a posteriori la configuración y modo de arranque de cada uno de ellos (lo explicaré en el siguiente artículo) .Podéis descargar el paquete binario al igual que los demás a través de este enlace:</p>
<p>http://dev.mysql.com/downloads/cluster/</p>
<p>En este caso &#8220;Generic Linux (glibc 2.3) (x86, 32-bit), Compressed TAR Archive&#8221;:</p>
<pre># wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.1/mysql-cluster-gpl-7.1.3-linux-i686-glibc23.tar.gz/from/http://gd.tuwien.ac.at/db/mysql/</pre>
<p>Procedemos a crear el usuario y grupo de sistema para ejecutar MySQL:</p>
<pre># groupadd mysql
# useradd -g mysql mysql</pre>
<p>Descomprimimos el paquete y posteriormente lo renombramos a &#8220;mysql&#8221;, ubicandolo en /usr/local/:</p>
<pre># tar -C /usr/local -xzvf mysql-cluster-gpl-7.0.15-linux-i686-glibc23.tar.gz
# mv /usr/local/mysql-cluster-gpl-7.0.15-linux-i686-glibc23.tar.gz /usr/local/mysql</pre>
<p>Nos dirigimos a la ruta correspondiente y ejecutamos el script preparado para crear las bases de datos de sistema:</p>
<pre># cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql</pre>
<p>Aplicamos los permisos correspondientes a las carpetas MySQL:</p>
<pre># cd /usr/local/mysql
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .</pre>
<p><em>Nota: /usr/local/mysql/data es la ruta que utilizaremos en todos los nodos para guardar los datos</em></p>
<p>Finalmente copiamos el script de arranque de MySQL a init.d, le permitimos ejecución y lo añadimos al runlevel correspondiente:</p>
<pre># cp support-files/mysql.server /etc/rc.d/init.d/
# chmod +x /etc/init.d/mysql.server
# chkconfig --add mysql.server</pre>
<p><em>Nota: chkconfig solo funcionará en sistemas Red-Hat y derivados.</em></p>
<p>Bien, ya tenemos el nodo primer nodo de datos ó SQL instalado. Habría que repetir esta tarea en todas las máquinas que quisieramos utilizar como nodo de datos o nodo SQL.</p>
<h2>MANAGEMENT  ndb_mgm</h2>
<p>La instalación del nodo de gestión es extremadamente sencilla. Tenemos que descargar el mismo paquete que para los nodos de datos y SQL, descomprimirlo en una ruta temporal y copiar los ejecutables correspondientes:</p>
<pre># cd mysql-5.1.44-ndb-7.0.15-linux-i686-glibc23
# cp bin/ndb_mgm* /usr/local/bin
# cd /usr/local/bin
# chmod +x ndb_mgm*</pre>
<p>En el próximo artículo comenzaremos a tocar las configuraciones de los nodos de datos, gestión y mysqld. Entonces podremos arrancar el cluster y empezar a hacer las pruebas correspondientes.</p>
<h4  class="related_post_title">También te puede interesar:</h4><ul class="related_post"><li><a href="http://rm-rf.es/crear-un-cluster-mysql-con-un-unico-comando/" title="Crear un cluster MySQL con un único comando">Crear un cluster MySQL con un único comando</a></li><li><a href="http://rm-rf.es/red-hat-cluster-generic-error-al-crear-un-ip-resource/" title="Red Hat Cluster: &#8220;generic error&#8221; al crear un IP Resource">Red Hat Cluster: &#8220;generic error&#8221; al crear un IP Resource</a></li><li><a href="http://rm-rf.es/replicacion-mysql-sql_slave_skip_counter/" title="Replicación MySQL: SQL_SLAVE_SKIP_COUNTER">Replicación MySQL: SQL_SLAVE_SKIP_COUNTER</a></li><li><a href="http://rm-rf.es/replicacion-mysql-maestro-esclavo/" title="Replicacion MySQL maestro-esclavo">Replicacion MySQL maestro-esclavo</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://rm-rf.es/mysql-cluster-instalacion-nodos-de-datos-sql-gestion-mgm/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

