• 0
Aurélien PONCINI

[MySQL] Migrer une base de données MySQL sur les nouveaux serveurs

Question

Le but de ce topic est de vous expliquer comment basculer votre base de données de mysql1.web4all.fr vers un des nouveaux serveurs MySQL (mysql2, 3, 4, 5, 6).

Préparation

Vous devez avant tout savoir :

  • quelles applications utilisent la base de données que vous souhaitez migrer. Un joomla ? un Wordpress ? Un site et un forums ? Juste un site "fait maison" ?
  • si votre base de données doit être accessible depuis Internet ou uniquement depuis l'infrastructure interne Web4all (avez vous besoin d'accéder à votre base depuis un autre hébergeur, 99% des clients n'ont pas ce besoin)

Pour chacune des applications utilisant la base de données, une modification manuelle de votre part sera nécessaire.

Cette manipulation est très simple. Cette procédure est très simple, il faut juste ne pas sauter d'étape :)

Deux cas de figure :

  • changement de serveur MySQL
  • changement de serveur MySQL et changement du nom de la base de données

ATTENTION : les bases de données créés avant décembre 2010 ne respectent pas la nouvelle charte de nommage indispensable au bon fonctionnement sur les nouveaux serveurs MySQL. Le manager vous obligera donc à modifier le nom de la base.

En résumé avant de commencer vous devez :

  • connaitre les fichiers de configuration à modifier pour chacune de vos applications afin de modifier :
    • le nom du serveur MySQL
    • le nom de la base et / ou de l'utilisateur si le manager vous empêche de conserver les noms actuels.
  • définir si la base de données doit ou non être accessible de l'extérieur de Web4all.

Ne supprimer rien avant la fin de la procédure, le manager vous permettra de créer une base et un utilisateur même si le nom existe déjà sur un autre serveur !

Déroulement

  1. Sur le manager :
    1. Récupérez les informations sur la base / utilisateur actuels (ne RIEN supprimer pour le moment !)
    2. Créez la nouvelle base de données sur un nouveau serveur
    3. Créez le nouvel utilisateur sur un nouveau serveur
    4. Donnez des privilèges pour cet utilsiateur
    5. Testez le fonctionnement de l'utilisateur sur PMA : https://pma.web4all.fr
  2. Sur votre hébergement :
    1. Préparez les fichiers devant être modifié (afin de minimiser le temps de coupure, autant se préparer ;) )
    2. Limitez les risques de corruptions de données : fermez le site
      1. si un mode maintenance existe, mettez votre site en maintenance ;
      2. vous pouvez sinon faire vous même un fichier index pour prendre la relève le temps de l'intervention
      3. vous pouvez aussi laisser tel quel, à vous de juger de l'impact potentiel sur vos données.
  3. Sur PhpMyAdmin :
    1. Connectez vous sur PMA : https://pma.web4all.fr en sélectionnant l'ancien serveur mysql1.web4all.fr (vous devez utiliser un utilisateur ayant un droit sur la base à sauvegarder !) ;
    2. Exporter la base de données ;
    3. Changez de serveur et sélectionnez le nouveau serveur MySQL ;
    4. Sélectionnez la base de données nouvellement créée ;
    5. Importer la sauvegarde précédemment effectuée.
  4. Sur votre hébergement :
    1. appliquez les modifications dans les fichiers de configurations
    2. testez votre site / applications, si problème, annulez les modifications dans le fichier de configuration et recommencez la procédure en cherchant où vous avez pu vous tromper OU cherhez l'erreur...
  5. Sur le manager :supprimer les privilèges SQL de l'ancien utilisateur sur l'ancienne base
  6. Sur votre hébergement :
    1. testez votre site / applications, si problème, recréer les privilèges SQL de l'utilisateur sur l'ancien serveur OU vérifiez pourquoi votre application pointe encore sur l'ancien serveur.

Exemple concret :

Partager ce message


Lien à poster
Partager sur d’autres sites

98 réponses à cette question

  • 0

Cas concret : Migration d'une base de données pour Piwigo

Préparation

On créé la base :

post-1-0-87519200-1421162961_thumb.png

On fais bien attention de sélectionner un serveur MySQL qui permette ou non d'être accessible depuis l'extérieur en fonction du besoin. Dans le cas présent nous prenons mysql2

post-1-0-13000800-1421162963_thumb.png

On créé un utilisateur :

post-1-0-23461500-1421162964_thumb.png

Note : on voit bien que n'avons encore utilisateur sur mysql2 (sinon nous aurions pu réutiliser un utilisateur existant) :

post-1-0-37359400-1421162965_thumb.png

