67 votes

Utiliser le contrôle de version (Git) sur une base de données MySQL

Je suis un concepteur/développeur WordPress, qui s'implique de plus en plus dans l'utilisation du contrôle de version, notamment Git, bien que j'utilise SVN pour certains projets. J'utilise actuellement Beanstalk pour mon repo distant.

Ajouter tous les fichiers WordPress à mon repo n'est pas un problème, si je le voulais je sais que je pourrais .gitignore le fichier wp-config, mais comme je suis le seul développeur, actuellement, et que ces projets sont des sources fermées, cela n'a pas vraiment de sens.

WordPress s'appuie fortement sur la base de données, comme tout CMS, pour conserver le contenu textuel et de nombreux paramètres en fonction de la configuration spécifique du plugin/thème que j'utilise. Je me demande quelle est la meilleure façon d'utiliser le contrôle de version sur la base de données, si c'est même possible. Je suppose que je pourrais faire un dump SQL, bien que mon serveur MySQL tourne sous Windows (lire : je ne sais pas comment faire), et ensuite ajouter le dump SQL à mon référentiel. Mais quand je pousse quelque chose en direct, cela pose d'énormes problèmes de sécurité.

Existe-t-il une pratique reconnue en la matière ?

0 votes

Je vide la base de données et je la vérifie dans le contrôle de version. Mais je ne pousse pas vers le serveur sur les projets Wordpress (git n'est pas toujours disponible sur un hébergement partagé). Je télécharge donc généralement manuellement via FTP, aussi mauvais que cela puisse être. Je suis curieux de connaître les bonnes pratiques en matière d'utilisation de git pour le déploiement.

0 votes

Vous pouvez également conserver la base de données dans un fichier develop et utiliser la technique aquí pour exclure la base de données de la fusion avec la base de données des master . Ensuite, il suffit de déployer à partir de master . En théorie, cela devrait fonctionner.

0 votes

J'ai fait une recherche rapide sur Google pour "Wordpress Version Control" et j'ai trouvé cette liste de plugins Wordpress : wordpress.org/extend/plugins/tags/version-control L'une d'entre elles serait-elle utile ?

23voto

Kevin A. Naudé Points 2384

Vous pouvez sauvegarder votre base de données dans un dépôt git. Bien sûr, si vous placez les données dans git sous forme binaire, vous perdrez toute la capacité de git à stocker efficacement les données en utilisant les diffs (changements). La meilleure pratique est donc la suivante : stocker les données dans un format sérialisé textuel.

mysqldump est un programme approprié pour vous aider à faire cela. Il n'est cependant pas parfait. Si quelque chose perturbe l'ordre de sérialisation des éléments (par exemple, suite à la création de nouvelles tables, etc.), des ruptures artificielles seront introduites dans le diff. ), des ruptures artificielles seront introduites dans le différentiel, ce qui diminuera l'efficacité du stockage. Vous pourriez écrire un sérialiseur personnalisé pour sérialiser uniquement les changements - mais vous feriez alors le travail difficile que git fait déjà bien. Il suffit d'utiliser le dump sql.

Ceci étant dit, ce que vous voulez faire n'est pas ce que les développeurs veulent normalement dire quand ils parlent de mettre la base de données dans git. Par exemple, si vous lisez le lien posté par @eggyal ( lien vers codinghorror ) vous verrez que ce qui est placé dans git sont les scripts nécessaires pour générer la base de données initiale. Il peut y avoir des scripts supplémentaires, comme ceux pour alimenter la base de données avec un état propre, ou pour l'alimenter avec des données de test. Tous ces scripts sont des fichiers texte, et ont à peu près le même format que le dump sql que vous obtiendriez avec mysqldump. Il n'y a donc aucune raison pour que vous ne puissiez pas procéder de la même manière avec vos données quotidiennes.

13 votes

Pour la plupart des applications d'entreprise, il suffit de placer les scripts nécessaires pour générer la base de données sous contrôle de version. Mais avec des systèmes de gestion de contenu comme WordPress, une grande partie des éléments contenus dans la base de données sont en fait du code et de la configuration, et non des données relatives à l'utilisateur final. Le code et la configuration doivent être sous contrôle de version, même s'ils sont stockés sous forme de données dans des rangées de tables SQL. WordPress ne vous facilite pas la tâche.

1 votes

@Catcall Je suis d'accord. C'est ce dont je parlais lorsque j'ai dit que certains des scripts sql scripts pourraient remplir la base de données avec un état initial propre. La stratégie décrite serait très efficace si vous vouliez déployer rapidement plusieurs sites wordpress selon un état préconfiguré, par exemple avec une configuration initiale préférée des plugins souhaités, etc.

9voto

kevin Points 1256

Il n'y a pas beaucoup de logiciels disponibles pour contrôler les versions de bases de données comme MySQL et MongoDB.

Mais l'un d'entre eux est en cours de développement et la version bêta sera bientôt lancée. A consulter Klonio - Contrôle de version pour les bases de données

6voto

abanmitra Points 61

L'article Comment synchroniser un blog WordPress local et distant en utilisant le contrôle de version donne des conseils sur la façon d'automatiser la synchronisation entre deux instances (développement, production) d'un blog WordPress en utilisant Mercurial. Il mentionne que pour ce scénario, Git et Mercurial sont très similaires.

L'étape 4 (Synchronisation des bases de données) est intéressante ici.

Le contenu de la base de données sera exporté vers un fichier qui sera suivi par le contrôle de révision. Chaque fois que nous apporterons des modifications, le contenu de la base de données sera remplacé par ce fichier, ce qui permettra à notre base de données d'être à jour.

Il traite ensuite des conflits et de la partie du travail qui consiste à rédiger des scripts.

Il existe un Tutoriel sur le contrôle de version avec Mercurial si vous ne la connaissez pas.

1voto

stPatrick Points 11

Si vous n'êtes intéressé que par les modifications de schéma sous contrôle de version, il existe un outil intéressant SqlRog . Il extrait le schéma dans les fichiers de projet qui peuvent être placés sous git.

0voto

Anonymous Points 23

Sachez que Wordpress stocke tous les contenus des fils d'actualité dans la base de données, de sorte que même si vous n'apportez aucune modification, il y aura de nombreux changements de contenu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X