lunes, 18 de noviembre de 2013

Backup MySQL a través de tunel SSH

Voy a describir acá los pasos necesarios para conseguir lo siguiente: Hacer un script que se conecte a un servidor, desde ese servidor conectarse a otro donde está hosteado un servicio de MySQL y poder hacer un backup de una base de datos.

Esto fue algo que tuve que hacer en el laburo. Esta sería la lista de computadoras involucradas:


  • My compu (localhost)
  • Web server (webserver)
  • MySQL server (mysqlserver)
El servidor mysqlserver solo es visible desde webserver. Desde localhost tengo acceso a través de SSH a webserver.

Necesitaba un script para que traerme un dump de la base de datos hacia mi localhost. Mi primer idea fue la de ejecutar el backup remotamente y después traermelo con scp, pero, al ejecutar el primer paso me topé con un error grave:

$ ssh user@webserver "mysqldump --host mysqlserver --user dbuser -ppassword dbname > /tmp/dump.sql"

El problema era el siguiente: En webserver había una versión vieja del cliente de MySQL (5.1) y en mysqlserver estaba la última versión estable 5.6, lo que impedía ejecutar el comando:

mysqldump: Couldn't execute 'SET OPTION SQL_QUOTE_SHOW_CREATE=1': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_QUOTE_SHOW_CREATE=1' at line 1 (1064)

Al encontrarme con esto tenía dos opciones: O instalaba una versión nueva del cliente en webserver o hacía un túnel. Elegí el túnel :)

$ ssh -L 8181:mysqlserver:3306 user@webserver

Al ejecutar esto, podemos ejecutar mysqldump localmente de la siguiente forma:

$ mysqldump --user dbuser -ppassword --host 127.0.0.1 --port 8181 dbname > dump.sql



El único problema es que el túnel no te devuelve el control, por lo que el comando de backup hay que ejecutarlo en una ventana diferente, y eso dificulta el hecho de que esté todo en un simple script.

Agregando algunos parámetros, el túnel queda corriendo de fondo:

$ ssh -Nn -L 8181:mysqlserver:3306 user@webserver & PID=$!

Al ejecutarlo de esa manera, el túnel queda corriendo de fondo y el ID del proceso queda guardado en la variable $PID, por lo que al terminar el dump, se puede matar el proceso y cortar la conexión:

$ kill $PID

El script recibe como parámetro el archivo donde se quiere guardar el dump, así queda de la siguiente forma:

#!/bin/bash

FILE=$1
if [ -z "$FILE" ]; then
    echo "Dump file location not specified. Using default."
    FILE=$HOME/dump.sql
fi

echo "Creating SSH tunnel"
ssh -Nn -L 8181:mysqlserver:3306 user@webserver & PID=$!

echo "Executing backup"
mysqldump --user dbuser -ppassword --host 127.0.0.1 --port 8181 dbname > $FILE


echo "Dump saved to $FILE"
kill $PID

lunes, 21 de octubre de 2013

NVIDIA y Kernel 3.11

Este es un pequeño tutorial para las personas que hayan instalado (ya sea por update del SO o por algún otro medio) la última versión del kernel de Linux (3.11). Casualmente, es la que viene con la versión 13.10 de Ubuntu, y fue la que me trajo problemas para instalar los dirvers propietarios.

Al querer instalarlos, el mensaje de error hace referencia a no poder compilar el módulo del kernel. Para solucionar esto, hay que bajarse un parche, hecho por alguien del foro de NVIDIA y aplicarlo al paquete de instalación.

En mi caso, no me funcionó usar el parámetro --apply-patch, ya que acusa no encontrar el archivo a parchear. Lo que hice, fue lo siguiente


Una vez terminado el proceso, hay que ejectuar el instalador como root y asegurarse de no estar corriendo un X server. Para Ubuntu pueden hacer un service lightdm stop.

jueves, 21 de abril de 2011

Geforce 310m, 330m, 400m, etc con Linux

Si usás una notebook que tiene una placa de video NVIDIA de la línea 300m o 400m y querés instalarle Ubuntu, vas a tener problemas.


El peor síntoma es la pantalla negra. Eso me pasó a mi cuando quise usar un LiveCD de Ubuntu 10.10.
El primer paso fue conectar un monitor a la salida VGA, y de ahí en más fueron varios meses de idas y vueltas (cambiando a Windows para no quedar en bolas) hasta que finalmente me quedó funcionando joya.


Acá dejo un resumen que armé después de leer varios foros y probando diversas cosas hasta que anduvo todo:
  1. Conectar un monitor a la salida VGA para poder ver algo
  2. Deshabilitar el driver opensource que usa Ubuntu llamado nouveau:
    Editar el archivo: /boot/grub/grub.conf y agregar esta opción al final de las líneas que empiezan con linux:
    nouveau.modeset=0
  3. Instalar el driver propietario. Bajarlo desde www.nvidia.com eligiendo el modelo y el sistema operativo correcto (Linux 32 o 64 bits).

  4. Decirle al driver propietario dónde está el archivo que identifica la pantalla principal:Editar el archivo: /etc/X11/xorg.confAgregar las siguientes líneas en la sección "Device":
    Option         "ConnectedMonitor" "DFP-0"
    Option         "CustomEDID" "DFP-0: /proc/acpi/video/IGPU/LCD0/EDID"
    La ruta del archivo puede variar según el modelo de la notebook. Para encontrarlo hice un find /proc/acpi/vide -iname '*edid*' y elegí el que decía LCD0 (arbitrariamente).
Después de todo eso, vas a poder disfrutar de Ubuntu con aceleración 3D. Eso sí, Compiz no me anduvo, pero eso todavía no lo invesigué.


sábado, 19 de marzo de 2011

Evita y Perón contra los Gorilas, versión FINAL

Hace un rato publicamos la versión final del juego que hicimos para CODEAR.
Hicimos correcciones y agregamos varios features.

Gracias a todos los que nos dieron feedback.

Links al foro [1] y al juego [2]:

1. http://www.adva.com.ar/foro/index.php?topic=8081.0
2. http://megaswf.com/serve/1032839

¡Esperamos sus comentarios!

sábado, 12 de marzo de 2011

Juego de Perón para el ADVA

Con dos compañeros de laburo (Diegote y Fabián) hicimos un juego para participar del concurso Codear.

Dejo el link al reglamente [1] y al thread del juego que hicimos [2]. También pueden acceder desde el link directo al juego [3].