On fais bien attention de sélectionner le même serveur MySQL que pour la base de données (mysq2)

post-1-0-32758500-1421162966_thumb.png

On accorde les privilèges :

post-1-0-26578100-1421162967_thumb.png

On laisse tous les privilèges :

post-1-0-07653700-1421162968_thumb.png

post-1-0-39109700-1421162969_thumb.png

On vérifie sur https://pma.web4all.fr

post-1-0-22570700-1421163222_thumb.png

On doit bien voir la base de données que nous venons de créer.

post-1-0-67492000-1421163223_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Préparation des modifications sur les fichiers de l'hébergement

Si vous ne savez pas où sont les fichiers de l'hébergement, vous pouvez regarder sur le manager :

post-1-0-71314700-1421163390_thumb.png

On va donc dans notre hébergement modifier le fichier de configuration de notre application (nous allons essayer de faire une liste des fichiers par applications pour pas que vous ne cherchiez ;) )

post-1-0-47000400-1421163392_thumb.png

On remplace les données :

post-1-0-77339500-1421163393.png

Par :

post-1-0-30202900-1421163394.png

On teste, le site doit bien renvoyer une erreur, sinon ce n'est pas le bon fichier !

post-1-0-83312600-1421163394_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Export de la base de données

On va sur PhpMyAdmin pour exporter la base : https://pma.web4all.fr

Sur l'ancien serveur, mysql1

post-1-0-43246600-1421163612_thumb.png

On vérifie bien encore une fois que nous sommes sur le bon serveur et la bonne base puis on clique sur Exporter :

post-1-0-59353100-1421163613_thumb.png

On clique sur Personnaliser afin de définir :

  • Diriger la sortie vers un fichier
  • Compression zippé
  • Désactiver la vérification des clés étrangères
  • Structure et données
  • On vérifie bien que la case suivante est décochée : "Ajouter un énoncé CREATE DATABASE / USE"

Et on clique tout en bas sur Exporter puis on enregistre le fichier et on attend qu'il ait terminé d'être téléchargé.

post-1-0-94925100-1421163614_thumb.png

post-1-0-96591300-1421163615_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Import de la base de données

On va sur PhpMyAdmin pour importer la base : https://pma.web4all.fr

Sur le nouveau serveur, mysql2

post-1-0-95478500-1421164006_thumb.png

On sélectionne la base de données à gauche, on clique sur "Importer", on clique sur "Parcourir" pour donner le fichier et "Exécuter"

post-1-0-18260200-1421164008_thumb.png

On attends -sans toucher- le message de validation :)

post-1-0-15358000-1421164009_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Test de validation

Si vous avez correctement modifié la configuration de votre site, cela doit fonctionner.

Si vous l'avez mis en maintenance vous pouvez le sortir de maintenance pour tester.

post-1-0-14203400-1421164146_thumb.png

Cela fonctionne ? :) Alors on va retirer les privilèges à l'ANCIEN utilisateur voir si tout est toujours OK ;)

post-1-0-18359400-1421164179_thumb.png

post-1-0-19404100-1421164180_thumb.png

Cela fonctionne ? :) Alors si vous le souhaitez vous pouvez supprimer l'ANCIENNE base de données. Vous pouvez aussi attendre quelques heures / jours pour le faire. Mais pensez à le faire dès qeu vous avez validez que tout est OK :)

post-1-0-85492500-1421164180.png

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Liste des emplacements de fichiers de configurations selon les applications.

Joomla : configuration.php

Piwigo : include/mysql.inc.php / Sur les installations récentes de Piwigo, le fichier à configurer est local/config/database.inc.php

SPIP : config/connect.php

Wordpress : wp-config.php

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir,

Pour compléter, les fichiers à modifier pour :

  • SPIP : connect.php - situé dans le répertoire config
  • Wordpress : wp-config.php - situé à la racine du site
  • Joomla! : configuration.php (à priori à la racine du site)
Modifié par Philivert

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir,

Pour compléter, les fichiers à modifier pour :

  • SPIP : connect.php - situé dans le répertoire config
  • Wordpress : wp-config.php - situé à la racine du site
  • Joomla! : configuration.php (à priori à la racine du site)

Merci j'ai actualisé mon post :)

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

<mode troll on> tu aurais pu mettre SPIP en premier, ça aurait reflété la réalité </mode troll off> ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour,

Encore une fois, quel boulot !

On ne se rend pas compte, coté utilisateur, on clique et ça marche, mais faut voir le taf qu'il y a derrière !

Bravo ;)

