> Faqs > Restaurar un backup de MySQL / MariaDB en un proyecto en local con Sail

Restaurar un backup de MySQL / MariaDB en un proyecto en local con Sail

Tengo una duda sobre cómo restaurar un respaldo (backup creado com mysql-dump) en un proyecto que tengo en local en un entorno de desarrollo creado con Sail.

El backup lo tengo en un archivo backup.sql y lo quiero ejecutar en el sistema gestor que está en un contenedor docker con Sail.

Respuestas

Bueno, en realidad lo puedes hacer de varias maneras.

Primero asegúrate que los contenedores estén funcionando y en marcha correctamente. Esto es un poco obvio, pero lo haces, si no lo has hecho ya, con el comando:

./vendor/bin/sail up

Luego puedes conectarte a la base de datos con el cliente de mysql/mariadb que probablemente tengas instalado en local. Lo haces con el host de la ip de localhost, ya que los puertos están mapeados al contenedor.

El comando para restaurar la base de datos sería como este:

mysql -h 127.0.0.1 -u tu_user -p tu_bbdd < backup.sql

O bien...

mariadb -h 127.0.0.1 -u tu_user -p tu_bbdd < backup.sql
  • Esto supone que el archivo backup.sql lo tienes en esta misma carpeta, si no, tendrás que colocar la ruta al archivo.
  • Los datos de usuario, base de datos y clave los debes de tener en tu .env

Restaurar el respaldo mediante una sesión shell en sail

Si no tienes los comando de mariadb/mysql entonces tienes que hacer una sesión "shell" sobre el contenedor de Sail que se ha arrancado.

Esto lo haces con:

./vendor/bin/sail shell

El shell te abrirá en la carpeta donde está el proyecto Laravel. Dentro de esa carpeta deberás colocar, al menos de manera momentanea, el archivo .sql de tu respaldo, para que puedas acceder a él desde el contenedor.

Entonces lanzas este comando para ejecutar las sentencias SQL del backup:

Desde ahí puedes lanzar el comando de antes pero personalizando el host. El host en el contenedor principal de Sail (que accedes con la sesión shell) lo define el docker-compose.yml de la raíz de tu proyecto y será algo como "mariadb" o "mysql". También debería figurar en el .env de tu proyecto, en los datos de conexión con la base de datos.

El comando quedaría así en este caso:

mysql -h mariadb -u tu_user -p tu_bbdd < backup.sql 

Con esto el backup se tendría que ejecutar sin mayores problemas. Espero que te sirva.

Santiago
591 19 47 21