viernes, diciembre 11, 2015

Recuperación de una BBDD Mysql

A veces nos puede ocurrir que por corrupción de algún inodo del HDD o bien por un apagado abrupto de la máquina, el servidor de mysql no quiere iniciar. En el log de sucesos podemos ver errores con tablespace, etc.

Vamos a recuperar la BBDD de la siguiente manera.


1.- Paramos todos los procesos de mysql

$> /etc/init.d/mysql stop

$> ps -ef|grep mysql

$> kill -9 NumProcess

2.- Creamos copias de los siguientes ficheros:

$> mkdir -p /tmp/mysql/backup

$> cp -rp  /var/lib/mysql/ib* /tmp/mysql/backup/

3.- Añadimos en la sección  "[mysqld]" al archivo "/etc/mysql/my.cnf" lo siguiente:

innodb_force_recovery=4

4.- Iniciamos la BBDD:

$> /etc/init.d/mysql start

Ahora se habrá iniciado la BBDD en modo recovery, no podremos grabar datos en ella.

5.- Realizamos un checkeo

$> mysqlcheck -p --all-databases

Comprobamos que todo sale OK

6.- Realizamos copia de seguridad de la BBDD

$> mysqldump --single-transaction -p nombre_bd > respaldo.sql

7.- Borramos las bbdd en mysql

$> mysql -p

mysql > drop database Nombre_BBDD;

8.- Borramos archivos

$> /etc/init.d/mysql stop
$> rm -rf /var/lib/mysql/ib*

9.- Quitamos las opciones puestas en el paso 3 e iniciamos mysql:


$> /etc/init.d/mysql start


Mirar el log de errores de Mysql, no deberían aparecer problemas y deberá estar arrancado correctamente Mysql.

10.- Importar las BBDD

Primero creamos de nuevo la BBDD en Mysql:

$> mysql -p

mysql > create database Nombre_BBDD;
mysql > exit
$> mysql -u USUARIO -p BaseDeDatos < /Ruta/Del/Archivo/archivo.sql

Con esto ya tenemos recuperada la BBDD corectamente.