Cordialement,

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Petit rajout pour ceux qui ont une base de données trop grosse et/ou une connexion trop petite (voir des requêtes trop longues pour être importées via phpmyadmin)

Le prérequis étant d'avoir au minimum un pack "Start" afin de bénéficier du ssh.

ATTENTION : Cette partie se place dans le tuto déjà existant. Elle ne concerne que l'export et l'import de la base de données. il faut donc avoir déjà créé la nouvelle base de données et le nouvel utilisateur.

ATTENTION BIS : Cette technique est réservée au personnes qui connaissent déjà bien le fonctionnement d'un site web, qui ont de très grosses bases de données ou qui ne PEUVENT pas faire l'importation via phpmyadmin.

L'astuce consiste à tout faire depuis Web4all sans avoir à rapatrier la base de données chez soit. Afin de pouvoir le faire nous allons utiliser la connexion ssh qui est proposée par Web4all.

1/ En premier lieu il va falloir créer un utilisateur ssh (c'est un peu comme pour un utilisateur ftp) :

1.1/ Il faut tout d'abord acceder au manager et se rendre dans la partie "Fichiers & accès". Ensuite nous devons cliquer sur "ajouter un utilisateur SSH"

post-2798-0-68344700-1421179002_thumb.jp

1.2/ Créez un mot de passe pour votre utilisateur.

post-2798-0-09322500-1421179054_thumb.jp

Voilà, votre utilisateur est fin prêt, attendez juste quelques secondes pour qu'il soit opérationnel.

2/ Il nous faut un logiciel pour nous connecter en ssh. La solution dépendra de votre système d'exploitation.

2.1/ Mac OS X et Linux, tout est inclus d'origine. Il suffit de lancer l'application terminal et taper :

ssh votreutilisateur@ssh.web4all.fr

En remplaçant "votreutilisateur" par celui qui est donné sur le manager.

Note : Sur Mac, le terminal se trouve dans "Applications" et ensuite dans "Utilitaires"

En validant cette commande, sur Mac comme sur linux, le terminal va vous écrire beaucoup de choses. Contentez-vous d'écrire "yes" (sans les guillemets)

2.2/ Sur Windows c'est un peu plus compliqué. Il va vous falloir un logiciel qui s'appelle "Putty", vous pouvez le trouver ici : http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

Il n'y a rien à installer, il suffit de lancer le logiciel en double cliquant dessus.

Dans la fenêtre qui s'affiche, complétez le Host Name avec "ssh.web4all.fr"

post-2798-0-48139100-1421179630.jpg

Ensuite, dans la fenêtre qui s'ouvre, cliquez sur "Yes"

post-2798-0-77942800-1421179671.jpg

A ce moment vous devriez avoir une fenêtre noire avec plein de choses écrites dedans

post-2798-0-28387900-1421180068_thumb.jp

3/ A partir de là, plus de cas particulier, tous les systèmes d'exploitation sont à la même enseigne.

3.1/ Maintenant tout se passe avec des lignes de commande. Pour commencer, on va faire une sauvegarde de la base de données :

mysqldump -h mysql1.web4all.fr -umonuser -p monsite > monsite.sql

Il faut bien évidement remplacer "monuser" par le nom d'utilisateur de la base de données à sauvegarder (pas d'espace entre -u et l'utilisateur, il ne s'agit pas d'une erreur). le premier "monsite" est le nom de la base de données à sauvegarder (l'actuelle). Le "monsite.sql" est le fichier qui va accueillir la sauvegarde, vous pouvez l'appeler comme vous voulez.

3.2/ Maintenant que l'export est fait, nous devons importer la base dans son nouvel emplacement.

mysql -h mysqlx.web4all.fr -p -umonuser monsite < monsite.sql

Comme au dessus il faut remplacer le "monuser" mais cette fois-ci par le nouvel utilisateur créé pour l'ocasion. Idem pour le "monsite" qui doit correspondre au nom de la nouvelle base de données. Quand au monsite.sql c'est le nom du fichier que vous avez défini à l'étape juste au dessus. Petite subtilité, il faut remplacer le "x" dans "mysqlx.web4all.fr" en mettant le chiffre correspondant au serveur sur lequel vous avez créé l'utilisateur et la base de données.

Voilà c'est tout. vous pouvez ensuite passer à la modification des fichiers de votre site.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Hello Tuxfanou,

Il faudrait ajouter en prérequis qu'il faut disposer au minimum d'un pack start (pour avoir un user ssh) ;)

Cordialement,

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Merci Mickelebof,

J'avais pas pensé à ça :)

De toute façon on ne peut pas avoir plusieurs bases sql en pack One, le tuto est donc inapplicable.

