Synchronisation de la base de données Wordpress entre dev et prod

16

Une question a déjà été posée sur la synchronisation des fichiers et sur la base de données entre deux installations Wordpress.

Au niveau de la base de données, la solution consiste généralement à vider une base de données et à l’insérer sur un autre serveur. Le problème avec ceci est que vous finissez par perdre toutes les modifications potentiellement apportées sur le serveur de production. Par exemple, métriques d'utilisation, commentaires, etc ...

Gardant cela à l’esprit, je commençais à me demander s’il serait possible d’étendre le Wordpress ORM afin que vous puissiez générer des deltas puis les injecter dans le site de production.

Quelqu'un a-t-il essayé, examiné ou avez-vous des idées ou des commentaires?

    
posée jonathanserafini 28.07.2011 - 16:05

3 réponses

11

En réalité, nous voulons ceci: enlace

  

Liquibase est un logiciel open source (sous licence Apache 2.0),   bibliothèque indépendante de la base de données pour le suivi, la gestion et l'application   changements de base de données. Il est construit sur un principe simple: Toutes les bases de données   les modifications sont stockées sous une forme lisible mais traçable, et vérifiées   dans le contrôle de source.

Cependant, notre processus de développement ne le prend pas en charge. En règle générale, nous ne modifions pas la base de données à l'aide de scripts discrets que nous écrivons nous-mêmes. Nous utilisons des plug-ins que nous activons. Nous n'écrivons pas de scripts DML pour modifier les données de recherche que nous archivons ensuite dans le contrôle de code source, nous utilisons une interface utilisateur sur la page d'administration et ne disposons donc pas de code source pour une utilisation ultérieure lors de la réplication de cette modification lors de la migration.

Cependant, nous pouvons en émuler une partie - en utilisant certains des outils énumérés sur cette page:

enlace

Par exemple, Liquidbase a une fonction de différenciation qui inclut également, éventuellement, les modifications des données. Nous pourrions éventuellement exporter le schéma et les données diff vers un script, en excluant (autant que possible) certaines tables susceptibles d'inclure des données de test (c'est-à-dire post, etc.), puis appliquer le script à la base de données de production.

MySQLDiff (voir la question sur StackOverflow) utilise des différences de schéma et son auteur recommande mysql_coldiff pour les différences de données table-sages - les deux sont implémentés en perl, si les outils java (liquidbase) sont trop chargés en ressources pour vos serveurs - bien que ramener les deux bases de données en local et que l’exécution de l’outil sur votre PC résolve ce problème ...

Si nous voulons vraiment bien faire les choses, nous devons enregistrer tout SQL lié à des paramètres, options ou autres modifications de configuration, ainsi que tout changement de schéma - et convertir le code enregistré en un script de migration à utiliser sur notre serveur de production. . Jouez le script de migration sur le serveur, copiez les fichiers du site wordpress (à l'exclusion des téléchargements, le cas échéant), et nous sommes dorés.

Ainsi, il me semble que le meilleur moyen de sortir est le plugin de migration du constructeur du développeur qui piège le SQL dont nous avons besoin, le stocke puis génère un script de migration à partir du code enregistré plutôt que de créer un moyen. fusionner des bases de données entre la mise en scène et la production. Semble un problème plus simple à résoudre aussi.

Si vous regardez le code du plug-in des appels de hooks pour instrumenting de @bueltge, inspirez-vous: enlace (grâce à Ron Rennick via G + pour m'avoir pointé dans la direction de SAVEQUERIES et du crochet d'arrêt qui m'a amené à le trouver)

-- alter it to get the SAVEQUERIES output instead 
-- only run while in admin 
-- filter out all selects 
-- save results out to table in the shutdown hook 
-- we could selectively toggle output trapping based on what we were doing at the moment.  

Par exemple:

Nom de capture: Activer & Configurer le plugin XYZ

Basculer l'état de capture - sur

... installer et configurer le plugin XYZ

Basculer l'état de capture - désactivé

Exporter un script de migration pour: Activer & Configurer le plugin XYZ

Appuyez sur le bouton Exporter pour créer un champ de texte contextuel contenant le code SQL capturé filtré. Idéalement, il est préformaté en tant que script shell avec l’appel en ligne de commande à mysql. Copier & collez-le dans votre dossier de code de migration et ajoutez-le à votre référentiel de code source.

Veillez à activer et à désactiver la capture en cours de travail. Vous pourrez ainsi générer le script de migration idéal pour que votre base de données de production présente une configuration équivalente à celle de votre base de données intermédiaire.

Quoi de mieux, vous aurez un script (ou une série de mêmes) que vous pouvez tester. Création d'image ayant des scripts de migration réplicables, testables, !!

Je suis déjà amoureux.

Quelqu'un d'autre?

    
réponse donnée marfarma 04.08.2011 - 21:00
3

Le synchronisation de base de données , plug-in WordPress , synchronise les données entre deux serveurs. .

Par défaut, il écrase TOUTES les données de destination. Toutefois, je viens d’apporter certaines améliorations au plug-in, qui vous permettent de ne synchroniser que des tables de base de données spécifiques. Cela peut vous aider à conserver les commentaires, les utilisateurs et autres données que vous ne voulez pas écraser. Cela vous donne-t-il la granularité dont vous avez besoin?

Je n'ai pas encore publié mes modifications au public, mais si une copie vous intéresse, envoyez-moi un courrier électronique à l'adresse simon-at-yump.com.au. Si quelqu'un trouve cela utile ou a des demandes de fonctionnalités supplémentaires, faites-le moi savoir et je verrai ce que je peux faire.

UPDATE: je viens également de trouver le WP- Sync-DB , qui correspond au plug-in commercial WP-Migrate-DB-Pro . Il fait une chose très similaire, bien qu’elle ait probablement plus de raffinement que Synchronisation de la base de données .

    
réponse donnée Simon East 19.11.2014 - 05:04
0

Il existe un service commercial relativement nouveau spécifiquement conçu pour cette tâche. Ça s'appelle RAMP:

enlace

    
réponse donnée scribu 04.08.2011 - 23:31

Lire d'autres questions sur les étiquettes