Recuperar una base de datos MySQL o MariaDB sin copia de seguridad pero accediendo a la carpeta o directorio mysql

Tiempo de lectura: 2 minutos

Hoy vamos a aprender cómo podemos recuperar una base de datos de la que no tenemos copia de seguridad .sql, pero sí que podemos acceder a su carpeta o directorio mysql. Esto puede ocurrir cuándo no nos arranca el sistema operativo, pero sí que tenemos acceso al disco duro.

Lo primero que tenemos que hacer es acceder al directorio mysql normalmente en:

/var/lib/mysql

En mi caso como utilizo un disco duro externo montado en mi unidad se llama:

mnt/xvdb/var/lib/mysql

Una vez tenemos el directorio, lo descargamos por FTP para tenerlo en nuestro sistema o lo copiamos al disco duro principal.

Ahora es muy importante obtener la versión anterior de MySQL o MariaDB, si no la sabemos y sabemos que estaba instalada en este disco duro, hacemos lo siguiente:

  1. Buscamos el directorio de instalación anterior MySQL (suele ser en usr/bin/mysql) en mi caso:
/mnt/xvdb/usr/bin/mysql

2. Ahora ejecutamos el comando de versión pero usando ese ejecutable:

/mnt/xvdb/usr/bin/mysql --version

3. Quizá nos pida que instalemos esta librería:

sudo apt-get install libncurses5

4. Ahora si nos dejará ejecutar el comando de –versión:

Ahora tenemos varias formas de volver a acceder a la base de datos.

Tenemos dos opciones:

1. Podemos intentar acceder directamente desde el ejecutable al que ahora tenemos acceso:

/mnt/xvdb/usr/bin/mysql -h localhost -u root -ppass base_datos --default-character-set=utf8mb4

En mi caso utilizo este comando, es muy importante saber el nombre de usuario y contraseña anterior si queremos recuperar los datos.

Este comando no me llegó a funcionar, ya que al estar en otra máquina, no encuentra la ruta correcta, podemos copiar la carpeta anterior mysql a la ruta:

/usr/bin/mysql

Y debería dejarnos acceder.

Utilizando este comando podemos realizar la copia de seguridad:

/mnt/xvdb/usr/bin/mysql -u root -p base_datos < base_datos_backup.sql

Recuerda poner root o el usuario al que esté la base de datos asociada, poner bien el nombre de la base de datos base_datos y poner bien la contaseña anterior.

2. Podemos utilizar una imagen Docker

En este caso, crearemos una imagen Docker con la versión que nos ha devuelto en el paso anterior:

En mi caso:

mariadb:10.1.48

Entonces me creo mi contenedor Docker Compose

version: "3.1"
services:
  mariadb:
    image: mariadb:10.1.48
    restart: unless-stopped
    container_name: mariadb
    volumes:
      - ./mysql:/var/lib/mysql
      - ./backup:/backup

Y colocamos nuestra carpeta mysql en la raíz y creamos una carpeta llamada backup:

Directorios:
   -docker-compose.yml
   -mysql
   -backup

Ahora, con esta configuración, arrancamos nuestro docker compose:

docker compose up -d

Ahora accedemos a la consola del contenedor:

docker exec -it mariadb /bin/bash

Una vez dentro, vamos a la carpeta backup:

cd backup

Y ejecutamos:

mysql -u root -p base_datos < base_datos_backup.sql

En caso de MariaDB:

mariadb -u root -p base_datos < base_datos_backup.sql

Recuerda poner root o el usuario al que esté la base de datos asociada, poner bien el nombre de la base de datos base_datos y poner bien la contaseña anterior.

Y ya tendremos nuestra copia de seguridad salvada en el fichero .sql.

Deja un comentario