Reparar MySQL

Después de un error en mi base de datos he tenido que reparar la base de datos mysql, dejo aquí los comando que he tenido que utilizar como autonota porque seguramente me ocurra alguna que otra vez. Si alguien necesita lo mismo pues también lo tiene 😉

Existen dos caminos a elegir, mysqlcheck y myisamchk, la gran diferencia es que uno no necesita que paremos la base de datos y el otro si, también que uno trabaja directamente sobre los archivos del disco duro y el otro sobre la base de datos montada.

Con mysqlcheck NO debemos parar la base de datos y los comandos son estos, aunque no veáis mysqlcheck, estos comandos son atajos a ese comando:

root@improvisa:/# mysqlrepair –all-databases -u root -p
root@improvisa:/# mysqloptimize –all-databases -u root -p

Con myisamchk debemos para la base de datos, ir al directorio que contiene nuestras bases de datos y desde allí lanzar el comando y una vez acabado rearmar la base de datos

root@improvisa:/# /etc/init.d/mysql stop
Stopping MySQL database server: mysqld.

root@improvisa:/# cd /var/lib/mysql/
root@improvisa:/var/lib/mysql/# find ./ -type f -name «*.MYI» -exec myisamchk -r {} \;

root@improvisa:/# /etc/init.d/mysql start
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..

Un saludo

Cambios masivos en Bind

Creo esta entrada como autonota para recordar los comandos que utilizo para hacer cambios masivos en los archivos de Bind9, ya que cada vez que hago cambios de servidores necesito hacer cambios en todos los dominios que tengo y cada vez son más.

Sólo para recordar la estructura de archivo bind os lo pongo aquí, los puntos importantes son el serial, ya que en cada cambio debe cambiar y luego las IPs a la que los registro A deben apuntar.

$ORIGIN example.com.
$TTL 86400
@     IN     SOA    dns1.example.com.     hostmaster.example.com. (
                    2001062501 ; serial
                    21600      ; refresh after 6 hours
                    3600       ; retry after 1 hour
                    604800     ; expire after 1 week
                    86400 )    ; minimum TTL of 1 day
;
@            IN     NS     dns1.example.com.
@            IN     NS     dns2.example.com.
@            IN     MX     10     mail.example.com.
@            IN     MX     20     mail2.example.com.
;
@            IN     A       10.0.1.2
server1      IN     A       10.0.1.2
server2      IN     A       10.0.1.2
dns1         IN     A       10.0.1.2
dns2         IN     A       10.0.1.3
;
ftp          IN     CNAME   server1
mail         IN     CNAME   server1
mail2        IN     CNAME   server2
www          IN     CNAME   server2

Para hacer un cambio en todos los archivos de zona, por ejmplo cambiar la ip del servidor de nombre dns1 10.0.1.2 por 130.89.56.76 debemos ejecutar este comando:

root@improvisa:~# find /var/cache/bind/ -type f -exec  sed -i ‘s/10.0.1.2/130.89.56.76/g’ {} \;

Este comando entrara en el directorio donde tengamos los archivos de zona, en este caso /var/cache/bind/, y sustituirá todas las ocurrencias de la ip 10.0.1.2 por 130.89.56.76.

Ahora nos queda eliminar la linea donde esté el serial y sustituirla por el nuevo serial, no nos vale encontrar el serial ya que en los archivos este será distinto, sino que tendremos que buscar la linea donde aparezca el texto «serial2» y sustituir toda la linea por la nueva, para ello utilizaremos el siguiente comando:

root@improvisa:~# find /var/cache/bind/ -type f -exec  sed -i ‘s/\(.*; serial\)/                        2013031901   ; serial/’ {} \;

Lo que hace este comando es entrar en el directorio /var/cache/bind/ donde tenemos los archivos de zona y buscar la cadena «; serial» con cualquier cosa delante, es lo que indica la expresión regular .*, es decir nos da igual el número que tenga, y sustituiremos esa ocurrencia por »                        2013031901   ; serial»

Espero que os sirva de ayuda.

Un saludo.

Migración MySQL de un servidor a otro

Esta semana he tenido que cambiar de proveedor de VPS y con ello he tenido que migrar todos los datos de un servidor a otro. PAra el tema de ficheros la cosa ha estado fácil, un simple rsync nos irá moviendo los archivos que necesitemos junto con sus permisos. El comando es algo complicado pero funcional:

root@improvisa:~# rsync -alHpogDtv -e «ssh -p 22» –numeric-ids –delete-after –stats root@serrvidor_origen:/var/www/ /var/www/

Con esto obtendremos una copia exacta de nuestro directorio para apache. Decir que también copiara enlaces simbólicos, con lo que podremos hacer copias de lo que queramos, por ejemplo el directorio de configuración de apache2 /etc/apache2/. Los pasos de usuarios propietarios y grupos propietarios lo hago de modo numérico, con lo cual lo mejor es repasar que los números coinciden con los nombres de usuario correspondientes. Fijaros que los permisos coinciden con la anterior nota que creé en improvisa sobre los premisos óptimos del directorio /var/www/ de apache2: Permisos óptimos para apache2 en Debian

