Mysql Cluster: almacenando las tablas en disco
kitai
Mysql Cluster empieza a parecer un software interesante. Tras mucho tiempo escupiendo de los desarrolladores de MySQL por esa insana y fea costumbre de almacenarlo todo en memoria, añadieron en las últimas versiones del Cluster la posibilidad de almacenar las tablas en disco.
Demos la bienvenida, pues, a los tablespaces de Oracle.
Esta funcionalidad permite tener una base de datos con alta disponibilidad y tolerancia a fallos, sin tener que usar enormes cantidades de memoria RAM.
Un tablespace es un fichero en disco en donde Mysql va a ser capaz de almacenar datos, con la estructura que Mysql usa para almacenar datos en RAM.
Lo primero, es crear un fichero de log que MySQL usa internamente para reconstruir los cambios en caso de fallo, etc…Estos ficheros se crearan en el directorio en donde tengamos almacenados los datos del cluster.
CREATE LOGFILE GROUP logfilegroup ADD UNDOFILE ‘logfile.dat’ INITIAL_SIZE 64M ENGINE NDB;
Si tenemos que añadir más ficheros de log en un futuro, usaremos:
ALTER LOGFILE GROUP logfilegroup ADD UNDOFILE ‘logfile2.dat’ INITIAL_SIZE 512M ENGINE NDB;
A modo de guia, el fichero de log ha de ser tan grande como el tamaño de la RAM que uséis para el cluster.
Ahora creamos el tablespace:
CREATE TABLESPACE bbdd_tablespace ADD DATAFILE ‘bbdd_tablespace_1.dat’ USE LOGFILE GROUP logfile group INITIAL_SIZE 512M ENGINE NDB;
Creamos un tablespace de nombre bbdd_tablespace, con un fichero de datos “bbdd_tablespace_1.dat”, asociado al log logfilegroup, y con un tamaño de 512 M.
Si en un futuro queremos añadir más espacio a ese tablespace:
ALTER TABLESPACE bbdd_tablespace ADD DATAFILE bbdd_tablespace_2.dat INITIAL_SIZE 4G ENGINE NDB;
Para terminar, cuando creamos una tabla, normalmente lo hacemos con el motor por defecto de MySQL:
ENGINE=MyISAM DEFAULT CHARSET=latin1;
La sintaxis para usar tablespaces en un cluster es:
ENGINE=ndb tablespace bbdd_tablespace storage disk charset=latin1;
.
Mi consejo general es no ser tacaños con el espacio. Nunca se sabe cuando vas a sufrir una avalancha de datos.
En el siguiente articulillo, os explicaré como monitorizar esos tablespaces para adelantarnos a los problemas, porque si se llena un tablespace, ni avisa, y falla de manera… severa.
La web de MySQL respecto a tablespaces es un lugar que hay que visitar si estás montando este sistema.
Posted in Mysql |