Récemment, j'ai migré une base de données Prestashop entre deux serveurs OVH mutualisés.
Ce type de base a tendance à grossir assez vite. Je ne parle pas de plusieurs gigaoctets mais on peut rapidement avoir une base de 100 ou 200 Mo (et même beaucoup plus).

Passer par un bon vieux phpMyAdmin pour l'import/export devient vite compliqué.

J'ai l'habitude de travailler sur des systèmes Unix depuis longtemps mais je remarque que ce n'est pas le cas de nombreux webmasters. Cet article pourrait donc leur donner un coup de main.

Cette méthode devrait parfaitement fonctionner chez n'importe quel hébergeur fournissant un accès ssh correct avec un minimum d'autorisations.

Par ailleurs si la migration se fait vers un serveur dédié ou entre deux serveurs dédiés, aucun souci non plus si les services ssh sont actifs et les autorisations convenablement paramétrées.

Bien entendu, j'estime que vous avez sécurisé votre installation. En cas de mauvaise manipulation, rien n'est garanti.

D'ailleurs, je n'offre pas de garantie particulière :) Soyez prudents. Je ne connais pas votre infrastructure exacte.
J'estime que votre nouvel espace d'hébergement est vierge.

Introduction

Tout d'abord, sachez que les mutualisés OVH vous offrent la possibilité de vous connecter en ssh.
Bien souvent, il suffit d'utiliser le même login que votre compte ftp et le serveur ftp.votrenomdedomaine.com

Vous trouverez plus d'infos ici.

Si vous vous travaillez sous Mac OS X, il faudra donc sortir votre terminal.
Si vous êtes un utilisateur Windows, il faudra démarrer Putty (ou un autre client SSH).
Si vous travaillez sous Linux, vous savez déjà probablement ce que vous devez faire. : sortir votre terminal, s'il n'est pas déjà ouvert :)

Exporter la base

Pour exporter la base de données, il faudra vous connecter sur le serveur qui héberge actuellement le site.

Via un terminal :

ssh login@ftp.votredomaine.com

(si vous utilisez Putty, il suffira de renseigner les différents champs)

Ensuite, pour exporter la base de données :

mysqldump --skip-extended-insert -h SERVEUR -u UTILISATEUR -p NOM_DE_LA_BASE > NOM_DE_LA_BASE.sql


 Le  --skip-extended-insert est très important pour exporter ce type de base.


Transférer la base



Une fois la base exportée, il faudra la transférer sur le nouveau serveur. Pour cela, vous pouvez utiliser la commande scp ou utiliser votre client ftp habituel. Le but est simplement de copier le fichier sql obtenu sur le nouvel espace d'hébergement.
Il faudra tout d'abord récupérer le fichier sur votre ordinateur pour ensuite l'uploader sur le nouvel espace d'hébergement. Cette étape pourra être assez longue si vous disposez d'une connexion ADSL classique.
En effet, l'upload sera limité par votre bande passante montante (bien plus faible que votre voie descendante).
Dans mon cas je disposais d'un troisième serveur avec une grande bande passante et avec les autorisations nécessaires pour me connecter vers l'extérieur (ce qui n'est pas le cas entre deux serveurs mutualisés OVH par sécurité). Je m'en suis donc servi comme machine intermédiaire.



 

Importer la base

Connectez-vous sur le nouvel hébergement :
Attention de bien utiliser les informations de connexion du nouvel espace (vierge) et de la nouvelle base de données.

ssh login@ftp.votredomaine.com




mysql -h SERVEUR -u UTILISATEUR -p
use NOM_DE_LA_BASE;
source NOM_DU_FICHIER_SQL.sql


Il ne reste plus qu'à attendre. Si la base fait plusieurs dizaines de Mo, ça peut être très long. Il a bien fallu 3h ou 4h pour importer la base dont je vous parlais (un peu plus de 100 Mo). Tout va dépendre de la machine derrière, sa charge à l'instant T etc. Vous pouvez compresser le fichier sql avec la commande gzip vi vous le désirez (il ne faudra pas oublier de décompresser de l'autre côté avec gunzip).

Si votre terminal plante, que votre connexion coupe ou que votre ordinateur passe en veille, l'import sera probablement coupé. Afin d'éviter ce désagrément, je vous conseille de lancer l'import dans une session "screen".
Pour cela, juste après votre connexion ssh, lancez la commande screen.

Si votre connexion est interrompue, il suffira de vous reconnecter sur le serveur en ssh et de lancer la commande screen -r.

N'oubliez pas de supprimer les deux fichiers sql présents sur l'ancien hébergement et le nouveau par sécurité et propreté.

J'ai réalisé et je réalise encore ce type de manipulation très souvent mais je n'avais jamais pris le temps de détailler le processus. Souvent, les techniciens connaissant mal la ligne de commande passent beaucoup de temps pour réaliser ce type de tâches et sont confrontés à de nombreux problèmes.

Bien entendu, il faudra aussi transférer les fichiers de l'application à migrer (Prestashop dans mon cas) et modifier les informations de connexion afin d'utiliser la nouvelle base de donnée.
Là, aussi, je vous invite à utiliser la ligne de commande et à compresser le tout avant transfert.