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:
- 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.
Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.