MySQL, PhpMyadmin, Console – Scinder des tables MySQL trop importantes, les bonnes pratiques pour la migration d’une base de données MySQL
Un petit amendement à l’article précèdent, en effet, les tables d’une base MySQL
sont parfois bien plus volumineuses que la limite d’importation via PhpMyadmin
offerte par un hébergement mutualisé. Sur OVH, on le rappelle, cette limite est souvent de 16 Mo
, c’est à dire rien du tout.
Vous pouvez donc être amené(e) à scinder (spliter) une BDD notamment des tables en un plus petit nombre de fichiers .sql
pour la même table d’une base*. On va donc voir comment à l’aide des commandes SQL
dans la console, on peut scinder une table volumineuse en plus une série de plus petits fichiers .sql
.
* par analogie macabre et de mauvais goût, totalement assumé, il est toujours plus facile de faire disparaitre un corps en petit morceaux que d’essayer d’enterrer le cadavre entier de votre forfait :):) C’est une vraie technique d’equarrissage de Base de données
On vous invite à lire le premier article sur la scission des BDD
- MySQL, PhpMyadmin, Console – Les bonnes pratiques pour la migration d’une base de données MySQL
http://social.hecube.net/2013/05/mysql-phpmyadmin-console-les-bonnes-pratiques-pour-la-migration-dune-base-de-donnees-mysql/
Commande MySQL
pour la découpe d’une table
Pour se faire, on va reprendre notre installation sous WordPress dont la table wp_posts
est très importante et enfonce largement la limite des 16 Mo offert par notre espace d’hébergement mutualisé. On va donc scinder la table wp_posts
en 4 fichiers distincts qui permettront de reconstruire la table wp_posts
dans notre nouvel espace d’hébergement mutualisé.
Bien vider la nouvelle table de votre nouvelle BDD (on dirait une recette de cuisine, c’est à peu près cela !!!)
TRUNCATE wp_posts; |
Le plus sage est de la faire carrément disparaître. Du passé faisons table rase… Nous allons la récréer ensuite au moment de l’injection du premier fichier de dump.
DROP TABLE fr_posts; |
Faire une requête de sélection limitée à une plage d’ID
Une des choses les plus importantes est bien de scinder à part égale l’ensemble des enregistrements de votre table sans en omettre aucun. Il existe deux façons en SQL
de faire ce type de requête. Le mieux est de pouvoir prendre un échantillon de rows
ou d’enregistrement à l’aide des 2 types de requête de sélection.
La clause BETWEEN
Vous allez utiliser la clause BETWEEN
pour sélectionner, les 500 premiers enregistrements puis les 500 suivants… et ainsi de suite.
# Sélectionner les 500 premiers enregistrements de la TABLE wp_posts SELECT * FROM wp_posts WHERE ID BETWEEN 0 AND 500; |
# Sélectionner les enregistrements 501 à 1000 de la TABLE wp_posts SELECT * FROM wp_posts WHERE ID BETWEEN 501 AND 1000; |
La clause LIMIT
Vous pouvez aussi utiliser la clause LIMIT
pour sélectionner, les 500 premiers enregistrements puis les 500 suivants… et ainsi de suite.
# Sélectionner les 500 premiers enregistrements de la TABLE wp_posts SELECT * FROM wp_posts ORDER BY ID ASC LIMIT 0, 500; |
# Sélectionner les enregistrements 501 à 1000 de la TABLE wp_posts SELECT * FROM wp_posts ORDER BY ID ASC LIMIT 500, 500; |
Une fois vaut requête prête, vous allez pouvoir “équarrir” la grosse table, en l’espèce la table wp_posts
d’un site WP. Voilà la marche à suivre.
- Le 1er fichier de dump va emporter les premiers enregistrements de votre table ainsi que la structure.
- Le 2ème fichier de dump va emporter uniquement les données d’enregistrement sur la plage d’ID que vous aurez choisi. On progresse sur un échantillon de 2500 enregistrements.
- Le 3ème fichier de dump va emporter uniquement les données d’enregistrement sur la plage d’ID que vous aurez choisi. On progresse sur un échantillon de 2500 enregistrements.
- Le 4ème fichier de dump va emporter uniquement les données d’enregistrement sur la plage d’ID que vous aurez choisi. On progresse sur un échantillon de 2500 enregistrements.
La structure et les 2500 premières données
# DUMP STRUCTURE AND datas part 1 /Applications/MAMP/Library/bin/mysqldump -c -u root -p --single-transaction --opt --where="ID BETWEEN 0 AND 2500" h3wdoc wp_posts > /Users/nom-de-user/Documents/le-chemin-vers-vos-datas-de-migration/wp_posts_part_1_datas_and_structure.sql |
Envoi de la première commande d’export
L’import sous phpMyadmin sur OVH
Les 2500 données suivantes plage 2, le --no-create-db --no-create-info
évite de prendre la structure.
# DUMP ONLY datas part 2 /Applications/MAMP/Library/bin/mysqldump -c -u root -p --no-create-db --no-create-info --single-transaction --opt --where="ID BETWEEN 2501 AND 5000" h3wdoc fr_posts > /Users/nom-de-user/Documents/le-chemin-vers-vos-datas-de-migration/wp_posts_part_2_datas.sql |
Les 2500 données suivantes plage 3, le --no-create-db --no-create-info
évite de prendre la structure.
# DUMP ONLY datas part 3 /Applications/MAMP/Library/bin/mysqldump -c -u root -p --no-create-db --no-create-info --single-transaction --opt --where="ID BETWEEN 5001 AND 7500" h3wdoc fr_posts > /Users/nom-de-user/Documents/le-chemin-vers-vos-datas-de-migration/wp_posts_part_3_datas.sql |
Les 2500 données suivantes plage 4, le --no-create-db --no-create-info
évite de prendre la structure.
# DUMP ONLY datas part 4 /Applications/MAMP/Library/bin/mysqldump -c -u root -p --no-create-db --no-create-info --single-transaction --opt --where="ID BETWEEN 7501 AND 10000" h3wdoc fr_posts > /Users/nom-de-user/Documents/le-chemin-vers-vos-datas-de-migration/wp_posts_part_4_datas.sql |
Une fois l’ensembles des commandes d’export passé en local dans la client MySQL
Conclusion : On se retrouve donc avec 4 fichiers .sql
de petites tailles. Il ne reste alors plus qu’à les injecter, dans l’ordre croissant pour recréer votre table volumineuse et l’affaire sera jouée.
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/