Agosto 12th, 2008 por
kitai
La gente de MysqlPerformanceBlog, autores del libro High Performance Mysql han publicado una presentación que dieron hace poco en la OSCON 2008 (Conferencia de Open Source).
Basicamente dice algo que ya sabiamos.
1- Usad InnoDB si podeis.
2- Olvidaos de los motores que no sean InnoDB, MyISAM y NDB (para cluster).
Todo esto viene a que está muy en boga probar las nuevas versiones de Federated, y Maria (no son las galletas, es el nombre del futuro motor de almacenamiento de MySQL), y todo parece indicar que lo único que pueden daros son problemas.
Posted in Mysql |
1 Comment »
Julio 19th, 2008 por
kitai
Según se vaya estabilizando MySQL Cluster, irán apareciendo más herramientas que, desarrolladas en principio para los propios consultores encargados de vender la tecnología, acaban siendo compartidas para que todos las usemos.
Un ejemplo es “MyCat“, un conjunto de 3 herramientas (por el momento) que sirven para sincronizar ficheros de configuración, y para monitorizar los ficheros de log.
.
No soy muy partidario ultimamente de utilizar aplicaciones demasiado novedosas, y, la verdad, algo ando desesperanzado con el mundillo del open source, ya que me he encontrado ultimamente demasiados proyectos abandonados y sin actualizar. Quizás termine colaborando con este, aportando el script que uso en Perl para monitorizar Tablespaces.
El futuro dirá si esta herramienta será como el MaatKit para MySQL replicado.
Posted in Mysql |
No Comments »
Julio 14th, 2008 por
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.
Leer el articulo completo »
Posted in Mysql |
No Comments »
Julio 10th, 2008 por
kitai
Presuponiendo que tenemos montado el sistema operativo en los servidores, hay dos métodos posibles. El objetivo es montar un cluster con dos nodos de almacenamiento y acceso y un master.
Método 1: http://www.jimdowling.info/ndbinstaller-trac/wiki
NdbInstaller es un instalador que te lo hace todo. Tiene hasta un vídeo y todo de la instalación.
.
Método 2: Este método, mi favorito, consiste en utilizar las utilidades de Johan Andersson. Consta de varios pasos.
- Vamos a la web del configurador: http://www.severalnines.com/config . Allí encontramos un formulario, y tras rellenar los datos, nos llegará al correo los scripts de configuración necesarios.
- En el master (el nodo que va a hacer de gestor de los demás), digamos que en /var/lib/mysql-cluster, dejamos el config.ini. Ponemos el script de inicio en /etc/init.d/ndb_mgmd, para arrancar el proceso del Master. Arrancamos el nodo maestro.
- En el primer nodo, bajamos y compilamos las fuentes. Actualmente, la versión es la 6.2.15. La URL es: http://dev.mysql.com/get/Downloads/MySQL-Cluster-6.2/mysql-cluster-gpl-6.2.15.tar.gz/from/pick. Una vez descomprimido, ejecutamos ./BUILD/compile-pentium-max para hacer el configure. Luego make y, como root, make install. Esto nos deja todo en /usr/local/mysql.
- Si tenéis mucha prisa, y las máquinas son iguales, hacéis un tar de ese directorio /usr/local/mysql y lo pasáis al resto de servidores, a la misma localización.
- De los ficheros que nos enviaron por correo, cogemos el my.cnf correspondiente a ese nodo, y lo metemos en /etc, con cuidado de ELIMINAR el directorio /etc/mysql si existe, porque es posible que os de conflicto si están las mysql-common de la distribución instaladas.
- Además, hay que poner las nuevas librerías en /etc/ld.so.conf.d, para ello creais un fichero “mysql.conf” con las líneas “/usr/local/mysql/lib/mysql”. Cerramos y ejecutamos como root “ldconfig -v”.
- Añadimos al PATH de sistema /usr/local/mysql/bin y /usr/local/mysql/sbin, por comodidad.
- Añadimos en /etc/init.d/mysqld el script de inicio del mysql, y en /etc/init.d/ndbd el script de inicio del proceso “ndbd”, que es el nodo de almacenamiento del cluster.
- Vamos al nodo maestros, ejecutamos “ndb_mgmd”…y debería estar todo arrancado, si le habéis proporcionado bien los datos al formulario.
.
¿Realmente es tan fácil?
Si.
Pero también depende de cada sistema.
.
Este es un pequeño checklist de operaciones que hay que hacer a posteriori:
1- Montar el backup. Un script para hacer backup automaticamente, descartar los que no se quieran cada dia, y ir haciendo un reciclado.
2- Una página de monitorización suele venir bien. Además de monitorizar los procesos “ndbd”, ndb_mgmd”, y el mysql, siempre viene bien que los logs del cluster (en el nodo maestro, en /var/lib/mysql-cluster) os lleguen al correo. Y es vital monitorizar la memoria libre del cluster.
3- Si vais a usar Tablespaces, recordad que estos no crecen solos. Una página de monitorización exclusiva es MUY DESEABLE.
Posted in Mysql |
No Comments »
Junio 30th, 2008 por
kitai
La solución de Cluster de Mysql no sirve para todo el mundo. Un administrador puede encontrarse con que tras 1 semana entera de trabajo, las 6 máquinas resultantes le dan un resultado mucho peor que la base de datos sencilla que tenía antes. ¿Porqué ocurre esto?. Porque antes de instalar, hay que saber lo que se está instalando.
MySQL Cluster es una solución de ALTA DISPONIBILIDAD. Un cluster empieza a ser rentable cuando existe un número de conexiones ALTO. Es decir, allá donde una sola instancia de MySQL empieza a tener problemas de rendimiento, el cluster es capaz de aguantar (y no sólo aguantar, sino crecer adecuadamente y en horizontal hasta un número de conexiones simultáneas y consultas razonable).
.
También es importante saber que el tiempo de recuperación de un Cluster de MySQL es MUY alto comparado a una base de datos de un sólo nodo y varios gigas de tamaño. Dicho en claro, es muy difícil que se caiga el cluster, pero una vez se ha caido, os vais a pasar 10-20 minutos recuperando y arrancando, como mínimo.
Además, añadir otro nodo de almacenamiento no es trivial. Hay que ELIMINAR TODO lo almacenado, añadir el nuevo nodo, y recuperar de backup. Esto es así porque el proceso “ndb” hay de regenerar todo su estructura interna, la cual cambia al añadir otro nodo.
Más…despues del salto.
Leer el articulo completo »
Posted in General, Mysql |
No Comments »