La semaine dernière, Blogmotion déménageait de serveur. Voici un petit guide de migration tranquille, pour limiter un maximum l'impact de ce changement qui peut se faire sans qu'une coupure ne soit ressentie par les visiteurs.
Ce guide concerne uniquement le changement d'adresse du serveur MySQL, consultez aussi mon billet décrivant la sauvegarde complète d'un site web.
Ce guide concerne la plateforme WordPress, avec une base de données MySQL, le tout migrant depuis un serveur Linux Debian (dédié) vers un autre serveur du même type. Fonctionne également en environnement mutualisé ayant un accès SSH.
MàJ 2022 : en complément consultez l'article Tecmint "MySQL Backup and Restore Commands for Database Administration"
1 : Exporter la base de données
Si vous êtes sur un serveur mutualisé, vous devez exporter votre base avec un outil fourni par votre hébergeur, tel que PhpMyAdmin, mais vous devrez sûrement segmenter l'export à cause de la limitation de l'import par la suite (2 Mo par defaut).
Il vous suffit de lancer l'export de votre base de données via une connexion SSH (en root) :
mysqldump <base> -h <serveur> -u <utilisateur sql> -p > /chemin/vers/export.sql
Ce qui peut par exemple être :
mysqldump blogbase -h sql.blogmotion.fr -u bloguser -p > ./export.sql
2 : Envoyer l'export
Il nous faut maintenant envoyer l'export vers le nouveau serveur. Vous pouvez pour cela le faire via FTP, SFTP, HTTP, etc.
Mais la solution la plus adaptée dans ce genre de situation reste le transfert via la commande rsync.
Toujours en root :
rsync -e ssh /chemin/versexport.sql utilisateur@ip_nouveauserveur:/chemin/destination
L'ip peut également être le nom de domaine, ou encore le reverseip 😉
Par exemple :
rsync -e ssh /export.sql 90.0.0.1:/root/
Je n'ai pas précisé l'utilisateur car étant en root sur le premier serveur, la connexion s'effctura en root sur le second. Le serveur va de toute façon demander le mot de passe associé, qu'il vous faudra entrer.
3 : Import de la base de données
Il nous reste à importer toutes les données de la base contenues dans le fichier d'export sql sur notre nouveau serveur. J'avais par ailleurs déjà abordé ce thème lors d'un précédent billet.
Si vous avez compressé le fichier en GZ (à ne pas confondre avec TAR.GZ) il faut d'abord l'extraire :
gunzip votre-fichier.gz
Etablir une connexion SSH en tant que super utilisateur (root) :
mysqldump <base> -h <serveur> -u <utilisateur sql> -p < /chemin/vers/export.sql
Ce qui donne chez moi :
mysqldump blogbase -h sql.blogmotion.fr -u bloguser -p < ./export.sql
Fichiers de configuration
Pensez également à modifier (si nécessaire) certaines valeurs dans le fichier /wp-config.php :
- l'adresse du serveur MySQL (si c'est "localhost" vous êtes tranquille)
- le nom de la base de données
- le nom de l'utilisateur MySQL
- le mot de passe de l'utilisateur MySQL
Ainsi que vos scripts personnels si vous en avez (pages concours, etc).
Conclusion
Essayer de réaliser ces opérations dans un minimum de temps si vous ne coupez pas l'accès au blog. En effet, si vous recevez un nouveau commentaire après l'export, celui-ci passera à la trappe.
Pour pallier à ceci, vous pouvez restreindre l'accès au blog à l'aide d'un .htaccess (lire "précautions et informations") limitant l'accès à votre seule adresse IP le temps de la migration.
L'idéal étant de préparer le nouveau serveur (création de la base, de l'utilisateur MySQL, etc.) avant de couper l'accès au blog.
Grâce à cette technique, personne ne s'est rendu compte du changement de serveur pour Blogmotion, pourtant réalisé en soirée, heure importante en terme de visites, mais sans coupure 😉
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
6 commentaires
Well done!! Thanks for this post!
Gaetan
boookmarqué! Migrer la base de données de WordPress de serveur http://tinyurl.com/n6bwqx
Merci pour ce petit récap 🙂
Dis moi, si la base de donnée est très conséquente (genre plus de 50mo) il existe une option pour pas que ça plante (découpage, ....)
++
En cas de grosse base de données, c'est justement la méthode via shell qui est la plus efficace 😉
Concernant les bases de donnée très importante j'utilise big dump.
merci pour ce guide, très enrichissant pour les novices comme moi !