Mais je vais tout de même le préciser.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Je reposte ici ma demande sur Twitter pour les membres. Est-ce obligatoire ? (Réponse : oui). Y-a-t-il une échéance pour réaliser l'opération ? Y aura-t-il un mailing pour les personnes concernées par la disparition de leur base? Quel nouveau serveur privilégier (répartition de charge)?

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Pas de souci à avoir, la campagne de migration ne fait que commencer. Elle va se dérouler sur pas mal de temps. Il n'y a pas encore de date définie pour le moment.

La communication se fait par étape pour éviter de gérer trop de problèmes en simultanés (twitter, mailing, site, ...). Mais sinon oui, un mail est prévu un peu plus tard pour officialiser le tout.

Il n'y a pas vraiment de serveur a privilégier pour le moment, ils sont tous vides (ou quasiment). Tu peux en choisir un sans crainte.

Voilà, c'est à peu prêt tout.

Si tu as d'autres question, n'hésites pas ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Migration OK pour moi (en terminal SSH).

Quelques remarques :

  • je ne suis pas sûr qu'il soit pertinent que le choix du serveur reste à l'utilisateur ? pourquoi ne pas intégrer une répartition de charge, c'est à dire proposer simplement accès interne/externe puis envoyer le numéro du serveur sur lequel la base a été créé à l'utilisateur dans le panel
  • lors de la suppression d'un utilisateur il serait pas mal d'afficher le serveur mysql concerné, car dans le cas où on utilise le même login sur le nouveau serveur c'est assez flippant au moment de la suppression... il faut être sûr d'avoir cliqué sur le bon :)

parfait pour le reste :)

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir,

pour le choix du serveur c'est temporaire pour que les gens puissent répartir un peu leurs bases s'ils veulent éclater. Après il y aura un conseil de donné et certains serveurs ne seront pas proposés (on en parle encore pour le moment).

Je vais regarder pour le point 2 ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
[...]
  • lors de la suppression d'un utilisateur il serait pas mal d'afficher le serveur mysql concerné, car dans le cas où on utilise le même login sur le nouveau serveur c'est assez flippant au moment de la suppression... il faut être sûr d'avoir cliqué sur le bon :)

parfait pour le reste :)

Hello,

En fait c'est déjà le cas si tu vas dans "Utilisateurs" pour supprimer ton user, cf screenshot plus haut :

post-775-0-22378600-1421222710_thumb.png

Je suis passé par là pour la suppression de mes users, donc sans aucun stress :P

Cordialement,

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

En fait je supprime les privilèges et non l'user, ainsi en cas de souci c'est plus rapide à recréer ;)

Mais si la migration est réussi c'est au final pareil en effet :)

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour, merci pour les infos.

Par contre en ayant un pack one, il est impossible de créer une nouvelle base pour faire l'import sur un nouveau serveur.

Du coup, que puis-je faire ?

A la limite, je peux faire l'export supprimer la base et en récréer une. Mais pas de retour arrière possible du coup.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Et voilà !

11 bases migrées (via ssh)

C'est quand même un peu de boulot hein :)

Merci d'avoir précisé pour le ssh (bien plus rapide)

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour, merci pour les infos.

Par contre en ayant un pack one, il est impossible de créer une nouvelle base pour faire l'import sur un nouveau serveur.

Du coup, que puis-je faire ?

A la limite, je peux faire l'export supprimer la base et en récréer une. Mais pas de retour arrière possible du coup.

Je vous invite à lire cela : http://blog.web4all.fr/bonne-annee-a-tous-retrospective-2014-projets-2015/ :)

Sinon effectivement la solution est de supprimer puis recréer :(

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir et meilleurs vœux à tout le monde. :)

Migrations bdd à priori réussies en créant de nouvelles bases puis en supprimant les anciennes. Transfert effectué avec MySQL dumper pour ma part.

Merci à toute l'équipe pour la disponibilité et le travail abattu régulièrement. ;)

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour à tous

j 'ai voulu profiter de mon temps libre du weekend pour migrer ma base de donnée , mais la procédure est réservée aux personnes qui ont les droits pour créer plusieurs bases

  • les packs One étant limités à 1 base de données il est impossible de migrer la base « en toute sécurité » (pas de possibilité de dupliquer les données, il faut obligatoirement exporter puis supprimer puis importer ce qui peut présenter un risque). Nous réfléchissons actuellement comment procéder pour les packs One ;

ne pourriez vous pas autoriser temporairement aux packs one la possibilité d 'ouvrir une seconde ?

merci de votre aide

Cms utilisé: Spip

Bon week end

Bruno

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant