MySQL Restaurar una sola tabla de un dump completo

Después de hacer un backup completo de todas las bases de datos de MySQL, un cliente me pidió la restauración de una sola tabla.
Vaya… y como saco yo una sola tabla dentro de un dump de varios gigas ?
Me puse a investigar y lo he logrado con el comando sed.
Con sed genero un dump nuevo solo con la tabla que quiero restaurar. La tabla la quiero restaurar no la quiero sobreescribir, por lo que copiare los datos en una tabla temporal.
Suponiendo que el backup está en mysqldump.sql y queremos generar el nuevo dump en /tmp/tabla.sql, podríamos hacerlo de la siguiente manera:
echo "USE \`NOMBRE_BD\`;" > /tmp/tabla.sql;sed -n '/^USE `'NOMBRE_BD'`/,/^USE/p' mysqldump.sql |sed -n '/-- Table structure for table `'NOMBRE_TABLA'`/,/UNLOCK TABLES/p'|sed s/NOMBRE_TABLA/NOMBRE_TABLABCCK/g >> $FILE
Al primer sed le indicamos que nos muestre lo que hay entre las lineas que empiecen por “USE `NOMBRE_BD`” y “USE“, que será la siguiente base de datos. Esto lo hacemos así ya que distintas bases podrían tener el mismo nombre para una tabla. Con la primera selección ya tenemos todo el dump de la base de datos donde se encuentra nuestra tabla. Con el siguiente sed seleccionamos las sentencias relacionadas con esa tabla, y con el último sed, le decimos que nos cambie ese nombre de tabla por otro, para no sobreescribir la original. El echo del principio, es para indicar la base de datos que tiene que usar en la restauración.

MySQL Backup y Restauración

Pequeña receta para hacer un backup total de las bases de datos de MySQL:

mysqldump -uroot -p --all-databases > /var/tmp/mysqldump.`date +%Y%m%d`.sql

Si solo se quiere salvar los datos de una:

mysqldump -uroot -pPASSWORD NOMBRE_BD > /var/tmp/NOMBRE_BD.`date +%Y%m%d`.sql

Restauramos las bases del MySQL:

mysql -u root -p < /var/tmp/mysqldump.FECHA.sql

Restauramos una base del MySQL:

mysql -u root -p NOMBRE_BD < /var/tmp/NOMBRE_BD.FECHA.sql

bookmark bookmark bookmark bookmark

Clonando disco con ddrescue

Hace algún tiempo, detecte en el logwatch que me envía uno de los servidores dedicados, estos errores:

——————— Kernel Begin ————————

WARNING: Kernel Errors Present
Additional sense: Unrecovered read error - auto reallocat…: 2 Time(s)
ata1.00: tag 0 cmd 0×25 Emask 0×9 stat 0×51 err 0×40 (media error)…: 15 Time(s)
end_request: I/O error, dev sda, sector…: 2 Time(s)
sd 0:0:0:0: SCSI error: return code = 0…: 2 Time(s)
sda: Current: sense key: Medium Error…: 2 Time(s)

Servidores Dedicados

La elección de un servidor dedicado es algo muy personal para el sysadmin. Tienes que tener en cuenta que te instalen un sistema que te guste, dependiendo de tus conocimientos de éste, una ayuda a la administración por parte del hosting. Tienes que valorar la caidad/precio del servidor. Las herramientas que te suministran para su gestión, el tiempo de respuesta cuando necesitas de ellos…
Durante los años que llevo administrando servidores, he conocido algunas empresas que ofrecen servidores dedicados. Voy a publicar mi opinión sobre ellas, centrandome en el análisis de los 5 puntos que considero mas importantes, soporte, fiabilidad, caracteristicas, red y valor.
Personalmente, prefiero sistemas Debian, por lo que es requisitio indispensable que los hostings lo ofrezcan. No necesito paneles de administración del sistema, de hecho, prefiero y pido que me instalen un sistema mínimo, con ssh. Algo que valoro mucho son los paneles de administración del servidor, aquellos que permiten reinicio y una forma de recuperar el sistema.
A continuación explico los 5 puntos del análisis, que valoraré del 1 al 5:

Uso de find

Siempre recurro a mis notas, para consultar el comando find, cómo buscar ese archivo que se llamaba… Cómo buscar ese archivo que se modificó… Cómo buscar aquel archivo que se accedió… Cómo buscar los directorios vacíos… Cómo buscar archivos de mas de 7 megas…
Aquí una pequeña receta.

  • Buscamos directorios vacíos en nuestro sistema:

find / -type d -empty

  • Buscamos archivos vacíos en nuestro sistema:

find / -type f -empty

Comando sort

Hace tiempo, me encontré en la necesidad de ordenar por fecha varios logs de apache de distintos vhosts.
Aprovecho esta oportunidad para mostrar la eficacia del comando sort.

Tomemos como ejemplo, una linea cualquiera de uno de los logs de apache:

192.168.1.23 - - [02/Jun/2008:17:26:46 +0200] “GET /index.php HTTP/1.1″ 200 8199 “http://www.prueba.com/” “Mozilla/4.0″

XEN

Con la idea de crearnos un entorno de pruebas, vamos a instalar XEN.
Sobre los dominios instalados, siempre desde cero, se harán las configuraciones e instalaciones requeridas para futuros artículos.

  • Instalamos los paquetes necesarios:

aptitude install xen-linux-system-2.6.18-6-xen-amd64 xen-tools

  • Descomentar las siguientes lineas de /etc/xen/xend-config.sxp :

(network-script network-bridge)
(vif-script vif-bridge)
(dom0-min-mem 196)
(dom0-cpus 0)