Formation PUB030 : Laravel, 2019 Les outils pour gérer une base de données

11.4 Exporter une base de données qui est dans une machine virtuelle (script SQL)


Lorsqu'on travaille dans un environnement comme Laravel, le script SQL n'est généralement pas utile pendant la phase de développement. En effet, Laravel propose des fichiers de migration et des fichiers de seeds pour recréer les tables et les données.

Cependant, une fois le site en ligne, le script SQL constituera votre copie de sécurité pour les données qui auront été ajoutées en ligne. C'est pourquoi il est important de prendre l'habitude de générer ce script régulièrement sur votre serveur de production.

Alors, pourquoi apprendre à générer un script SQL sur une machine virtuelle ? Eh bien, dans certains cas, on aura ajouté des données par programmation et on voudra conserver une copie de la base de données dans l'état où elle est.

Donc, même si la regénération de la BD en développement sera pratiquement toujours réalisée à l'aide des fichiers de migration et de seeds, le script SQL pourrait vous être utile dans des situations particulières.

Voici donc comment générer ce précieux script à partir d'une machine virtuelle.

À partir de PhpStorm

Structure des tables seulement

  • Faites un clic droit sur le nom de la BD / SQL Scripts / Generate DDL to Clipboard (ou Ctrl + Maj + C).
  • PhpStorm générera en mémoire les instructions CREATE TABLE de chacune des tables.
  • Collez le script dans un nouveau document dans un éditeur comme Notepad++.

Structure des tables avec les données

  • Faites un clic droit sur le nom de la BD / Dump Data to File(s).
  • Assurez-vous que Add Table Definition (SQL) soit coché.
  • Choisissez SQL Inserts.
  • PhpStorm générera un fichier par table.

À partir de MySQL Workbench

  • Ouvrez MySQL Workbench et branchez-vous sur votre serveur Homestead.
  • Dans la zone de gauche, cliquez sur Data Export dans la zone Management.
  • Choisissez la BD à exporter puis cochez les options désirées, par exemple : Dump Structure and Data, Dump Stored Procedures and Functions, etc.

À l'aide d'un paquet dans Laravel

Le paquet Laravel Backup (par Spatie) est intéressant pour faciliter les copies de sécurité.

Ce paquet pourra être utilisé autant sur votre machine virtuelle que sur votre serveur de production.

  • Ajoutez une dépendance vers ce paquet dans votre application :
    Console Vagrant SSH

    composer require spatie/laravel-backup

    Ceci ajoutera une ligne dans le fichier composer.json puis téléchargera les fichiers requis dans le dossier vendor.

    Fichier composer.json

    {

        "name": "laravel/laravel",

        "description": "The Laravel Framework.",

        "keywords": ["framework", "laravel"],

        "license": "MIT",

        "type": "project",

        "require": {

            "php": ">=5.6.4",

            "laravel/framework": "5.3.*",

            "spatie/laravel-backup": "^6.0"

        },

  • Dans le fichier config\app.php, ajoutez une référence dans la section « Application Service Providers » :
    Fichier config\app.php (PHP)

    'providers' => [

        ...

        /*

         * Application Service Providers...

         */

        ...,

        Spatie\Backup\BackupServiceProvider::class,

    ],

  • Dans la console Vagrant ssh, lancez l'instruction suivante pour créer le fichier de configuration :
    Console Vagrant SSH

    php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"

  • Vous pouvez maintenant générer le script :
    Console Vagrant SSH

    php artisan backup:run --only-db

    Si vous obtenez une erreur du genre « Copying zip failed because: Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required" », c'est que le paquet tente de vous envoyer une notification pour vous informer du résultat de l'opération alors que vous n'avez pas configuré votre application pour l'envoi de courriel. Vous pouvez demander à ne pas envoyer de notifications comme suit :
    Console Vagrant SSH

    php artisan backup:run --only-db --disable-notifications

  • Le fichier sql compressé a été placé dans le dossier storage\app.

À la ligne de commande dans VirtualBox

  • Lancez l'application VirtualBox.
  • Double-cliquez sur le nom de la machine virtuelle dans la zone de gauche.
  • Entrer le code d'usager Ubuntu : vagrant et son mot de passe : vagrant
  • Lancez la commande mysqldump :
    Console Git Bash

    sudo /var/lib/mysql/mysqldump -u homestead -p --routines --comments --triggers nombd > chemin/nomsauvegarde.sql

  • Entrer le mot de passe de l'usager homestead : secret
  • Le script SQL de votre base de données est désormais sur votre machine virtuelle à l'endroit que vous avez déterminé (chemin/nomsauvegarde.sql).

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre