Sauvegarder et restaurer une base de données MySQL

Même si PMB a des outils pour sauvegarder et restaurer la base de données de votre bibliothèque, il est bon de savoir le faire en ligne de commande. Pour deux bonnes raisons.

Les bienfaits des sauvegardes et restaurations MySQL

Il se peut que la sauvegarde mais surtout la restauration ne fonctionnent pas avec les outils de PMB.

Il est toujours bon de faire plusieurs sauvegardes qu’une seule.

Passer par les commandes MySQL vous permet d’avoir une sauvegarde complète de tout votre catalogue.

Vous ne pourrez rien faire avec PHPMyAdmin si votre base de données dépasse 2Mo. La nôtre qui ne contient pourtant que 2000 documents environ fait une dizaine de Mo. La ligne de commande est donc essentielle et ce n’est pas compliqué du tout.

Sauvegarder une base de données MySQL en ligne de commande, en local

Je suppose que vous êtes sous GNU/Linux et que votre installation de PMB est faite sur LAMP, en local, donc. C’est similaire pour d’autres OS.

Schéma de la commande de sauvegarde MySQL

Voici le schéma de la commande:

mysqldump -h localhost -u utilisateurdb -p nomdb > dumpfile.sql

Explications de la commande de sauvegarde MySQL

  • En local, votre serveur c’est localhost, -h localhost veut dire que vous voulez vous connecter à ce serveur
  • -u utilisateurdb : remplacez utilisateurdb par le nom de l’utilisateur de la base de données. Cela ne s’invente pas, vous avez choisi ce nom ou il vous a été attribué lors de l’installation de PMB.
  • -p = password. C’est le mot de passe pour accéder à la base de données. Cela ne s’invente pas: voyez ci-dessus
  • nomdb: remplacez par le nom de la base de données que vous devez connaître. Voyez plus haut
  • dumpfile.sql: nom générique du fichier de sauvegarde. Donnez un nom compréhensible mais gardez l’extension SQL.
  • Toutes les commandes sont à taper sans passage à la ligne.
    Le terminal fait ce qu’il veut comme retours à la ligne mais vous, vous faites comme si la ligne n’était pas limitée par le bord de la fenêtre.

Exemple concret d’une sauvegarde MySQL

Sachant que:

  • utilisateurdb = flouf
  • nomdb = pmb1
  • dumpfile.sql = backup_pmb.sql

En avant pour la commande:

  • Lancez un terminal
  • Déplacez-vous si besoin dans le répertoire où vous voulez conserver le fichier de sauvegarde, par exemple: cd ./sauvegardes
  • Tapez la commande suivante:
    mysqldump -h localhost -u flouf -p pmb1 > backup_pmb.sql
    Attention au sens du chevron >
  • Votre mot de passe vous sera demandé: celui qui vous donne accès à la base de données mais pas celui qui vous donne accès à votre ordinateur ;-)
  • Patientez. Quand l’invite revient, c’est fait
  • Pour quitter MySQL, vous pouvez taper quit

Restaurer une base de données MySQL en ligne de commande, en local

Pour la restauration, je reprend le même exemple:

  • Lancez un terminal
  • Déplacez-vous si besoin dans le répertoire où vous avez conservé le fichier de sauvegarde, par exemple: cd ./sauvegardes
  • Tapez la commande suivante:
    mysql -h localhost -u flouf -p pmb1 < backup_pmb.sql
    Attention au sens du chevron <
  • Votre mot de passe vous sera demandé: celui qui vous donne accès à la base de données mais celui qui vous donne accès à votre ordinateur.
  • Patientez. Quand l’invite revient, c’est fait
  • Pour quitter MySQL, vous pouvez taper quit

Il est même possible de restaurer en local une base de données SQL sauvegardée chez votre hébergeur. Il y a quelques liens qui ne fonctionnent plus mais rien d’essentiel.

Restaurer une base de données sur un hébergement en ligne

La sauvegarde devrait être faite par votre hébergeur et il est recommandé de la télécharger chez vous, en cas de besoin. TuxFamily, hébergeur excellentissime, fait une sauvegarde automatique chaque nuit de tous les sites web de ses utilisateurs. C’est très appréciable.

Pour restaurer une base de données qui se trouve chez un hébergeur, la ligne de commande est semblable à ce que nous avons fait en local mais il faut se connecter au serveur distant.

Se connecter au serveur distant par SSH

Nous commençons donc par une commande SSH pour aller sur l’espace qui nous est imparti sur le serveur de notre hébergeur:

ssh adresse_serveur_shh -l votre_login

Ces paramètres (adresse du serveur, votre login, le mot de passe) ne s’inventent pas. Votre hébergeur vous a communiqué ces informations.