Una vez que tenemos todos los archivos debemos migrar las bases de datos de MySQL, para ello debemos generarnos un script que sacará el nombre de la base de datos, el usuario que tiene permisos sobre ella y la password, una vez hecho creará dicha base de datos en el servidor remoto junto con su usuario correspondiente y copiará los datos al servidor nuevo. El script es el siguiente, un modificado de :

#!/bin/bash
# Se debe ejecutar en el servidor origen
# Script creado por Juanmi de la versión de nixCraft project <http://cyberciti.biz/fb/>
# ------------------------------------------------------------
# Configurar primero - MySQL local usuario/password
_lusr="root"
_lpass="password_local"
_lhost="localhost"

# Configurar primero - MySQL remoto usuario/password
_rusr="root"
_rpass="password_remoto"
_rhost="localhost"

# Configurar primero - Acceso SSH remoto usuario/password/puerto
# Lo ideal sería tener acceso ssh sin password como dicen aquí: http://www.doctoresdelpc.com/noticias/conectarse-por-ssh-sin-password/
_rsshusr="root"
_rsshhost="17.126.128.142"
_rsshport="22"

# Fichero SQL que pasaremos al servidor remoto con los datos
_tmp="/tmp/output.mysql.$$.sql"
_tmp_con="/tmp/output_con.mysql.$$.sql"

# Debemos quitar del for las bases de datos que NO queramos copiar con grep -v, si solo queremos una usar grep
for i in $( mysql -u "$_rusr" -p"$_lpass" -e "show databases;"|grep -v information_schema|grep -v Database|grep -v mysql|grep -v phpmyadmin ); do

# Creación de accesos a la bbdd
_db="$i"
_user=`echo $i|cut -c1-16`

echo ""
echo "##### $i #####" |tr '[a-z]' '[A-Z]'
echo ""

# Nos aseguramos que podemos entrar a la base de datos
mysqladmin -u "$_lusr" -p"$_lpass" -h "$_lhost" ping &>/dev/null || { echo "Error: El servidor MySQL no está online o estos datos: _lusr, _lpass, y _lhost no son correctos"; exit 2; }

# Nos aseguramos que la base de datos existe
mysql -u "$_lusr" -p"$_lpass" -h "$_lhost" -N -B -e'show databases;' | grep -q "^${_db}$" || { echo "Error: DBase de datos: $_db no encontrada."; exit 3; }

##### OJO, en el paso 1 el $_db debe ir escapado con \, debe quedar así sin espacios \ ` $_db \ ` Se muestra sin \ por el plugin de wordpress
##### Paso 1: Creamos el fichero sql para pasasrselo al remoto con la base de datos y el usuario/password con acceso ####
echo "*** Creando .sql con información de la base de datos $_db..."
echo "create database IF NOT EXISTS \`$_db\` " > "$_tmp"

# Creamos la query para sacar el usuario y el password que tiene permisos para usar esa base de datos.
mysql -u "$_lusr" -p"$_lpass" -h "$_lhost" -B -N \
-e "SELECT DISTINCT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') AS query FROM user" \
mysql \
| mysql -u "$_lusr" -p"$_lpass" -h "$_lhost" \
| grep "$_user" \
| sed 's/Grants for .*/#### &/' >> "$_tmp"

### Paso 2: Añadimos ; al final de todas las lineas del archivo, para que en el remoto no falle.
sed "s/$/;/" "$_tmp" > "$_tmp_con"

##### Paso 3: Mandamos el sql al servidor remoto ####
echo "*** Mandando $_db en ${_rsshhost}..."
scp -P "$_rsshport" "$_tmp_con" ${_rsshusr}@${_rsshhost}:/tmp/

#### Paso 4: Creamos la base de datos y el usuario en el servidor remoto mediante ssh ####
echo "*** Creando $_db y usuario en ${_rsshhost}..."
ssh -p "$_rsshport" ${_rsshusr}@${_rsshhost} mysql -u "$_rusr" -p"$_rpass" -h "$_rhost" < "$_tmp_con"

#### Paso 5: Llenamos la base de datos correspondiente con mysqldump ####
echo "*** Exportando los datos de $_db desde $HOSTNAME a ${_rsshhost}..."
mysqldump -u "$_lusr" -p"$_lpass" -h "$_lhost" "$_db" | ssh -p "$_rsshport" ${_rsshusr}@${_rsshhost} mysql -u "$_rusr" -p"$_rpass" -h "$_rhost" "$_db"

# Borramos los ficheros generados. 
rm -f "$_tmp"
rm -f "$_tmp_con"
ssh -p "$_rsshport" ${_rsshusr}@${_rsshhost} rm "$_tmp_con"

done

Una vez que tengamos creado el scrip le daremos permisos para poder ejecutarlo:

root@improvisa:~# chmod a+x ./migracion_mysql

Y ahora solo queda ejecutarlo en la máquina local, el script se encargará de mandar todo al nuevo servidor.

