Archive for the ‘General’ category

Backup de MySQL mediante consola/comandos

Mayo 24th, 2010

¿Por qué mysqldump?

Yo siempre he hecho las copias de mis bases de datos mediante la opción que da PHPMyAdmin para exportar los datos. Pero cuando una base de datos alcanza un tamaño considerable el exportador de PHPMyAdmin se queda corto ya que PHP no puede procesar toda la información.

En ese momento, hay que pasar a hacer las copias de seguridad mediante los comandos que MySQL nos proporciona. Este método es un poco más tedioso ya que no hay interfaz gráfica como en PHPMyAdmin pero realmente hay 4 opciones y son bastante facilitas.

El programa que nos propociona MySQL se llama mysqldump. Éste comando se encarga de acceder a las base de datos que le indiques y sacarte por la salida estándar el código SQL del backup.

Uso de mysqldump

Tiene muchas opciones (para verlas todas escribe man mysqldump en la consola) pero las que más nos interesan son:

  • opt: Esta opción es un popurrí de otras opciones. Lo que hace es añadir al código SQL del backup las ordenes de borrar las tablas si existen con anterioridad, bloquea las tablas para que el backup sea más rápido, escribe en los CREATE TABLE las opciones específicas de cada tabla, hace las inserciones en pocas líneas para que el archivo ocupe menos y se haga más rápido el backup y utiliza las opciones de backup rápido. En definitiva esta opción es muy recomendable ya que te ahorra poner muchas otras opciones y consigue que el backup se haga de la manera más rápida posible.
  • user: Esta opción indica a mysqldump el usuario con el que accederá a la base de datos para hacer el backup.
  • password: Indica el password a mysqldump.
  • host: Indica la dirección donde está la base de datos.

Imaginemos que tengo una base de datos en mi servidor (servidorficticio.com) que se llama base_de_datos_de_prueba. En ella tienen privilegios para leerla y modificarla el usuario jorge con la contraseña mi_nombre_es_jorge. Ahora existen dos opciones: que me pueda conectar al servidor por SSH o que no me dejen.

En el caso de poder conectarme por SSH debería de identificarme en servidorficticio.com y escribir en la línea de comandos:

mysqldump --opt --user=jorge --password=mi_nombre_es_jorge base_de_datos_de_prueba >  backup_base_de_datos_de_prueba.sql

En cambio, si no te dan la opción de conectarte por SSH tendrás que utilizar la opción host y ejecutar la orden desde tu ordenador. El comando que tendrías que escribir sería muy parecido:

mysqldump --opt --host=dominioficticio.com --user=jorge --password=mi_nombre_es_jorge base_de_datos_de_prueba >  backup_base_de_datos_de_prueba.sql

En ambos casos se creará un archivo backup_base_de_datos_de_prueba.sql que contendrá el backup completo de la base de datos.

Backup de más de una base de datos

Ahora tenemos las bases de datos: base_de_datos_de_prueba1 y base_de_datos_de_prueba2. Utilizaremos la opción databases:

mysqldump --opt --user=jorge --password=mi_nombre_es_jorge --databases base_de_datos_de_prueba1 base_de_datos_de_prueba2 >  backup_multiple.sql

Backup de todas las bases de datos

Para hacer un backup completo de toda la base de datos utilizaremos la opción all-databases:

mysqldump --opt --user=jorge --password=mi_nombre_es_jorge --all-databases > backup_total.sql

Problemas típicos

Alguna vez me ha pasado cuando hacía un backup que mysqldump me mostraba que una tabla había producido el error cuando se intentaba bloquear. Concrétamente el error decía algo así:

mysqldump: Got error: 1105: File './xxxx/tabla_problematica.MYD' not found (Errcode: 24) when using LOCK TABLES

Este problema se puede arreglar facilmente añadiendo a la opción lock-tables e igualándola false para que no intente bloquear las tablas y puedea terminar el backup. Esta modificación lo único que cambia es la velocidad en la que se hará el backup. De forma que el comando quedaría:

