viernes, 7 de mayo de 2010

Creando espacios

Alguna vez se han sentido agobiados en una habitación? Hoy vamos a abrir las ventanas para liberarnos...

O mejor dicho para que nuestras bases de datos favoritas no se sientan mal e incluso puedan invadir espacios ajenos que pongan en peligro el buen funcionamiento del sistema. En nuestros sistemas debian, por defecto, los directorios asignados a las bases de datos están en 'var' y si la instalación posee uno muy pequeño y una de estas bases de datos crece por encima de una cantidad determinada puede acarrear problemas graves.

Para solucionar esto optamos por una solución salomónica, vamos a cortar por lo sano. Crearemos una partición aparte con suficiente espacio para manejar gran cantidad de datos. Con un par de decenas de gigas tendremos más que de sobra, e incluso con menos también nos valdría, depende de para lo que vayamos a usar nuestras bases de datos. Si las particiones que tenemos ya ocupan todo nuestro disco duro una posible solución pasaría por hacernos con una knoppix y utilizar el gparted para repartir mejor el espacio. Otra solución puede ser utilizar una partición con suficiente espacio y dentro de ella crearnos un directorio para albergar los datos. Esta última es más aburrida de realizar yo siempre optaría por la más atrevida/divertida, pero claro siempre puede haber pérdida de datos...avisados están.

Sea cuál fuere la solución adoptada, una vez obtenido el espacio simplemente nos creamos un directorio allí y dentro de él uno para cada base de datos con los propietarios correspondientes, 'postgres' y 'mysql'. En un sistema con una 'lenny' los pasos a seguir a partir de aquí serán parar las bases de datos y copiar el contenido de sus directorios a los nuevos, por ejemplo:

# /etc/init.d/postgresql-8.1 stop
# /etc/init.d/mysql stop
# cp -Rp /var/lib/postgresql /opt/bbdd/
# cp -Rp /var/lib/mysql /opt/bbdd/
# cd /var/lib
# rm -Rf mysql postgresql
# ln -s /opt/bbdd/mysql mysql
# ln -s /opt/bbdd/postgresql postgresql
# /etc/init.d/postgresql-8.1 start
# /etc/init.d/mysql start

Un posible problema puede surgir de los permisos de los directorios que contienen a los directorios creados. Para solucionarlo basta con asegurarse que estos permisos son los mismos que poseen 'var' y 'lib', que está contenido en él. Si el sistema nos ha sufrido cambios estos permisos son 'drwxr-xr-x'. Pues bien, en nuestro caso 'opt' y 'bbdd' deben tener estos mismos permisos.

Para curarnos en salud, antes de borrar completamente los directorios originales podemos moverlos a otra ubicación para crear los enlaces simbólicos, probar a arrancar los servidores y si todo funciona correctamente procedemos a borrarlos del todo.

Estas operaciones las he probado sobre una máquina en producción y han funcionado correctamente pero nadie está libre de una pérdida de datos así que recomiendo, antes de probar esta solución, hacer una copia de seguridad de todas las bases de datos mediante las herramientas habituales 'pg_dump' y demás para que nuestra empresa no desaparezca de la noche a la mañana por querer respirar un poco de aire fresco...

miércoles, 5 de mayo de 2010

Malabarismos

Bueno, esta vez simplemente voy a referir un método que seguro será de utilidad para mucha gente. Quién no ha tenido un ordenador entre sus manos, completamente inutilizado pero sabiendo que todavía puede dar mucho de sí, pero eso sí, arrancando en su propio hardware. Tenemos un par de soluciones, o buscar un hermano gemelo del cadáver o meter la imagen del disco duro en una virtualbox para sacarle todo el jugo.

El segundo paso es complicado, pero según este artículo, el problema parece ser similar a hacer correr esa imagen en otro hardware distinto.

Debo decir que todavía no lo ha probado, en cuanto lo haya hecho lo comentaré por este mismo canal.