<?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>Blog de Laura Berdasco &#187; mysql</title>
	<atom:link href="http://www.lauraberdasco.com/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lauraberdasco.com</link>
	<description>Guías, trucos, procesos y modelos tecnológicos</description>
	<lastBuildDate>Thu, 20 Oct 2011 06:30:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Replicación MySQL con Master-Slave sobre Ubuntu 8.10 (slave)</title>
		<link>http://www.lauraberdasco.com/2009/03/replicacion-mysql-con-master-slave-sobre-ubuntu-810-slave/</link>
		<comments>http://www.lauraberdasco.com/2009/03/replicacion-mysql-con-master-slave-sobre-ubuntu-810-slave/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 09:54:34 +0000</pubDate>
		<dc:creator>laura</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[configuracion]]></category>
		<category><![CDATA[master slave]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[trucos]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.lauraberdasco.com/?p=296</guid>
		<description><![CDATA[Configuración del slave Ahora, empecemos con la configuración desde cero de un slave en una nueva máquina (Ubuntu 8.10). Accedemos, como hemos comentado antes, al archivo my.cnf para configurar en la nueva máquina el slave. sudo gedit /etc/mysql/my.cnf Añadimos las siguientes líneas en el apartado [mysqld] : server-id=2 master-host = ip/DNShost master-user = usuarioslave master-password… <a href="http://www.lauraberdasco.com/2009/03/replicacion-mysql-con-master-slave-sobre-ubuntu-810-slave/" rel="bookmark">leer más</a>]]></description>
			<content:encoded><![CDATA[<p><strong>Configuración del slave</strong></p>
<p>Ahora, empecemos con la configuración desde cero de un <em>slave</em> en una nueva máquina (Ubuntu 8.10).</p>
<ol>
<li>Accedemos, como hemos comentado antes, al archivo my.cnf para configurar en la nueva máquina el slave.<br />
<code><br />
sudo gedit /etc/mysql/my.cnf</code>
</li>
<li>Añadimos las siguientes líneas en el apartado <strong>[mysqld]</strong> :<br />
<code>server-id=2<br />
master-host = ip/DNShost<br />
master-user = usuarioslave<br />
master-password = clave_acceso_slave<br />
master-port= 3306<br />
replicate-do-db=base_datos</code><br />
Comentamos las líneas de skip-networking y bind-address, como hemos dicho en el <a title="Replicación MYSQL con Master-Slave sobre Ubuntu 8.10 (master)" href="http://www.lauraberdasco.com/?p=273" target="_blank">post</a> anterior.</li>
<li>Reiniciamos el servidor MySQL<br />
<code><br />
sudo /etc/init.d/mysql restart</code></li>
<li>Accedemos a la consola de MySQL como <em>root</em>:<br />
<code><br />
mysql -u root -p</code>
</li>
<li>Miraremos el estado y configuración del slave, por si ya se hubiera inicializado automáticamente al arrancar MySql.<br />
<code><br />
SHOW SLAVE STATUS \G;</code><br />
Y a continuación, aparecerá algo así:<br />
<code>*************************** 1. row ***************************<br />
Slave_IO_State: Waiting for master to send event<br />
Master_Host: IP/DNS_host<br />
Master_User: usuarioslave<br />
Master_Port: 3306<br />
Connect_Retry: 60<br />
Master_Log_File: mysql-bin.000002<br />
Read_Master_Log_Pos: 98<br />
Relay_Log_File: mysqld-relay-bin.000021<br />
Relay_Log_Pos: 235<br />
Relay_Master_Log_File: mysql-bin.000002<br />
Slave_IO_Running: Yes<br />
Slave_SQL_Running: Yes<br />
Replicate_Do_DB: base_datos<br />
Replicate_Ignore_DB:<br />
Replicate_Do_Table:<br />
Replicate_Ignore_Table:<br />
Replicate_Wild_Do_Table:<br />
Replicate_Wild_Ignore_Table:<br />
Last_Errno: 0<br />
Last_Error:<br />
Skip_Counter: 0<br />
Exec_Master_Log_Pos: 98<br />
Relay_Log_Space: 235<br />
Until_Condition: None<br />
Until_Log_File:<br />
Until_Log_Pos: 0<br />
Master_SSL_Allowed: No<br />
Master_SSL_CA_File:<br />
Master_SSL_CA_Path:<br />
Master_SSL_Cert:<br />
Master_SSL_Cipher:<br />
Master_SSL_Key:<br />
Seconds_Behind_Master: 0<br />
1 row in set (0.00 sec)</code></p>
<p><strong>NOTA</strong>: Si no se muestran estas opciones del <em>slave</em>, iguales o parecidas, podemos estar frente dos casos:</p>
<ul>
<li><em>Slave_IO_Running</em> y <em>Slave_SQL_Running</em> estén a <em>No</em>, cuyo significado es que no están corriendo (no se ha producido un <strong>START SLAVE;</strong> o a fallado). Muchas veces se soluciona escribiendo dicha sentencia en la consola de MySQL.</li>
<li>Los datos referentes al <em>master</em>, que hemos especificado en el archivo de configuración del <em>slave</em>, no son los correctos. Esto podría pasar en el caso de que previamente tuviéramos unos datos del máster que por cualquier operación sobre él se hayan modificado. Esto se puede resolver con el uso de la instrucción<strong> RESET SLAVE;</strong> qué lo que hace es eliminar los datos anteriores a una modificación del master y vuelve a cargar los nuevos introducidos en el archivo <em>my.cnf</em> del <em>slave</em>. Otra opción, que he encontrado por Internet, es el uso de la siguiente sentencia indicando los nuevos atributos del master:<br />
<code>STOP SLAVE;<br />
CHANGE MASTER TO MASTER_HOST='IP/DNSnueva', MASTER_USER='usuarioslave', MASTER_PASSWORD='clave_acceso_slave', MASTER_LOG_FILE='file_log_determinado' ;<br />
START SLAVE;</code><br />
<strong>NOTA</strong>: Este último paso no lo hemos necesitado ya que, una vez inicializado el <em>slave</em>, ha conectado directamente con el <em>master</em> y ha recogido sus datos.</li>
</ul>
</li>
</ol>
<p>Con esto hemos acabado esta serie de post sobre la configuración de un<em> master-slave</em> en MySQL. Espero que os sirva de ayuda. <img src='http://www.lauraberdasco.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Esto es todo, por hoy, desde el zulo, pingüinos y manzanitas world!! (con el jefe perdido xD&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lauraberdasco.com/2009/03/replicacion-mysql-con-master-slave-sobre-ubuntu-810-slave/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Replicación MySQL con Master-Slave sobre Ubuntu 8.10 (master)</title>
		<link>http://www.lauraberdasco.com/2009/03/replicacion-mysql-con-master-slave-sobre-ubuntu-810-master/</link>
		<comments>http://www.lauraberdasco.com/2009/03/replicacion-mysql-con-master-slave-sobre-ubuntu-810-master/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 11:05:39 +0000</pubDate>
		<dc:creator>laura</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[configuracion]]></category>
		<category><![CDATA[master slave]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[trucos]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.lauraberdasco.com/?p=273</guid>
		<description><![CDATA[Tras decidir, como se indica en el post anterior, que el sistema de bases de datos que utilizaríamos en nuestro proyecto sería, finalmente, por replicación hemos empezado a hacer unas cuantas pruebas. Lo primero de todo decir que, después de unas horas de lucha intensa con diferentes fuentes de información sobre master-slave de MySQL, hemos… <a href="http://www.lauraberdasco.com/2009/03/replicacion-mysql-con-master-slave-sobre-ubuntu-810-master/" rel="bookmark">leer más</a>]]></description>
			<content:encoded><![CDATA[<p>Tras decidir, como se indica en el <a title="Limitaciones de MySQL Cluster, decisión final" href="http://www.lauraberdasco.com/?p=261" target="_blank">post anterior</a>, que el sistema de bases de datos que utilizaríamos en nuestro proyecto sería, finalmente, por replicación hemos empezado a hacer unas cuantas pruebas. Lo primero de todo decir que, después de unas horas de lucha intensa con diferentes fuentes de información sobre <em>master-slave</em> de <strong>MySQL</strong>, hemos conseguido montar un primer sistema sencillo con el que podremos hacer diferentes prueb as encaradas a su implementación final sobre <strong>Amazon EC2</strong>. En la publicación que os presento hoy repasaremos estos pasos iniciales que tanto nos ha costado realizar. Partimos de una base de datos (<em>base_datos</em>) completamente vacía (<em>sin registro alguno</em>); para bases de datos que no esté vacía, el sistema de montaje es un poco diferente.</p>
<p><strong>NOTA</strong>: El sistema operativo sobre el cuál realizamos el montaje es Ubuntu 8.10.</p>
<p><strong>Configuración del master</strong></p>
<p>En este apartado os indicaré los pasos que hemos seguido para montar nuestro servidor <em>master</em>.</p>
<ol>
<li>Como muchos de vosotros estaréis pensando, uno de los pasos necesarios para la configuración del sistema de MySQL es la edición de su archivo de configuración (valgase la redundancia). En este caso, efectivamente, lo primero que tendremos que hacer será editar <em>my.cnf</em> con privilegios de <em>root</em>; para ello, abriremos el terminal y escribiremos la siguiente línia (<em>la ruta puede variar. Os dejo la ruta donde se encuentra mi archivo de configuración</em>):<br />
<code><br />
sudo gedit /etc/mysql/my.cnf<br />
</code></li>
<li>Introducir en el apartado <strong>[mysqld]</strong> los siguientes atributos:<br />
<code><br />
server-id=1<br />
innodb_flush_log_at_trx_commit=1<br />
sync_binlog=1<br />
log-bin=mysql-bin<br />
binlog-do-db=base_datos<br />
</code></p>
<p>Vamos por partes:</p>
<ul>
<li>El id del server, para definir un master, debe ser 1. Por eso indicamos que<em> server-id=1</em>.</li>
<li><em>innodb_flush_log_at_trx_commit=1</em> y <em>sync_binlog=1</em> son dos atributos que colocamos en este caso (leer más en el artículo anterior) ya que decidímos que el master debería tener como motor de almacenamiento el <strong>InnoDB</strong>. Para más información, consultar la documentación de <a title="MySQL Configuration Master" href="http://dev.mysql.com/doc/refman/5.0/en/replication-howto-masterbaseconfig.html" target="_blank">MySQL</a>.</li>
<li><em>log-bin</em> debe indicar en que archivo se escribirá el log del máster. En este caso, utilizamos el mismo que utiliza MySQL. Os dejo un <a title="Replicación master slave" href="http://ele-zeta.com.ar/2007/11/20/replicacion-de-bases-de-datos-mysql-parte-2/" target="_blank">tutorial</a> en el que podréis ver que este archivo log puede destinarse en cualquier lugar.</li>
<li><em>binlog-do-db=base_datos</em> , le indica al master sobre qué base de datos debe guardar la actividad.</li>
</ul>
<p><strong>IMPORTANTE</strong>: Comentaremos las opciones de <em>skip-networking</em> y <em>bind-address</em> que se encuentran en ese mismo archivo de configuración, en el caso de que existan. Para comentar las líneas debemos situarnos al principio de la línea y añadir un símbolo <strong>#</strong>.</li>
<li>Reiniciar el servidor MySQL<br />
<code><br />
sudo /etc/init.d/mysql restart<br />
</code></li>
<li>Acceder a la consola de MySQL, como <em>root</em>.<br />
<code><br />
mysql -u root -p<br />
</code><br />
Dentro crearemos un usuario &#8220;slave&#8221; para que pueda ponerse en contacto con nuestro <em>master</em> y retendremos información del estado del máster para establecer un punto de inicio antes de comenzar el proceso de replicación con el <em>slave</em>.<br />
<code><br />
GRANT REPLICATION SLAVE ON *.* TO 'usuarioslave'@'%' IDENTIFIED BY 'clave_acceso_slave';<br />
FLUSH PRIVILEGES;<br />
USE  base_datos;<br />
FLUSH TABLES WITH READ LOCK;<br />
SHOW MASTER STATUS;<br />
+----------------------------+------------+----------------------+---------------------------+<br />
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |<br />
+---------------------------+-------------+----------------------+---------------------------+<br />
| mysql-bin.000007 |       98   | base_datos    |                             |<br />
+----------------------------+------------+----------------------+---------------------------+<br />
UNLOCK TABLES;</code></p>
<p><strong>NOTA</strong>: &#8216;%&#8217; puede substituirse también por una dirección IP o DNS concreta. Pero para hacer pruebas, este símbolo ya nos sirve.</li>
<li><strong>NOTA2</strong>: En el caso en el que queramos más slaves, tendremos que darles permisos a cada uno de ellos, con la línea descrita &#8220;GRANT REPLICATION SLAVE ON *.* TO &#8216;usuarioslave&#8217;@'%&#8217; IDENTIFIED BY &#8216;clave_acceso_slave&#8217;;&#8221; .</li>
<li>Una vez hecho todo esto, saldremos de la consola de MySQL con la sentencia:<br />
<code><br />
exit;<br />
</code></li>
</ol>
<p><strong>NOTA DE LA AUTORA</strong>: A partir de aquí empezaría la configuración del <em>slave</em>. Deseo que tengáis paciencia, en breve la acabaré de redactar y la compartiré con vosotros. Si téneis cualquier duda o sugerencia, solo téneis que dejar un comentario <img src='http://www.lauraberdasco.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Muchas gracias!</p>
<p>Esto es todo, de momento, desde el zulo, pigüinos y manzaitas world! (aún, sin jefe&#8230; <img src='http://www.lauraberdasco.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> )</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lauraberdasco.com/2009/03/replicacion-mysql-con-master-slave-sobre-ubuntu-810-master/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Limitaciones de MySQL Cluster, decisión final</title>
		<link>http://www.lauraberdasco.com/2009/03/limitaciones-de-mysql-cluster-decision-final/</link>
		<comments>http://www.lauraberdasco.com/2009/03/limitaciones-de-mysql-cluster-decision-final/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 10:52:09 +0000</pubDate>
		<dc:creator>laura</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.lauraberdasco.com/?p=261</guid>
		<description><![CDATA[En el proyecto que estamos desarrollando necesitamos, antes que nada, una alta y fácil escalabilidad del sistema de datos y por eso, en el momento de escoger el tipo de sistema de bases de datos que íbamos a utilizar pensamos como primera opción en el cluster de MySQL. MySQL Cluster nos permitía tener esa flexibilidad,… <a href="http://www.lauraberdasco.com/2009/03/limitaciones-de-mysql-cluster-decision-final/" rel="bookmark">leer más</a>]]></description>
			<content:encoded><![CDATA[<p>En el proyecto que estamos desarrollando necesitamos, antes que nada, una alta y fácil escalabilidad del sistema de datos y por eso, en el momento de escoger el tipo de sistema de bases de datos que íbamos a utilizar pensamos como primera opción en el cluster de MySQL. MySQL Cluster nos permitía tener esa flexibilidad, además de una simple replicación y transmisión de los datos&#8230; en un principio, creímos que la elección era acertada. Aún así, nos quedaban cosas por descubrir.</p>
<p>Intentamos trasladar la idea del Cluster y su montaje a un entorno EC2 de Amazon con su almacenamiento en nube (Elastic Compute Cloud) -<em>más información sobre EC2 en los blogs de <a title="Santi's Blog" href="http://nowaynoback.com" target="_blank">Santi</a> y <a title="Xavi's blog" href="http://ixavi.com" target="_blank">Xavi</a>, o en la página oficial de <a title="Amazon EC2" href="http://aws.amazon.com/ec2/" target="_blank">Amazon EC2</a></em>- y algo empezó a no cuadrar. Nos dimos cuenta, primeramente, que MySQL Cluster es un sistema cuyo <strong>uso es recomendado en redes locales</strong> que permitan una rápida velocidad y no es un sistema orientado a sistemas web; aún así, decidimos seguir adelante.</p>
<p>Otra piedra en el camino la encontramos unas horas más tarde, cuando leímos (<em>en algún apartado de la documentación de <a title="MySQL Cluster" href="http://dev.mysql.com/doc/refman/5.0/es/ndbcluster.html" target="_blank">MySQL Cluster</a></em>) que la<strong> seguridad entre la comunicación de los nodos de datos dejaba bastante que desear</strong> ya que ésta no estaba encriptada y corrías el peligro de que pudieran interceptar informaciones del sistema. Es por eso que se recomendaba la proximidad entre nodos; nuestra idea era crear diferentes instancias en EC2 que sirvieran como nodos de datos independientes y Amazon no te garantiza ningún tipo de &#8220;proximidad&#8221; entre instancias (<em>si es que puede hablarse de proximidad como una propiedad realmente física</em>). Aún así, decidimos arriesgarnos a continuar con nuestra primera solución.</p>
<p>Algunos dicen que nuestro sistema, en papel, está muy bien organizado y una vez implementado la mitad de los elementos que aparecen en el modelo de datos desaparecen. Otros dicen que no es necesario el uso de Foreign Keys (claves foráneas) en el momento real de la implementación. Aún así, nosotros estamos en la convicción de que si que lo son y por eso queríamos que nuestro sistema de base de datos las tuviera en cuenta; no importa que digáis que esta es una reflexión demasiado metódica, somos estudiantes en su último año de carrera y apostamos por un sistema bien hecho desde el principio. Por esto, cuando vimos que el motor del Cluster (ndbcluster) <strong>no soportaba claves foráneas</strong> decidimos no jugar más con dicha estructura.</p>
<p>Nos estuvimos peleando durante varias horas barajando diferentes motores e información diversa de sistemas de bases de datos y finalmente nos dimos cuenta que el propio MySQL tiene un sistema de replicación <em>master-slave</em> que permite el uso de diferentes motores para el <em>master</em> y para el <em>slave</em>. Concretamente, podíamos tener en el <em>master</em> el motor de MySQL <strong>InnoDb</strong> que si que soporta el uso de claves foráneas (tan importantes en nuestro sistema) y utilizar el motor <strong>MyIsam</strong> para los <em>slaves</em>. Este sistema se puede montar fácilmente en un entorno EC2, guardando todos los datos en un volumen <strong>EBS</strong> y utilizando las instancias para montar el <em>master-slave</em> sin contener datos propios. Esta es la última deducción, ya veremos si finalmente es la acertada.</p>
<p>En los próximos días publicaremos las pruebas que vayamos haciendo en su construcción en EC2.</p>
<p>Esto es todo por hoy desde el zulo, pingüinos y manzanitas world! (hoy sin jefe&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lauraberdasco.com/2009/03/limitaciones-de-mysql-cluster-decision-final/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Primeros pasos con MySQL Cluster: instalación, configuración y arrancada</title>
		<link>http://www.lauraberdasco.com/2009/02/primeros-pasos-con-mysql-cluster-instalacion-configuracion-y-arrancada/</link>
		<comments>http://www.lauraberdasco.com/2009/02/primeros-pasos-con-mysql-cluster-instalacion-configuracion-y-arrancada/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 14:57:47 +0000</pubDate>
		<dc:creator>laura</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[configuracion]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[trucos]]></category>

		<guid isPermaLink="false">http://www.lauraberdasco.com/?p=70</guid>
		<description><![CDATA[Como hemos comentado en el post anterior, vamos a explicar paso a paso la instalación, la configuración y el arranque de un cluster de prueba de MySQL Cluster sobre la versión 8.10 de Ubuntu. Instalación Primero, y fundamental, es tener instalados los paquetes de mysql en el sistema. Para saber si los tenemos o no,… <a href="http://www.lauraberdasco.com/2009/02/primeros-pasos-con-mysql-cluster-instalacion-configuracion-y-arrancada/" rel="bookmark">leer más</a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Como hemos comentado en el post anterior, vamos a explicar paso a paso la instalación, la configuración y el arranque de un cluster de prueba de MySQL Cluster sobre la versión 8.10 de Ubuntu. <strong><br />
</strong></p>
<p style="text-align: left;"><strong>Instalación</strong></p>
<p style="text-align: left;">Primero, y fundamental, es tener instalados los paquetes de mysql en el sistema. Para saber si los tenemos o no, podemos ir al Gestor de Paquetes Synaptic de Ubuntu (<strong>System&gt;Administration&gt;Synaptic Package Manager</strong>) y se nos abrirá una pantalla como esta después de haber introducido la contraseña de <em>root. </em>Introduciremos la palabra &#8220;mysql&#8221; en el buscador para que nos muestre todos los paquetes relacionados.</p>
<p style="text-align: left;"><a rel="attachment wp-att-92" href="http://www.lauraberdasco.com/2009/02/primeros-pasos-con-mysql-cluster-instalacion-configuracion-y-arrancada/spm-ubuntu1/"><img class="aligncenter size-full wp-image-92" title="spm-ubuntu1" src="http://www.ixavi.com/lauraberdasco.com/wp-content/uploads/2009/02/spm-ubuntu11.gif" alt="spm-ubuntu1" width="495" height="309" /></a></p>
<p style="text-align: left;">Aquellos paquetes que se acompañen con un recuadro verde son los que están instalados en el sistema. Dicho paquete <em>mysql</em> contiene, al menos en sus versiones para Ubuntu 8.10, soporte para MySQL Cluster por lo que no hemos de descargar ningún otro archivo para poder utilizarlo.</p>
<p style="text-align: left;"><strong>Creación y modificación de archivos de configuración</strong></p>
<p style="text-align: left;">Hemos de tener en cuenta que Ubuntu utiliza unos directorios concretos cuando se le delega la instalación de dichos paquetes, por defecto. Consultando la documentación oficial de <a title="Documentación en castellano de MySQL Cluster" href="http://dev.mysql.com/doc/refman/5.0/es/ndbcluster.html" target="_blank">MySQL Cluster</a> nos hemos dado cuenta de que la localización de los archivos de configuración que se expresa son diferentes a la de nuestro sistema. La siguientes línias determinarán nuestro propio proceso de configuración y arranque del sistema de cluster y no el que se indica en dicha documentación (un tanto diferente).</p>
<p>Dicho todo esto, vamos a por el primer paso. La instalación de MySQL en Ubuntu repercute en una serie de carpetas del sistema:</p>
<ul>
<li> <strong>/etc/</strong> donde el sistema añade un directorio <em>mysql</em> que, podríamos decir, guarda la información relacionada con su motor y arranque. Aquí es donde encontraremos el archivo que necesitaremos más adelante, <strong>my.cnf</strong>.</li>
<li><strong>/var/lib/</strong> donde el sistema añade tantas carpetas como sean necesarias para describir su &#8220;contenido&#8221;. Aquí encontraremos un directorio llamado mysql-cluster que es donde crearemos su archivo de configuración, <strong>config.ini</strong>.</li>
</ul>
<p>Pero, vayamos por partes.</p>
<ol>
<li><strong>Archivo de configuración config.ini</strong> para la configuración de MySQL-Cluster.<br />
Abrimos la consola (<strong>Applications&gt;Accessories&gt;Terminal</strong>), e insertamos la siguiente línia:<br />
<code><br />
cd /var/lib/mysql-cluster<br />
</code> Una vez en el directorio tendremos que crear el archivo de configuración. Como root escribiremos la siguiente línia:<br />
<code><br />
sudo gedit config.ini<br />
</code>E introduciremos la contraseña de root que tengamos. Nos abrirá el <em>gedit</em> es un programa de edición de texto muy sencillo. Al detectar que dicho archivo no existe en el directorio escogido, lo crea automáticamente. Una vez abierto, copiaremos las siguientes línias :<br />
<code><br />
# file "config.ini" - showing minimal setup consisting of 1 data node,<br />
# 1 management server, and 3 MySQL servers.<br />
# The empty default sections are not required, and are shown only for<br />
# the sake of completeness.<br />
# Data nodes must provide a hostname but MySQL Servers are not required<br />
# to do so.<br />
# If you don't know the hostname for your machine, use localhost.<br />
# The DataDir parameter also has a default value, but it is recommended to<br />
# set it explicitly.<br />
# Note: DB, API, and MGM are aliases for NDBD, MYSQLD, and NDB_MGMD<br />
# respectively. DB and API are deprecated and should not be used in new<br />
# installations.<br />
[NDBD DEFAULT]<br />
NoOfReplicas= 1<br />
[MYSQLD DEFAULT]<br />
[NDB_MGMD DEFAULT]<br />
[TCP DEFAULT]<br />
[NDB_MGMD]<br />
HostName= localhost<br />
[NDBD]<br />
HostName= localhost<br />
DataDir= /var/lib/mysql-cluster<br />
[MYSQLD]<br />
[MYSQLD]<br />
[MYSQLD]<br />
</code><br />
<strong>Nota</strong>: HostName de NDB_MGM (nodo administración) y NDBD (nodo datos) y DataDir dependerán de cada proyecto, pero el ejemplo que se muestra funciona para la prueba rápida en un mismo ordenador. No olvidemos, que en un sistema corriendo de forma real tendríamos diferentes máquinas para los diferentes procesos de administración y almacenamiento de datos, y por tanto sus HostsName serán unos en concreto para cada máquina.</li>
<li><strong>Activar motor de almacenamiento ndbcluster</strong>.<br />
Accedemos, mediante consola, al siguiente directorio:<br />
<code><br />
cd /etc/mysql/<br />
</code><br />
Y abriremos el archivo <strong>my.cnf</strong> para poder activar el motor de almacenamiento. Ésto no es más que añadir la siguiente línea al código:<br />
<code><br />
[mysqld]<br />
ndbcluster<br />
</code><br />
Y más o menos, tendremos una parte del documento que será de la siguiente manera;<br />
<code><br />
...<br />
[mysqld]<br />
#<br />
# * Basic Settings<br />
#<br />
ndbcluster<br />
#<br />
# * IMPORTANT<br />
#   If you make changes to these settings and your system uses apparmor, you may<br />
#   also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.<br />
#<br />
...<br />
</code><br />
Una vez hecho esto podremos crear los nuevos nodos.
</li>
<li><strong>Arrancamos el nodo de administración y el nodo de datos</strong><br />
Volvemos a colocarnos en el directorio /var/lib/mysql-cluster :<br />
<code><br />
cd /var/lib/mysql-cluster<br />
</code><br />
Con privilegios de root, arrancamos el nodo administrador:<br />
<code><br />
sudo ndb_mgmd<br />
</code><br />
Y a continuación, arrancamos un nodo de datos:<br />
<code><br />
sudo ndbd --initial<br />
</code>
</li>
<li><strong>Reiniciar el servidor MySQL y comprovar que funciona el NDBCLUSTER</strong><br />
Una vez llegado este punto, es hora de reiniciar el servidor mysql que tengamos. Para ello es necesario que lo hagamos con permisos de root:<br />
<code><br />
sudo /etc/init.d/mysql stop<br />
sudo /etc/init.d/mysql start<br />
</code><br />
o<br />
<code><br />
sudo /etc/init.d/mysql restart<br />
</code><br />
Si no ha aparecido ningún error, ya estamos preparados para arrancar el cluster.
</li>
<li><strong>Arrancar mysql con el cluster</strong><br />
Inicializaremos mysql desde la consola:<br />
<code><br />
mysql -u root -p<br />
</code><br />
Y nos pedirá la contraseña que hayamos definido para el sistema mysql. La introducimos y nos aparecerá algo parecido a ésto:<br />
<code><br />
Welcome to the MySQL monitor.  Commands end with ; or g.<br />
Your MySQL connection id is 64<br />
Server version: 5.0.67-0ubuntu6 (Ubuntu)</p>
<p>Type 'help;' or 'h' for help. Type 'c' to clear the buffer.</p>
<p>mysql><br />
</code><br />
Introducimos una sentencia que nos permita ver de qué se compone nuestro sistema mysql<br />
<code><br />
mysql> show engines;<br />
</code><br />
y nos debería aparecer una tabla que contenga varías filas. Entre ellas, debería aparecer una como esta:<br />
<code><br />
| ndbcluster | YES      | Clustered, fault-tolerant, memory-based tables<br />
</code><br />
A veces es posible que aparezca DEFAULT en vez de YES. Si no aparece ninguna de estas dos es que algo no ha salido bien. Intenta revisar todos los pasos anteriores aquí descritos.</p>
<p>Ahora jugaremos con alguna base de datos que tengamos en el sistema. Si no tienes ninguna, puedes crearla facilmente con Navicat o cualquier otra aplicación gestora de mysql. Pensemos en que la tenemos.<br />
<code><br />
mysql> use db_usuaris;<br />
</code><br />
y una vez en la base de datos que hemos escogido, vamos a crear una table que utilice el engine del cluster:<br />
<code><br />
mysql> create table ctest (i INT) engine=ndbcluster;<br />
</code><br />
Una vez la hemos creado, vamos a ver sus propiedades<br />
<code><br />
mysql> show create table ctest G;<br />
</code><br />
y debería salir algo, tal que así:<br />
<code><br />
*************************** 1. row ***************************<br />
       Table: ctest<br />
Create Table: CREATE TABLE `ctest` (<br />
  `i` int(11) default NULL<br />
) ENGINE=ndbcluster DEFAULT CHARSET=latin1<br />
1 row in set (0.00 sec)<br />
</code><br />
Finalizamos sesión en mysql escribiendo:<br />
<code><br />
mysql> exit;<br />
</code>
</li>
<li><strong>Para finalizar, ver si los nodos se han inicializado correctamente</strong><br />
Para ello vamos a arrancar el nodo administración de la siguiente manera:<br />
<code><br />
sudo ndb_mgm<br />
</code><br />
Ya simplemente nos queda mirar un reporte de los nodos que se han creado, y ya habremos terminado con este proceso:<br />
<code><br />
ndb>show;<br />
</code><br />
y si todo ha ido bien, aparecerá algo tal que así:<br />
<code>Cluster Configuration<br />
---------------------<br />
[ndbd(NDB)]     1 node(s)<br />
id=2    @127.0.0.1  (Version: 3.5.3, Nodegroup: 0, Master)</p>
<p>[ndb_mgmd(MGM)] 1 node(s)<br />
id=1    @127.0.0.1  (Version: 3.5.3)</p>
<p>[mysqld(API)]   3 node(s)<br />
id=3    @127.0.0.1  (Version: 3.5.3)<br />
id=4 (not connected, accepting connect from any host)<br />
id=5 (not connected, accepting connect from any host)<br />
</code>
</li>
</ol>
<p>Llegados a este punto, ya podemos dar por finalizada la tarea de este post. Hemos conseguido inicializar correctamente un cluster MySQL y ya podemos guardar información en las tablas creadas con esta tecnología.<br />
Otro día, más.</p>
<p>Saludos desde el zulo, pingüinos y manzanitas world!</p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: center;">
<p style="text-align: center;">
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://www.lauraberdasco.com/2009/02/primeros-pasos-con-mysql-cluster-instalacion-configuracion-y-arrancada/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Conceptos sobre MySQL Cluster</title>
		<link>http://www.lauraberdasco.com/2009/02/conceptos-de-mysql-cluster/</link>
		<comments>http://www.lauraberdasco.com/2009/02/conceptos-de-mysql-cluster/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 11:30:45 +0000</pubDate>
		<dc:creator>laura</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.lauraberdasco.com/?p=23</guid>
		<description><![CDATA[El proyecto que estamos desarrollando nos obliga a explorar nuevos conceptos y nueva tecnologías. En este blog, y en los afines a éste (ixavi.com y nowaynoback.com), iremos publicando regularmente estos pequeños estudios que llevamos a cabo cada día. Hoy es el turno de MySQL Cluster, y voy a hacer un primer post introductorio a algunos… <a href="http://www.lauraberdasco.com/2009/02/conceptos-de-mysql-cluster/" rel="bookmark">leer más</a>]]></description>
			<content:encoded><![CDATA[<p>El proyecto que estamos desarrollando nos obliga a explorar nuevos conceptos y nueva tecnologías. En este blog, y en los afines a éste (<a title="Xavier Sardà" href="http://ixavi.com" target="_blank">ixavi.com</a> y <a title="Santi Mundi" href="http://nowaynoback.com" target="_blank">nowaynoback.com</a>), iremos publicando regularmente estos pequeños estudios que llevamos a cabo cada día.</p>
<p>Hoy es el turno de MySQL Cluster, y voy a hacer un primer post introductorio a algunos puntos importantes sobre esta tecnología.</p>
<p><a rel="attachment wp-att-48" href="http://www.lauraberdasco.com/2009/02/conceptos-de-mysql-cluster/logo_mysql_sun_a/"><img class="size-full wp-image-48 alignleft" title="mysql" src="http://www.ixavi.com/lauraberdasco.com/wp-content/uploads/2009/02/logo_mysql_sun_a1.gif" alt="Logo mySQL" width="114" height="68" /></a></p>
<p><strong>¿Por qué MySQL Cluster y no una base de datos normal y corriente?</strong> Podemos decir que nuestro proyecto mantiene unas necesidades que no se cubren con un sistema de bases de datos corriente. Nuestro principal problema reside en la respuesta a un gran nombre de consultas al sistema que estamos desarrollando; para que ésto sea eficiente necesitamos una tecnología que nos permita la distribución de estas peticiones para tener un tiempo de respuesta menor. Por esta razón pensamos en MySQL Cluster como una buena y fácil solución.</p>
<p><strong>Características generales de MySQL Cluster</strong></p>
<p>MySQL Cluster está formado por un motor NDB, que es un motor de almacenamiento en memoria caracterizado por la persistencia de los datos. Cada parte del cluster se denomina nodo y podemos encontrar de diferentes tipos:</p>
<p>- El <strong>nodo administrador</strong> tiene la función principal de administrar otros nodos dentro del cluster. Además, ofrece datos sobre la configuración de cada uno, inicializa o detiene su funcionamiento o permite ejecutar copias de seguridad. Es muy importante, por contener la configuración de los otros nodos, que sea el primero en ser arrancado.</p>
<p>- El <strong>nodo de datos</strong> es el nodo que almacena los datos del cluster. Tendremos tantos nodos de este estilo como réplicas de la información que necesitemos para el sistema.</p>
<p>- El <strong>nodo SQL</strong> es el nodo que accede a los datos del cluster. En un MySQL Cluster, el nodo cliente es un servidor MySQL tradicional con motor NDB Cluster.</p>
<p>Con esta estructura obtenemos que la configuración del sistema de cluster reside en la configuración de sus nodos y en la comunicación que establecemos entre ellos. Debemos tener en cuenta que se trata de un proceso centralizado en el nodo de administración por lo que es necesario tenerlo arrancado antes de empezar la creación de los nodos de datos.</p>
<p style="text-align: center;">
<div id="attachment_24" class="wp-caption aligncenter" style="width: 467px"><a rel="attachment wp-att-24" href="http://www.lauraberdasco.com/2009/02/conceptos-de-mysql-cluster/cluster-esquemabasic/"><img class="size-full wp-image-24" title="Esquema básico cluster" src="http://www.ixavi.com/lauraberdasco.com/wp-content/uploads/2009/02/cluster-esquemabasic1.png" alt="Esquema básico cluster" width="459" height="565" /></a><p class="wp-caption-text">Esquema básico cluster</p></div>
<p>En el próximo post explicaré como realizar un montaje rápido de este sistema sobre la distribución Ubuntu que utilizo normalmente, la 8.10.</p>
<p>Saludos desde el zulo, pingüinos y manzanitas world!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lauraberdasco.com/2009/02/conceptos-de-mysql-cluster/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