mysqldump --opt --lock-tables=false --user=jorge --password=mi_nombre_es_jorge base_de_datos_de_prueba >  backup_base_de_datos_de_prueba.sql

Por último, cuando el backup es muy grande (alrededor del GB) es posible que mysqldump avise de que no puede hacerlo porque supera el tamaño permitido. Para arreglar ésto solo hay que cambiar un valor de la configuración de MySQL: max_allowed_packet.

Ésta variable se encuentra en el archivo de configuración de MySQL my.cnf que normalmente se encuentra en el directorio /etc/mysql. Editamos ese archivo y cambiamos la variable max_allowed_packet a lo que queramos, por ejemplo 200MB (el valor defecto es 16MB)

Nota: Si no sabes dónde está tu archivo de configuración my.cnf puedes ejecutar este comando

find / -name 'my.cnf' 2> /dev/null

Un saludo, espero que os sea útil!

Quota: Limitar el disco duro a un usuario

Mayo 21st, 2010

Descripción

Disco duro SATA

Cualquier usuario en un sistema compartido se ha visto alguna vez en la situación de tener que borrar archivos de otro para que no ocupen parte de tu disco duro. Quien comparta el ordenador con hermanos lo comprenderá rápidamente :P

Para solucionar este problema existe un programa llamado quota para Linux que permite limitar el tamaño máximo que podrá ocupar un usuario en un sistema. Esta limitación se puede hacer de dos formas:

  • Limitando el número de KBytes que podrá utilizar este usuario en el disco duro
  • Limitar el número de archivos que tendrá

Preparando el terreno

Veamos como se utiliza. Lo primero, obviamente, es instalarlo. Para esto valdría con escribir en una consola (en el caso de Ubuntu o Debian):

sudo apt-get install quota

Ahora lo que hace falta es indicar qué particiones de tu disco duro van a ser controladas por quota. Para esto vamos a editar el archivo donde están todas las particiones declaradas con sus opciones, este archivo es el /etc/fstab. Para editarlo puedes escribir en la consola:

sudo gedit /etc/fstab

Cuando lo ejecutes se abrirá una ventana con un editor de texto (si no tienes el gedit utiliza tu editor de textos preferido) con un archivo un poco extraño. Por ejemplo, mi archivo fstab es el siguiente:

captura fstab

Formato fstab: clic para agrandar

