Ir al contenido principal

Disminuir los accesos a Disco en MySQL con ramdisk (tmpfs) con Linux

El uso de particiones montadas directamente en RAM trae consigo innumerables beneficios a la hora de disminuir el acceso a disco (no solo lo disminuye, ¡lo hace desaparecer!).

El uso de ramdisk (utilizando particiones del tipo tmpfs) en Linux es uno de esos tips que ningún Administrador de Sistemas debería desconocer.

Hoy les mostraré lo fácil que es crear una partición en RAM (tmpfs) y utilizarla en MySQL, haciendo desaparecer los accesos a nuestro Disco.

Crea un directorio donde se montará la partición tmpfs

Como primer paso, crearemos un directorio donde montaremos la partición tmpfs, la cual se utilizará como una partición tradicional, con el plus de escribir directamente en RAM, aumentando al máximo el rendimiento de lo que allí se escriba.

#mkdir /tmp/tmpmysql

Detener demonio mysql y declarar partición creada en la configuración de MySQL

Antes de continuar, debemos detener el demonio mysql. Luego, editaremos el archivo de configuración de MySQL y declararemos el directorio que se utilizará como temporal para nuestro motor de Base de Datos.

#vim /etc/mysql/my.cnf

En la línea...

tmpdir       = /tmp/tmpmysql

...agregaremos nuestro nuevo directorio tmpmysql (agregado en rojo).

Guardamos los cambios y salimos del my.cnf.

Conocer los id de nuestro usuario mysql

Para conocer el ID de nuestro usuario mysql, ejecutaremos el siempre indispensable comando id:

id mysql

Lo que nos devolverá:

uid=105(mysql) gid=112(mysql) groups=112(mysql)

Recordemos los datos uid y gid, pues los utilizaremos en el próximo paso.

Montar partición ramdisk como tmpfs sólo con privilegios para mysql

Editaremos el file /etc/fstab y declararemos la partición, tipo, punto de montaje y permisos específicos (entre tantas otras opciones que se podrían declarar -ver man mount-).

#vim /etc/fstab

Agregaremos la siguiente línea (siempre teniendo en cuenta que mis ID de usuario mysql pueden siempre diferir de los tuyos):

tmpfs /tmp/tmpmysql tmpfs rw,uid=105,gid=112,size=128m 0 0

De izquierda a derecha y en rojo: File System, ubicación del punto de montaje, tipo de File System, y las opciones (nótese los uid y gid) junto con el tamaño asignado a dicha partición. Guardaremos los cambios y saldremos.

Es importante tener en cuenta que el tamaño que le asignemos a dicha partición tmpfs será "decrementado" directamente de nuestra RAM.

Antes de terminar, montaremos las particiones declaradas en nuestro /etc/fstab mediante el comando mount -a.

Por último, iniciaremos nuevamente el demonio mysql y si todo marchó bien, MySQL utilizará para sus transacciones y otras acciones su nuevo temporal, ahora una partición en RAM que hará desaparecer los accesos a nuestro Disco Duro, simplemente "traficando" datos entre la RAM y la CPU.

Para corroborar que todo marche bien, puedes ejecutar df -h para observar la partición tmpfs montada en el directorio creado.

TIPS
  • Mediante el comando watch podremos ver de forma recursiva cómo se escriben datos en dicho directorio (watch -n 0.5 ls -lh /tmp/tmpmysql). 
  • Si usas servicios como munin, puedes hacer "un antes y un después" de utilizar ramdisk (tmpfs) para notar como descansarán las I/O a Disco.
ACTUALIZACIÓN: si utilizas Ubuntu 16.04 LTS, el archivo por defecto de configuración de MySQL donde puedes realizar el cambio de la carpeta temporal por defecto está ubicado en /etc/mysql/mysql.conf.d/mysqld.cnf.
Publicar un comentario

Entradas populares de este blog

Botones capacitivos no vibran o encienden en Samsung S6

Si tienes el problema en que de la noche a la mañana por culpa de algún duende, tus botones capacitivos de tu Samsung S6 (botón Atrás y botón Aplicaciones recientes) funcionan pero no encienden ni vibran, aquí la solución paliativa.

El problema es un bug reconocido por la comunidad de Android, que aún (al día de la fecha) en Android 5.1.1 no ha sido resuelto. Se trata de un problema al activar el Ahorro de Energía, que de forma correcta deshabilita la vibración y luminosidad de las teclas capacitivas, pero aún desactivandolo siguen deshabilitadas.


Cuando tus botones capacitivos no respondan como deben (me resultan útiles que vibren o se enciendan), debemos:
Entra en el Ahorro de Energía.En "Iniciar ahorro de energía", selecciona "Inmediatamente".Apaga el Ahorro de energía.(Si quieres) Vuelve a encenderlo y configuralo con un porcentaje a gusto. Los botones capacitivos ahora funcionarán.Quizás, en una próxima actualización de Android Lollipop solucionen este pequeño bu…

PARTE I: Instalar OCS Inventory NG (Server) en Ubuntu Linux 14.04 LTS

Muchos conocerán los beneficios y funcionalidades que nos provee OCS Inventory. Es por eso que si has llegado hasta aquí, daré por sentado que ya conoces qué se puede hacer con este increíble Software.

Tomé la decisión de hacer un pequeño tutorial de instalación de OCS Inventory NG en su versión Server sobre Ubuntu Linux 14.04 LTS originado por varios motivos: mi exitosa experiencia utilizado e implementando ésta solución, la Wiki del proyecto no está actualizada "al día", y (lo más importante) porque existe mucha documentación fragmentada en la Web, en idioma francés, italiano, y con mucha información algo incompleta.

Nota 1: Asumo que dispones de conocimientos básicos de Ubuntu, Apache y Mysql. Ante una duda, deja un comentario, o bien indaga en la Web. No duele ;D

Nota 2: Este instructivo esta basado en la versión de OCS Inventory NG version 2.2 al día de la fecha de publicación.

Nota 3: configura tu Ubuntu con una IP estática/fija.

Requisitos de paquetería

Actualiza Ubuntu a …

Enviar mensaje masivo a PCs con Windows en un Dominio

En la oficina estábamos tratando de optimizar el proceso de reinicio de un Servicio indispensable para gran parte de los usuarios de la empresa, pero sin caer en el viejo y obsoleto método del correo o la llamada telefónica. La duda era, ¿cómo les notificamos de forma fácil que debíamos reiniciar el Servicio?

Era indispensable que los usuarios cerrasen sus Apps que se conectaban a dicho "demonio", para así tener la tranquilidad de que esos programas no quedasen "frizados" y evitar el maremoto de llamadas y reclamos para luego matar uno a uno dicho proceso de forma remota.

En Windows, el comando que debemos usar es msg.exe, no disponible en Windows XP, pero si para Windows Vista y posteriores.

Primero, necesitábamos listar aquellos equipos que tenían la App dependiente de dicho Servicio, armar un listado con ellas y así ejecutar el comando msg en función a ese listado. Para ello, acudimos a nuestro System Center Configuration Manager, y mediante un Reporte, listamos…