MySQL, PhpMyadmin, Console – Les bonnes pratiques pour la migration d’une base de données MySQL
Voilà un problème éminemment concret, en temps de crise ! Faute d’argent, on est souvent contraint par les circonstances de migrer un site qui vivait tranquillement sa vie sur un serveur dédié ou sur le Cloud pour prendre un hébergement moins onéreux. Le choix se porte alors fréquemment sur un serveur mutualisé où les contraintes (espace, bande de passante, accès à la BDD…etc.) sont plus serrées. Un des problèmes si vous avez à migrer un site va être d’optimiser votre temps et d’éviter au maximum une interruption de service, forcement dommageable à la relation commerciale que vous entretenez avec votre client ! Si le site est “down” pendant une durée indéterminée, cela fait mauvais genre.
Dans cet article, on va donc voir surtout comment migrer une Base de Données MySQL sur un espace mutualisé où vos possibilités d’import de fichiers .sql
sont limités en poids. A titre d’exemple chez OVH, vous ne pouvez importer que des fichiers de 16 Mo dans les premiers offres mutualisés or en moyenne un site qui existe depuis 3 ou 4 ans peut avoir une base complète bien au-de-là de cette limite ridicule.
Un autre cas de figure, assez classique, qui vous impose cette pratique, c’est que vous ne pouvez avoir accès en console au client MySQL de ce nouvel espace d’hébergement soit parce qu’il est mutualisé soit par exemple que l’administrateur réseaux psychote grave à l’idée de vous laisser un accès au client MySQL* ! Vous n’aurez donc qu’un accès réduit à MySQL via phpMyAdmin
* Une remarque, on est jamais trop prudents toutefois donc ne pas livrer des accées root au premier venu est plutôt salutaire mais disons que certains administrateurs réseaux abusent un peu de leurs prérogatives… Que voulez-vous ? Ce sont des nerds
au dernier degré, il faut donc composer.
La marche à suivre pour “spliter” une BDD MySQL en vue d’une migration sur un hébergement mutualisé
Pour se faire, la marche à suivre la plus rapide est de passer par un environnement de développement tel que MAMP
sur MAC ou de EasyPHP
sur PC afin d’accéder via la console au client MySQL
et de réaliser une série d’import et d’export sans aucune restriction.
- Création d’une BDD MySQL vide sous votre nouvel espace d’hébergement via
PhpMyadmin
- Importation de la BDD initiale du site dans le client
MySQL
en local (MAMP ou EASYPHP) - Exportation de chaque table au format
.sql
à l’aide demysqldump
- Injection via
PhpMyadmin
de chaque table au format.sql
Création de la BDD sur l’espace mutualisé
Un PhpMyadmin sur un espace mutualisé
Votre BDD est vide, vous sélectionnez ensuite la fonction d’import pour envoyer l’ensemble de vos “petits” fichiers .sql
La limite de 16 Mo
chez OVH
Injection en local de votre ancienne BDD et “split” de celle-ci
Se connecter an local via la console au client MySQL
sous MAMP. Par défaut, le couple utilisateur:mot de passe est root:root
# Se connecter an LOCAL via la console au client MySQL /Applications/MAMP/Library/bin/mysql -u root -p |
Créer une BDD
# Créer une BDD CREATE DATABASE migratiowp1; |
Utiliser cette BDD vide nouvelle créée
# Selectionner la BDD
USE migratiowp1; |
Injecter le contenu de votre ancienne BDD
# Injecter le contenu SOURCE /Users/nom-utilsateur/Documents/chemin-vers-les-fichiers-SQL/sql_fichier/dump_sql_migratiowp1.sql; |
Pour l’exemple, nous avons décidé de migrer un blog sous WP
# Export de la TABLE wp_posts /Applications/MAMP/Library/bin/mysqldump -c -u root -p migratiowp1 wp_posts > /Users/nom-utilsateur/Documents/chemin-vers-les-fichiers-SQL/sql_fichier/wp_posts_migratiowp1.sql |
# Export de la TABLE wp_terms /Applications/MAMP/Library/bin/mysqldump -c -u root -p migratiowp1 wp_posts > /Users/nom-utilsateur/Documents/chemin-vers-les-fichiers-SQL/sql_fichier/wp_terms_migratiowp1.sql |
Conclusion : Il ne vous reste plus qu’à exporter toutes les tables les unes après les autres. Vous devriez vous retrouver avec une collection de fichiers .sql
de taille inférieure à la BDD complète et donc avoir toutes les chances de passer sous les fourches caudines de l’import sous PhpMyadmin
de votre espace mutualisé. Un conseil avant de vous livrer à l’import, certaines tables sont dépendantes entre elles donc assurez-vous de bien avoir sous les yeux le schéma relationnel de votre BDD
Pour mémoire, les mêmes commandes servent d’ailleurs au backup des BDD
# Utiliser le client mysqldump pour faire un backup de la TABLE hecube_demo_users dans la base hecube_demo /Applications/MAMP/Library/bin/mysqldump -c -u root -p hecube_demo hecube_demo_users > /Users/username/rep-1/he3_blog/datas/hecube_demo_users.mysqldump-1.SQL |
Pour mémoire, quelques commandes toujours utiles
# voir toutes les BDD SHOW DATABASES; |
# Supprimer une BDD DROP DATABASE migratiowp1; |
Pour plus d’informations, sur la gestion des BDD MySQL, vous pouvez jeter un oeil à cet article de notre blog.
- MySQL, PhpMyadmin – Administrer une base de données MySQL via la console MySQL et PhpMyadmin
http://social.hecube.net/2009/07/mysql-phpmyadmin-administrer-une-base-de-donnees-mysql-via-la-console-mysql-et-phpmyadmin/
Extrait de l’export de la table wp_posts
via la client MySQL
sous MAMP
# Utiliser le client mysqldump pour faire un backup de toutes TABLES dans une base hecube_demo /Applications/MAMP/Library/bin/mysqldump -c -u root -p hecube_demo hecube_demo_users > /Users/username/rep-1/he3_blog/datas/hecube_demo.mysqldump-FULL.SQL |
-- MySQL dump 10.13 Distrib 5.1.37, for apple-darwin8.11.1 (i386) -- -- Host: localhost Database: migratiowp1 -- ------------------------------------------------------ -- Server version 5.1.37 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `wp_posts` -- DROP TABLE IF EXISTS `wp_posts`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `wp_posts` ( `ID` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `post_author` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0', `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `post_content` longtext NOT NULL, `post_title` text NOT NULL, `post_excerpt` text NOT NULL, `post_status` VARCHAR(20) NOT NULL DEFAULT 'publish', `comment_status` VARCHAR(20) NOT NULL DEFAULT 'open', `ping_status` VARCHAR(20) NOT NULL DEFAULT 'open', `post_password` VARCHAR(20) NOT NULL DEFAULT '', `post_name` VARCHAR(200) NOT NULL DEFAULT '', `to_ping` text NOT NULL, `pinged` text NOT NULL, `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `post_content_filtered` text NOT NULL, `post_parent` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0', `guid` VARCHAR(255) NOT NULL DEFAULT '', `menu_order` INT(11) NOT NULL DEFAULT '0', `post_type` VARCHAR(20) NOT NULL DEFAULT 'post', `post_mime_type` VARCHAR(100) NOT NULL DEFAULT '', `comment_count` BIGINT(20) NOT NULL DEFAULT '0', PRIMARY KEY (`ID`), KEY `post_name` (`post_name`), KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`), KEY `post_parent` (`post_parent`), KEY `post_author` (`post_author`) ) ENGINE=MyISAM AUTO_INCREMENT=2743 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `wp_posts` -- --- les données viennent ensuite... |
En savoir plus
- phpMyAdmin, ze outil de management de BDD
http://www.phpmyadmin.net/ - OVH, ze meilleur hébergement rapport qualité-prix
http://www.ovh.com/fr/index.xml - Installer facilement PHP-MySQL sur un PC avec EasyPHP
http://social.hecube.net/2009/03/installer-facilement-php-mysql-sur-un-pc-avec-easyphp/ - Installer un environnement PHP-MySQL sur MAC
http://social.hecube.net/2009/04/installer-un-environnement-php-mysql-sur-mac/ - MAMP: Mac, Apache, MySQL, PHP sur Mac
http://www.mamp.info - EasyPHP | Install a local WAMP server : PHP 5 VC9, Apache 2 VC9, MySQL 5, PhpMyAdmin, Xdebug and Modules on Windows XP/Vista/Seven sur PC
http://www.easyphp.org/ - Quelques stencils de Graffletopia utiles pour les “wireframes” de BDD,
MySQL-schema.graffle.gstencil
,aws_icons_database.gstencil
,AWS Database.gstencil
https://www.graffletopia.com/