Cada línea que empieza con almuadilla (#) es un comentario que se puede ignorar. El resto de líneas son unidades de disco o particiones que contienen la siguiente información: identificador en el sistema, punto de montaje, formato de la partición, opciones (el círculo rojo), dump y pass. Estos campos están separados por uno o más espacios (las flechas verdes).

Para que quota pueda obrar su magia necesitamos añadir la opción usrquota dentro del campo de opciones de la partición donde quieras que funcione (puede ser más de una). En este caso nos interesa la partición donde está montado todo el sistema y cambiamos sus opciones (el del círculo rojo, el 4º de la línea). Para esto simplemente añadimos una coma al final de las opciones que ya existían y escribimos usrquota. De manera que quede como en mi archivo fstab.

Para hacer las pruebas de quota crearemos un usuario de prueba en el sistema que además tenga un directorio home que pueda manipular. Esto se hace facilmente utilizando los menús de Ubuntu: Sistema -> Administración -> Usuarios y grupos.

Acceso a la opción de usuarios y grupos

Acceso a usuarios y grupos: clic para agrandar

Una vez dentro del menú de Usuarios y grupos lo único que hay que hacer es hacer clic en Añadir un usuario y rellenar los datos que se necesitan. En nuestro ejemplo vamos a suponer que hemos creado el usuario pedro.

Nota: Otra manera más sencilla de crear un usuario sería escribir en la consola

sudo useradd -s /bin/bash -m pedro; sudo passwd pedro

Ahora reiniciamos para que se vuelva a montar la partición y ya está! Ya tenemos el terreno preparado para que funcione quota.

Uso

Quota tiene dos parámetros que puede limitar: el número de archivos y el número de KB que tiene un usuario. Puedes configurarlo para que funcione de forma diferente para cada usuario. Por ejemplo:

Restricciones al usuario Juan: Puede tener un máximo de 10GB
Restricciones al usuario Pedro: Puede tener un máximo de 512KB y 16 archivos.

Cada usuario tiene una configuración diferente y ésta se aplica individualmente (aunque existen maneras de automatizarlo).

Primero comprobamos que el usuario pedro no tenga ninguna cuota habilitada ya. Para ver las cuotas existentes en un usuario basta con escribir en la consola:

sudo quota -u pedro

Este comando nos devolverá una frase del tipo:

Cuotas de disco para user pedro (uid 1001): ninguno

Esto se debe a que aún no hemos aplicado ninguna cuota. Vamos a aplicarle al usuario pedro una restricción de tamaño total de archivos, por ejemplo 10GB. Para ésto, utilizaremos un programa que viene con quota que se llama edquota. Forma parte del paquete y es el programa específico para modificar las cuotas a los usuarios.

Para abrir el editor de cuotas escribimos en la consola:

sudo edquota pedro

Este comando abrirá nuestro editor de texto por defecto y nos mostrará una pantalla parecida a la del fstab donde cada espacio (o grupo de espacios) separa unas opciones de otras.

Formato edquota

Formato edquota: clic para agrandar

En este caso he pintado las flechas de colores de forma que cada opción tiene una flecha del mismo color que su valor. En este ejemplo tendríamos las opciones configuradas de esta manera:

  • Sistema de archivos: /dev/sda1
  • bloques: 44
  • límiteflexible: 0
  • tope: 0
  • inodes: 15
  • límiteflexible: 0
  • tope: 0

Sistema de archivos indica en qué partición de tu disco duro se encuentra el usuario pedro. Esta opción no hay que tocarla (si nos fijamos es la misma partición a la que le dimos la opción usrquota antes).

Bloques indica el número actual de bloques (un bloque es igual a 1 KB). Por lo tanto, la ocupación de pedro en el sistema actualmente es de 44KB.

Límiteflexible es un parámetro que indica el número máximo de KB que puede ocupar pedro en el sistema sin que se le borren. Es una barrera que se puede pasar pero cuando pasa un tiempo si se sigue pasando esa barrera de KB se borran los archivos. En un  otro post enseñaré a usarlo.

Tope es lo que buscábamos. En esta opción está se indica el número de KB máximo que podrá ocupar pedro en el sistema. Pedro no podrá pasar de ese espacio.

Inodes es el número de archivos actual de pedro. En este caso tiene 15 archivos.

Límiteflexible indica otra vez lo mismo pero para los archivos. El máximo de archivos que podrá tener pedro sin que se le borren en un tiempo.

Tope indica lo mismo que el tope de los bloques pero para los archivos. El número máximo de archivos que tendrá pedro.

Con estas opciones puedes tener un completo control sobre el espacio que pedro ocupará en tu sistema. Ahora si que vamos a aplicarle a pedro la restricción de 10GB como máximo. Primero calculamos cuántos KB son 10GB:

10GB = 10*1024*1024 = 10485760 KB

Y ahora editamos las cuotas de pedro con el comando de antes:

sudo edquota pedro

Y cambiamos el primer tope (el que está relacionado con los bloques) a 10485760. Tiene que quedar algo así:

Archivo de cuotas modificado

Archivo de edquota modificado para 10GB: clic para agrandar

Para cambiar el límite de archivos en el disco solo tendrías que cambiar el valor del segundo tope al máximo que quieras. Si dejas algún valor a 0 significa que no se aplicará ninguna restricción.

Por último comentar que puedes combinar las dos restricciones o aplicarlas individualmente. Y el límite flexible lo explicaré otro día :)

Conclusiones

Hemos conseguido instalando un programa ligerísimo llevar un control total sobre el uso de disco de los usuarios de tu sistema.

Un saludo a todos, espero que os sea útil.

Spotify para todos

Septiembre 23rd, 2009

Hola, supongo que todos conocereis el programa Spotify. Para los que no lo conozcais se trata de un programa en el cual puedes reproducir música en streaming (no hay que esperar que se cargue entera para empezar a escucharla). Digamos que es como el YouTube de la música pero en una aplicación de escritorio en vez de una aplicación web.

El problema de Spotify residía en tener que tener una invitación para poder crearte una cuenta. Esto representa un problema ya que la gente no suele compartir las invitaciones con los amigos (no sé por qué pero las guardan como oro en paño). Pero tranquilos! Existe una solución: URL de registro gratuito. Éste link te llevará a un bug (intencionado o no) de la página web de Spotify donde te podrás registrar sin necesidad de invitación.

Disfrútalo!

Nuevo recurso: Intenta

Mayo 27th, 2009

Hola!

Un apunte rápido: Intenta

Intenta es una web con diversos tipos de recursos para la web. Espero que te sirva :)

QuickPress: Ganó Debian 5.0

Febrero 17th, 2009

He instalado Debian 5.0 y por ahora va guay. Me ha detectado todo menos el puto wifi de los huevos.

Ya os comentaré con más detalles más tarde que me marcho.
Adeu!

Migración de distro

Febrero 16th, 2009

Hola pipol!

Estoy pensando y cada día tengo más claro que me estoy cansando de Ubuntu. Es una buena distro de GNU/Linux pero te mete mucha paja que a mi me sobra.

El motivo del post es que no se a qué distribución pasarme. Estoy dudando entre tres:

  1. OpenSuse 11.1
  2. Debian 5.0
  3. Gentoo 2008.0

OpenSuse me apetece probarlo pero no creo que llegara muy lejos con ella aunque tampoco me gustaría descartarla tan rápido.
Debian es una Debian (valga la redundancia) y estoy familiarizado con ella después de haber estado usando Ubuntu (y aparte fue mi primera distro :)). Y además tiene mi maravilloso, apreciado y necesitado apt!
Y Gentoo precisamente creo que es la mejor para lo que quiero. No habrá en el SO nada instalado que yo no haya supervisado antes (según he oido porque nunca la he usado) pero me da un poco de canguele.

Ala, que alguien me oriente por favor que estoy perdido!

Un saludo a todos!

Broadcom bcm4311 con Ubuntu 8.10

Noviembre 30th, 2008

Hola!

Acabo de instalar la nueva versión de Ubuntu (un poco tarde, lo sé, pero uno que esta ocupado y se le van retrasando las cosas..).

Una de las cosas que más me interesaba que solucionaran era la compatibilidad con mi tarjeta wifi (Broadcom 4311 (rev 01)) porque con la versión anterior había que emular los drivers de Windows con el ndiswrapper y la verdad es que era un coñazo.

Pero como en el anuncio de hace mil años de Ariel: EL FROTAR SE VA A ACABAR. Aunque parezca increible solo con instalar un controlador restrictivo (concretamente el: Broadcom STA) la red funciona de puta madre (de hecho, estoy escribiendo inalámbricamente!).

Solo recalcar que es importante instalar el Broadcom STA porque si instalais el Broadcom B43 estareis en las mismas que con la versión anterior y tendreis que usar el ndiswrapper.

En fin, que estoy muy contento con los chicos de Ubuntu!

Ahora solo queda arreglar un puto error con el Avant Window Navigator y a correr!

Un saludete a todos!

Cambio de diseño!

Noviembre 25th, 2008

Ya está, ya me he decidido por un diseño. Al final no lo he hecho yo porque no tengo tiempo ni para respirar pero lo que necesitaba el blog era un lavado de cara y ya lo tiene :-)

Ahora solo queda retocar un par de cosas puntuales como la imagen del logo o el coloreado del código bien. Pero vamos, que eso es más rápido.

Bueno, nos leemos pronto que esto vuelve a arrancar (por decimoquinta vez :P)

Pronto nuevo diseño

Septiembre 23rd, 2008

Ultimamente estoy algo ausente porque estoy haciendo el nuevo diseño que va a tener el blog.

En pocas semanas estará arriba!

Para los que no lo sepan..

Septiembre 6th, 2008

Au rastas!