Ce qui donne, en prenant un exemple fictif:

ssh ssh.vive-gnulinux.org -l bibliolibre

Le mot de passe de l’utilisateur «bibliolibre» est demandé, puis vous voilà dans votre espace sur le serveur distant qui dans notre exemple s’appelle «serveuz». C’est magique, voici l’invite, en reprenant notre exemple fictif:

bibliolibre@serveuz:~$

Et là toutes les commandes familières aux GNU/Linuxiens sont disponibles, du style, afficher le contenu de votre espace (ls), se déplacer dans un répertoire (cd), supprimer ce que vous voulez (rm attention!), déplacer fichiers ou répertoire (mv), copier (cp).

Commande de retauration MySQL

Si vous avez repéré où se trouve le fichier de sauvegarde de la base de données, placez-vous dans ce répertoire et taper la commande suivante en l’adaptant:

mysql -h sql_gnu -u bibliolibre_pmb -p pmb < backup_pmb.sql

Il faut connaître le nom du serveur MySQL qui ne peut pas être localhost. L’exemple fictif donné ici est sql_gnu.

Le nom de l’utilisateur de la base de données n’est pas nécessairement celui de votre login. C’est l’hébergeur qui vous l’indiquera. Le nom de la base de données est également attribuée par votre hébergeur.

Si vous devez vous-mêmes sauvegarder votre base de données, vous êtes maintenant capables de le faire en adaptant la commande locale et la commande ci-dessus.

Transfer et travail sur le serveur, de manière sécurisée

À suivre: Transférer tout le bazar de PMB sur le serveur distant en ligne de commande pour l’installer. L’avantage est la rapidité et une plus grande sûreté dans la manœuvre. Avec un logiciel graphique de FTP comme gFTP et sans doute aussi Filezilla, vous risquez de devoir transférer les répertoires l’un après l’autre. Tout télécharger d’un coup risque de faire «claquer» gFTP ou la connexion risque de se couper. SSH, là encore, fait des merveilles, sous la forme de la commande scp.

C’est là-bas: SSH pour installer PMB ou modifier l’installation.

5 commentaires

  1. Yop

    le top c’est d’automatiser cette fameuse sauvegarde en créant un .sh avec la commande et de coler un lien vers celui ci dans la crontab ;o)

    ajouter l’option –opt dans la commande

    un simple mysqdump sauvegarde les données mais pas la procédure de création de la base et de ses tables.

    l’option –opt permet d’obtenir une sauvegarde comprenant les données ET les instructions SQL de création de la base et de ses tables

    mysqldump -u root -pmotdepasseduroot –opt bibli 2>> /root/sauvegarde.log /save/sauvegarde1.sql 2>> /root/sauvegarde.log

    les 2>> sont des redirection des messages d’erreur vers un fichier de log

    en même temps on s’en fout puisqu’à priori si vous perdez votre serveur bah il faudra repasser par l’install de pmb donc la base sera recréée par celle ci avant d’être restaurée à partir de la sauvegarde ;oD

    1. Bonjour LaurentBDP976,

      Je profite de ton passage ici pour dire que je regrette bien le forum Biblinuxiens. Beaucoup de gens râlent sur la mailing list de PMB pour avoir un forum (je leur ai dit une fois qu’ils n’avaient qu’à en mettre un en place sur Tuxfamily) mais évidemment la plupart des gens font du Windows. Ils sont peut-être tous sur Facebook maintenant, plus besoin de forum, tout bien centralisé sur FB, c’est beau.

  2. bonsoir
    j’utilise pmb sous windows et ayant de gros problèmes de sauvegarde j’ai été dirigé par le forum pmb sur votre site
    j’ai lancé la cde pour sauvegarder mais hélas échec j’obtiens ce message très sibyllin pour moi
    mysqldump’ n’est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    pouvez vous m’éclairer merci d’avance
    cdlt Néméwig

  3. Je ne connais plus Windows depuis très longtemps. Il me semble que le message veut dire les commandes Mysql ne marchent pas sur ton système. En principe, si tu as une base de données Mysql dans ton Windows la commande devrait être reconnue. On dirait que Mysql n’est pas installé.

    Sous GNU/Linux, par exemple, la commande ne sera pas reconnue si on ne passe pas en Superutilisateur (avec Sudo ou Su). Sous Windows, il se peut qu’il y ait aussi des problèmes de permissions, notamment si tu n’es pas l’administrateur de l’ordinateur.

    Bref, il faudrait savoir si ton PMB est installé sur ton ordinateur (serveur XAMP?) ou chez un hébergeur et si tu as bien tous les droits pour administrer Mysql.

Répondre à LaurentBDP976 Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *