{"id":3575,"date":"2013-05-19T06:18:11","date_gmt":"2013-05-19T05:18:11","guid":{"rendered":"http:\/\/flaven.fr\/?p=3575"},"modified":"2013-05-19T06:18:11","modified_gmt":"2013-05-19T05:18:11","slug":"mysql-phpmyadmin-console-les-bonnes-pratiques-pour-la-migration-dune-base-de-donnees-mysql","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2013\/05\/mysql-phpmyadmin-console-les-bonnes-pratiques-pour-la-migration-dune-base-de-donnees-mysql\/","title":{"rendered":"MySQL, PhpMyadmin, Console &#8211; Les bonnes pratiques pour la migration d&#8217;une base de donn\u00e9es MySQL"},"content":{"rendered":"\n<p><!--  MySQL, PhpMyadmin, Console - Les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL  --><br \/>\n\t<!--  MySQL, PhpMyadmin, Console, Mac, console, base de donn\u00e9es, WordPress, .sql, dump, mysqldump, MAMP, OVH, H\u00e9bergement, mutualis\u00e9, commande, UTF-8, EasyPHP, local WAMP, server, PHP 5 VC9, Apache 2 VC9, MySQL 5, PhpMyAdmin, Xdebug, Modules, Windows, XP, Vista, Seven, PC, MAMP, Mac, Apache, MySQL, PHP, backup, Cloud --><\/p>\n<p>\tVoil\u00e0 un probl\u00e8me \u00e9minemment concret, en temps de crise ! Faute d&#8217;argent, on est souvent contraint par les circonstances de migrer un site qui vivait tranquillement sa vie sur un serveur d\u00e9di\u00e9 ou sur le Cloud pour prendre un h\u00e9bergement moins on\u00e9reux. Le choix se porte alors fr\u00e9quemment sur un serveur mutualis\u00e9 o\u00f9 les contraintes (espace, bande de passante, acc\u00e8s \u00e0 la BDD&#8230;etc.) sont plus serr\u00e9es. Un des probl\u00e8mes si vous avez \u00e0 migrer un site va \u00eatre d&#8217;optimiser votre temps et d&#8217;\u00e9viter au maximum une interruption de service, forcement dommageable \u00e0 la relation commerciale que vous entretenez avec votre client ! Si le site est &#8220;down&#8221; pendant une dur\u00e9e ind\u00e9termin\u00e9e, cela fait mauvais genre.<\/p>\n<p>Dans cet article, on va donc voir surtout comment migrer une Base de Donn\u00e9es MySQL sur un espace mutualis\u00e9 o\u00f9 vos possibilit\u00e9s d&#8217;import de fichiers <code>.sql<\/code> sont limit\u00e9s en poids. A titre d&#8217;exemple chez OVH, vous ne pouvez importer que des fichiers de 16 Mo dans les premiers offres mutualis\u00e9s or en moyenne un site qui existe depuis 3 ou 4 ans peut avoir une base compl\u00e8te bien au-de-l\u00e0 de cette limite ridicule.<\/p>\n<p>Un autre cas de figure, assez classique, qui vous impose cette pratique, c&#8217;est que vous ne pouvez avoir acc\u00e8s en console au client MySQL de ce nouvel espace d&#8217;h\u00e9bergement soit parce qu&#8217;il est mutualis\u00e9 soit par exemple que l&#8217;administrateur r\u00e9seaux psychote grave \u00e0 l&#8217;id\u00e9e de vous laisser un acc\u00e8s au client MySQL* ! Vous n&#8217;aurez donc qu&#8217;un acc\u00e8s r\u00e9duit \u00e0 MySQL via phpMyAdmin<\/p>\n<p>\t<em>* Une remarque, on est jamais trop prudents toutefois donc ne pas livrer des acc\u00e9es root au premier venu est plut\u00f4t salutaire mais disons que certains administrateurs r\u00e9seaux abusent un peu de leurs pr\u00e9rogatives&#8230; Que voulez-vous ? Ce sont des <code>nerds<\/code> au dernier degr\u00e9, il faut donc composer.<\/em><\/p>\n<h4>La marche \u00e0 suivre pour &#8220;spliter&#8221; une BDD MySQL en vue d&#8217;une migration sur un h\u00e9bergement mutualis\u00e9<\/h4>\n<p>\t<b>Pour se faire, la marche \u00e0 suivre la plus rapide est de passer par un environnement de d\u00e9veloppement tel que <code>MAMP<\/code> sur MAC ou de <code>EasyPHP<\/code> sur PC<\/b> afin d&#8217;acc\u00e9der via la console au client <code>MySQL<\/code> et de r\u00e9aliser une s\u00e9rie d&#8217;import et d&#8217;export sans aucune restriction.<\/p>\n<ol>\n<li>Cr\u00e9ation d&#8217;une BDD MySQL vide sous votre nouvel espace d&#8217;h\u00e9bergement via <code>PhpMyadmin<\/code><\/li>\n<li>Importation de la BDD initiale du site dans le client <code>MySQL<\/code> en local (MAMP ou EASYPHP)<\/li>\n<li>Exportation de chaque table au format <code>.sql<\/code> \u00e0 l&#8217;aide de <code>mysqldump<\/code><\/li>\n<li>Injection via <code>PhpMyadmin<\/code> de chaque table au format <code>.sql<\/code><\/li>\n<\/ol>\n<h4>Cr\u00e9ation de la BDD sur l&#8217;espace mutualis\u00e9<\/h4>\n<p>\t<b>Un PhpMyadmin sur un espace mutualis\u00e9<\/b><br \/>\n\t<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_ovh_1.jpg\" alt=\"MySQL, PhpMyadmin, Console - Les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL\" width=\"500\" height=\"313\" \/><\/p>\n<p>\t<b>Votre BDD est vide, vous s\u00e9lectionnez ensuite la fonction d&#8217;import pour envoyer l&#8217;ensemble de vos &#8220;petits&#8221; fichiers <code>.sql<\/code><\/b><br \/>\n\t<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_ovh_empty_2.jpg\" alt=\"MySQL, PhpMyadmin, Console - Les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL\" width=\"500\" height=\"313\" \/><\/p>\n<p>\t<b>La limite de <code>16 Mo<\/code> chez OVH<\/b><br \/>\n\t<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_ovh_3_detail.jpg\" alt=\"MySQL, PhpMyadmin, Console - Les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL\" width=\"500\" height=\"313\" \/><\/p>\n<h4>Injection en local de votre ancienne BDD et &#8220;split&#8221; de celle-ci<\/h4>\n<p><b>Se connecter an local via la console au client <code>MySQL<\/code> sous MAMP. Par d\u00e9faut, le couple utilisateur:mot de passe est <code>root:root<\/code><\/b><\/p>\n<pre lang=\"sql\">\n\t# Se connecter an local via la console au client MySQL\n\t\/Applications\/MAMP\/Library\/bin\/mysql -u root -p\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_console_5.jpg\" alt=\"MySQL, PhpMyadmin, Console - Les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL\" width=\"500\" height=\"313\" \/><\/p>\n<p><b>Cr\u00e9er une BDD<\/b><\/p>\n<pre lang=\"sql\">\n\t# Cr\u00e9er une BDD\n\tCREATE DATABASE migratiowp1;\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_console_6.jpg\" alt=\"MySQL, PhpMyadmin, Console - Les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL\" width=\"500\" height=\"313\" \/><\/p>\n<p><b>Utiliser cette BDD vide nouvelle cr\u00e9\u00e9e<\/b><\/p>\n<pre lang=\"sql\">\n\t# Selectionner la BDD\n\tUSE migratiowp1;\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_console_7.jpg\" alt=\"MySQL, PhpMyadmin, Console - Les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL\" width=\"500\" height=\"313\" \/><\/p>\n<p><b>Injecter le contenu de votre ancienne BDD<\/b><\/p>\n<pre lang=\"sql\">\n\t# Injecter le contenu\n\tSOURCE \/Users\/nom-utilsateur\/Documents\/chemin-vers-les-fichiers-sql\/sql_fichier\/dump_sql_migratiowp1.sql;\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_console_8.jpg\" alt=\"MySQL, PhpMyadmin, Console - Les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL\" width=\"500\" height=\"313\" \/><\/p>\n<p><b>Pour l&#8217;exemple, nous avons d\u00e9cid\u00e9 de migrer un blog sous WP<\/b><\/p>\n<pre lang=\"sql\">\n# Export de la table wp_posts\n\/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\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_console_9.jpg\" alt=\"MySQL, PhpMyadmin, Console - Les bonnes pratiques pour la migration d'une base de donn\u00e9es MySQL\" width=\"500\" height=\"313\" \/><\/p>\n<pre lang=\"sql\">\n# Export de la table wp_terms\n\/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\n<\/pre>\n<p>\t<b>Conclusion : Il ne vous reste plus qu&#8217;\u00e0 exporter toutes les tables les unes apr\u00e8s les autres. Vous devriez vous retrouver avec une collection de fichiers <code>.sql<\/code> de taille inf\u00e9rieure \u00e0 la BDD compl\u00e8te et donc avoir toutes les chances de passer sous les fourches caudines de l&#8217;import sous <code>PhpMyadmin<\/code> de votre espace mutualis\u00e9. Un conseil avant de vous livrer \u00e0 l&#8217;import, certaines tables sont d\u00e9pendantes entre elles donc assurez-vous de bien avoir sous les yeux le sch\u00e9ma relationnel de votre BDD<\/b><\/p>\n<p><b>Pour m\u00e9moire, les m\u00eames commandes servent d&#8217;ailleurs au backup des BDD<\/b><\/p>\n<pre lang=\"sql\">\n\t# Utiliser le client mysqldump pour faire un backup de la TABLE hecube_demo_users dans la base hecube_demo\n\t\/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\n<\/pre>\n<p><b>Pour m\u00e9moire, quelques commandes toujours utiles<\/b><\/p>\n<pre lang=\"sql\">\n\t\t# voir toutes les BDD\n\t\tSHOW DATABASES;\n<\/pre>\n<pre lang=\"sql\">\n\t# Supprimer une BDD\n\tDROP DATABASE migratiowp1;\n<\/pre>\n<p>Pour plus d&#8217;informations, sur la gestion des BDD MySQL, vous pouvez jeter un oeil \u00e0 cet article de notre blog.<\/p>\n<ul>\n<li>MySQL, PhpMyadmin \u2013 Administrer une base de donn\u00e9es MySQL via la console MySQL et PhpMyadmin<br \/><a href=\"http:\/\/social.hecube.net\/2009\/07\/mysql-phpmyadmin-administrer-une-base-de-donnees-mysql-via-la-console-mysql-et-phpmyadmin\/\" target=\"_blank\">http:\/\/social.hecube.net\/2009\/07\/mysql-phpmyadmin-administrer-une-base-de-donnees-mysql-via-la-console-mysql-et-phpmyadmin\/<\/a><\/li>\n<\/ul>\n<p><b>Extrait de l&#8217;export de la table <code>wp_posts<\/code> via la client <code>MySQL<\/code> sous <code>MAMP<\/code><\/b><\/p>\n<pre lang=\"sql\">\n\t# Utiliser le client mysqldump pour faire un backup de toutes TABLES dans une base hecube_demo\n\t\/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\n<\/pre>\n<pre lang=\"sql\">\n\t\t-- MySQL dump 10.13  Distrib 5.1.37, for apple-darwin8.11.1 (i386)\n\t\t--\n\t\t-- Host: localhost    Database: migratiowp1\n\t\t-- ------------------------------------------------------\n\t\t-- Server version\t5.1.37\n\n\t\t\/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT *\/;\n\t\t\/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS *\/;\n\t\t\/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION *\/;\n\t\t\/*!40101 SET NAMES utf8 *\/;\n\t\t\/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE *\/;\n\t\t\/*!40103 SET TIME_ZONE='+00:00' *\/;\n\t\t\/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 *\/;\n\t\t\/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 *\/;\n\t\t\/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' *\/;\n\t\t\/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 *\/;\n\n\t\t--\n\t\t-- Table structure for table `wp_posts`\n\t\t--\n\n\t\tDROP TABLE IF EXISTS `wp_posts`;\n\t\t\/*!40101 SET @saved_cs_client     = @@character_set_client *\/;\n\t\t\/*!40101 SET character_set_client = utf8 *\/;\n\t\tCREATE TABLE `wp_posts` (\n\t\t  `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,\n\t\t  `post_author` bigint(20) unsigned NOT NULL DEFAULT '0',\n\t\t  `post_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t  `post_date_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t  `post_content` longtext NOT NULL,\n\t\t  `post_title` text NOT NULL,\n\t\t  `post_excerpt` text NOT NULL,\n\t\t  `post_status` varchar(20) NOT NULL DEFAULT 'publish',\n\t\t  `comment_status` varchar(20) NOT NULL DEFAULT 'open',\n\t\t  `ping_status` varchar(20) NOT NULL DEFAULT 'open',\n\t\t  `post_password` varchar(20) NOT NULL DEFAULT '',\n\t\t  `post_name` varchar(200) NOT NULL DEFAULT '',\n\t\t  `to_ping` text NOT NULL,\n\t\t  `pinged` text NOT NULL,\n\t\t  `post_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t  `post_modified_gmt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',\n\t\t  `post_content_filtered` text NOT NULL,\n\t\t  `post_parent` bigint(20) unsigned NOT NULL DEFAULT '0',\n\t\t  `guid` varchar(255) NOT NULL DEFAULT '',\n\t\t  `menu_order` int(11) NOT NULL DEFAULT '0',\n\t\t  `post_type` varchar(20) NOT NULL DEFAULT 'post',\n\t\t  `post_mime_type` varchar(100) NOT NULL DEFAULT '',\n\t\t  `comment_count` bigint(20) NOT NULL DEFAULT '0',\n\t\t  PRIMARY KEY (`ID`),\n\t\t  KEY `post_name` (`post_name`),\n\t\t  KEY `type_status_date` (`post_type`,`post_status`,`post_date`,`ID`),\n\t\t  KEY `post_parent` (`post_parent`),\n\t\t  KEY `post_author` (`post_author`)\n\t\t) ENGINE=MyISAM AUTO_INCREMENT=2743 DEFAULT CHARSET=utf8;\n\t\t\/*!40101 SET character_set_client = @saved_cs_client *\/;\n\n\t\t--\n\t\t-- Dumping data for table `wp_posts`\n\t\t--\n\t\t\n\t\t--- les donn\u00e9es viennent ensuite...\n\t\t\n\t<\/pre>\n<h2>En savoir plus<\/h2>\n<ul>\n<li>phpMyAdmin, ze outil de management de BDD<br \/><a href=\"http:\/\/www.phpmyadmin.net\/\" target=\"_blank\">http:\/\/www.phpmyadmin.net\/<\/a><\/li>\n<li>OVH, ze meilleur h\u00e9bergement rapport qualit\u00e9-prix<br \/><a href=\"http:\/\/www.ovh.com\/fr\/index.xml\" target=\"_blank\">http:\/\/www.ovh.com\/fr\/index.xml<\/a><\/li>\n<li>Installer facilement PHP-MySQL sur un PC avec EasyPHP<br \/><a href=\"http:\/\/social.hecube.net\/2009\/03\/installer-facilement-php-mysql-sur-un-pc-avec-easyphp\/\" target=\"_blank\">http:\/\/social.hecube.net\/2009\/03\/installer-facilement-php-mysql-sur-un-pc-avec-easyphp\/<\/a><\/li>\n<li>Installer un environnement PHP-MySQL sur MAC<br \/><a href=\"http:\/\/social.hecube.net\/2009\/04\/installer-un-environnement-php-mysql-sur-mac\/\" target=\"_blank\">http:\/\/social.hecube.net\/2009\/04\/installer-un-environnement-php-mysql-sur-mac\/<\/a><\/li>\n<li>MAMP: Mac, Apache, MySQL, PHP sur Mac<br \/><a href=\"http:\/\/www.mamp.info\" target=\"_blank\">http:\/\/www.mamp.info<\/a><\/li>\n<li>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<br \/><a href=\"http:\/\/www.easyphp.org\/\" target=\"_blank\">http:\/\/www.easyphp.org\/<\/a><\/li>\n<li>Quelques stencils de Graffletopia utiles pour les &#8220;wireframes&#8221; de BDD, <code>MySQL-schema.graffle.gstencil<\/code>, <code>aws_icons_database.gstencil<\/code>, <code>AWS Database.gstencil<\/code><br \/><a href=\"hhttps:\/\/www.graffletopia.com\/\" target=\"_blank\">https:\/\/www.graffletopia.com\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Voil\u00e0 un probl\u00e8me \u00e9minemment concret, en temps de crise ! Faute d&#8217;argent, on est souvent contraint par les circonstances de migrer un site qui vivait&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2013\/05\/mysql-phpmyadmin-console-les-bonnes-pratiques-pour-la-migration-dune-base-de-donnees-mysql\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">MySQL, PhpMyadmin, Console &#8211; Les bonnes pratiques pour la migration d&#8217;une base de donn\u00e9es MySQL<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9365,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"MySQL, PhpMyAdmin, Console: optimisez la migration de bases de donn\u00e9es MySQL. \u00c9vitez les interruptions de service avec des outils et des pratiques sp\u00e9cifiques.","bf_ai_og_title":"Migration MySQL: bonnes pratiques","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3440,3454,3444,3447,3448,3449,3435,3452],"tags":[],"class_list":["post-3575","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-infrastructure","category-journalism-writing","category-programming-databases","category-technology-trends","category-tools-productivity","category-tutorials-how-to","category-web-development","category-wordpress-cms"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-VF","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2013\/05\/using_split_sql_bdd_b_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/3575","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=3575"}],"version-history":[{"count":0,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/3575\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/9365"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=3575"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=3575"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=3575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}