Lo único que nos quedará por hacer es ejecutar la consulta en el MySQL remoto FLUSH PRIVILEGES; para que los usuarios recientemente creados puedan empezar a utilizar las bases de datos.

Un saludo y espero que os valga.

Manual técnico de SAI Atlantic Star T3 33

Hola a todos, os dejo el manual técnico del SAI – UPS Atlantic Star T3 33 de la casa Inverter Electrónica S.L.

El número de modelo es: 25800033-ST
El nombre del modelo es: Atlantic Star T3 33 o Star T3 1-3,3KVa

Os dejo el manual de especificaciones técnicas ya que la casa no lo pone para su descarga directa y hay que llamarles para que te lo manden al mail, así si alguno lo necesita aquí lo tiene.

Manual técnico SAI – Star T3 1-3,3KVa

Saludos.

DD con barra de progreso y estadísticas

Dejo esta autonota para que cuando ejecutemos el comando DD podamos ver la barra de progreso de lo que va ocurriendo.

El que haya utilizado este comando sabe que a veces puede durar días y el no saber ni por donde anda desespera.

Para ello necesitaremos instalar el pequeño comando pv, con un simpre apt-get install pv le tendremos.

El comando es el siguiente:

sudo dd if=/dev/cdrom bs=4096 | pv -s `sudo mount /dev/cdrom /media/cdrom && du -sb /media/cdrom/ |awk '{print $1}' && sudo umount /media/cdrom`| sudo dd bs=4096 of=imagen_cdrom.iso

Nos mostrará por pantalla lo siguiente:

38MB 0:00:44 [3,61MB/s] [=======>                  ] 33% ETA 0:01:28

Saludos y espero que os valga.

Dazzle vc 80 en Windows 7

Dejo los drivers para la capturadora de video Dazzle video capture 80 para Windows 7 32 bits

Una vez instalados los drivers manualmente podremos capturar el video con cualquier software, como por ejemplo AMCap, Pinnacle Studio 15 no soporta la captura con su propia tarjeta con lo que tenemos que recurrir a otro programa.

Para descargar los drivers pichar aquí: drivers dazzle vc 80 windows 7

Saludos.

Curso de Clown

Hola a todos, os escribo para haceros una recomendación ya que yo ya he hecho estos cursos de clown y han sido geniales.

Hernán Gené a puesto en su página los nuevos cursos de clown para este año los cuales recomiendo encarecidamente si estáis interesados en este mundillo.

Yo este año estoy, al igual que el pasado, haciendo el  Curso de Teatro Físico y Gestual y la verdad que lo estoy pasando de miedo.

¡Un abrazo a todos los amantes del teatro!

VirtualBox desde web con phpVirtualBox

Improvisa :: Informática :: VirtualBox desde web con phpVirtualBoxBueno parece que últimamente estoy en fase creativa y me voy a escribir dos entradas en dos días.

Ayer bajándome un lector de RSS llamado Flipboard para mi iPhone el cual también funciona en Android y que os recomiendo, pude leer de casualidad la creación de un Front-End para el manejo de VirtualBox desde la web escrito en PHP.

La verdad es que como habréis podido leer en otras reseñas de improvisa, por aquí utilizamos mucho VirtualBox y la verdad es que siempre hemos andado intentando manejarlo sin tener que instalar las X en un servidor Debian. Podéis leer una entrada que tenemos sobre como manejar VirtualBox desde la consola: https://www.improvisa.com/02-03-2009/virtualbox-desde-consola/

Improvisa :: Informática :: VirtualBox desde web con phpVirtualBoxCon este aplicativo escrito en PHP llamado phpVirtualBox conseguiremos manejar desde la web las máquinas virtuales de una forma totalmente visual al igual que lo hacemos desde el entorno visual en nuestro escritorio.

Es un servicio que funciona bajo todas las plataformas. En este pequeño manual os eneseñaremos a instalarlo sobre Debian Squezze y manejando la ultima versión de VirtualBox, no VirtualBox OSE la versión nativa de Debian, sino la versión estable para Debian descargada de la web.

Sin más pasemos a ver como manejar VirtualBox desde la web con phpVirtualBox:

(más…)

Log Remoto con RSyslog + LogAnalizer + Mysql

Debian LogoHola a todos, hacía tiempo que no escribía un manual y bueno hoy necesitaba montar un sistema remoto de log para saber que le ocurre a un router y una vez logrado pues me he animado a escribir el manual de instalación.

Como siempre el sistema que he utilizado es Debian. Utilizaremos para recibir el log remoto la aplicación que viene por defecto en Debian llamada Rsyslog a la cual le añadiremos la funcionalidad para guardar los logs en una base de datos de MySQL

Todo esta configuración la apoyaremos con la instalación de LogAnalizer, aplicativo PHP que nos dará la ventaja de poder consultar nuestros logs y realizar búsquedas sobre las base de datos. También nos dará la posibilidad de generar estadísticas.

Sin más pasemos a ver como configurar el servicio:

(más…)

Licencia gratuita de Avast

Dejo como autonota la licencia gratuita que me ha otorgado Avast hasta el Septiembre del 2014

C07756868H1200A0815-M22H57SF