Transfert de base de données

Transférer une base de données d'un serveur à un autre nécessite une exportation depuis le premier serveur, puis une importation sur le second.

Cela se fait de la même manière que le serveur soit local ou distant, la seule différence étant que sur serveur distant, c'est en général l'hébergeur qui détermine le nom de la base.

ATTENTION : si vous voulez utiliser JoomlaPack, il est inutile d'essayer de suivre cette procédure. En effet, vous devez savoir que JoomlaPack remplace les préfixes des tables de la base par le caractère "#", permettant ainsi de changer ce préfixe lors d'une restauration, d'où l'impossiblité de restaurer directement la base avec phpMyadmin sans modifier préalablement le fichier SQL pour remettre le préfixe voulu.

Cette procédure peut bien entendu s'appliquer pour effectuer des sauvegardes et des restaurations de base sur un site de test ou de production.

L'exportation :

Vous allez ouvrir phpMyadmin pour exporter la base de données. La manière de le faire dépendant de votre serveur ou hébergeur, je ne m'y arrêterai pas.

Dans le cas où vous auriez accès à la gestion de plusieurs bases depuis la page d'administration, veillez à sélectionner la base utilisée par votre site, afin de faire apparaître la liste de ses tables dans la fenêtre centrale.

selection_base

exporter1_base

Cliquez sur "Exporter".

Sur la page suivante, veillez à sélectionner toutes les tables correspondant à votre site.

Vous allez ensuite cocher "DROP TABLE" afin que d'anciennes tables de même nom puissent être supprimées lors d'une nouvelle importation, ce qui évite de devoir le faire manuellement.

L'export en compatibilité MYSQL40 n'est pas obligatoire, mais parfois nécessaire.

Vous pouvez récupérer le contenu de la base sous forme de fichier texte, éventuellement comprimé, en validant la case "transmettre" et si besoin un mode de compression.

En donnant au nom du fichier le format suivant "__DB___%y%m%d_%H%M" (sans les guillemets), il portera le nom de la base et sera horodaté, ce qui est pratique pour conserver une sauvegarde de votre base.

exporter2_base

Lorsque vous aurez correctement paramétré ces options, cliquez sur "Exécuter" : si vous n'avez pas coché "transmettre", le texte de sauvegarde sera affiché à l'écran, il vous faudra alors le copier pour le réutiliser ultérieurement ; si vous avez coché "transmettre", vous aurez simplement à sauvegarder sur votre ordinateur le fichier correspondant.

Le temps de création de ce document dépend de l'importance de la base, soyez patient si elle est lourde.

Importation :

Exécutez phpMyadmin sur le serveur de destination.

Si votre base n'existe pas, créez-la.

Chez un hébergeur, la procédure est variable et se fait en général depuis l'administration de l'espace-client.

En local, cela se passe directement dans l'administration des bases :

creation_base

Je conseille les paramètres apparaissant dans l'image ci-dessus, le nom de votre base remplaçant bien entendu le nom choisi pour l'exemple, à savoir "manouvellebase".

Une fois la base créée, elle va apparaître dans la liste de la colonne gauche. Cliquez sur son nom pour faire apparaître ce que montre l'image ci-dessous:

creation2_base

Vous allez alors cliquer en haut de la colonne sur l'icône "SQL" située à côté de la peite maison symbolisant le retour à la page principale.

Une nouvelle fenêtre va s'ouvrir :

importation1_base

Si vous avez gardé votre sauvegarde sous forme de texte complet (et non de fichier), copiez directement ce texte dans la zone de saisie de cette fenêtre ; si vous avez un fichier, éventuellement comprimé, cliquez sur "importe les fichiers", puis sur "parcourir" pour pouvoir choisir le fichier à transférer . Cliquez ensuite sur "Exécuter".

Selon la taille de ce fichier, le temps de transfert et d'importation sera plus ou moins long.

La fenêtre principale vous montrera alors le nombre de tables importées, ce qui conclura l'importation.

importation2_base

Incidents connus :

  • à noter qu'il arrive qu'une erreur apparaisse parfois chez OVH lors du rafraîchissement de cette fenêtre, mais c'est sans conséquence sur l'importation elle-même
  • il arrive également que les accents soient mal interprétés, voire que certains textes soient tronqués lors de l'importation, dès le premier caractère spécial rencontré : dans ce cas, reprenez votre sauvegarde, éditez-la avec un éditeur simple (bloc-notes de Windows et surtout pas Wordpad ou Word), afin de pouvoir enregistrer le texte en UTF8, puis faites de nouveau l'importation, le texte devrait alors être correctement récupéré.
  • il peut arriver, en local, que le temps de traitement soit trop long et que l'opération avorte : dans ce cas, il faut soit tronquer la sauvegarde en plusieurs fichiers de taille moindre, soit modifier php.ini afin d'augmenter ce temps de traitement
  • si vous avez utilisé un gestionnaire de téléchargement tel que Docman ou Remository et choisi d'enregistrer les documents dans la base, vous êtes pratiquement assuré de ne pas pouvoir exporter et importer la base, commpte tenu de son volume et du temps de traitement de ces données : dans ce cas, vous pouvez exclure à l'exportation la table contenant ces données de type "blob", mais vous n'aurez donc plus accès à ces documents.