Synchronisation de la base de données entre le développement / la mise en scène et la production
-
-
http://wp.tutsplus.com/tutorials/how-to-sync-a-local-remote-wordpress-blog-using-version-control/http://wp.tutsplus.com/tutorials/how-to-sync-a-local-remote-wordpress-blog-using-version-control/
- 0
- 2012-01-27
- agileapricot
-
Essayez ceplugin http://wordpress.org/extend/plugins/duplicator/Try this plugin http://wordpress.org/extend/plugins/duplicator/
- 0
- 2012-08-04
- Gopal Bhattacharjee
-
4 réponses
- votes
-
- 2010-09-23
Il y apeut-être unemeilleurefaçon deme manquermaisje vais vous donner 2 options:
1.Utilisez l'exportation XMLpourexporter vosnouveauxmessageset commentaires. Ensuite,utilisez l 'importateur WordPress pour réimporter lesnouveaux articleset commentaires dans labase de données de développement
Ilestpréférable d'importer dans le développement,puis de déplacer labase de donnéesen production,car lorsque vousimportez,elletéléchargeratous lesnouveauxfichiersmultimédias de laproduction.
Entre-temps,laproduction a changé (nouveaux articles,nouveaux commentaires,etc.)
Cela résoudrait votreproblème d'intégration detout contenumodifié.
2. Utilisez la commande INSERT IGNORE INTO MySqlpour ajouter lesnouvellestables de dev. ou la commande REPLACE pour écraser les lignesen double dans lamêmetable.
Avant d'utiliser MySql,effectuez une sauvegarde des deuxbases de donnéeset déplacez labase de donnéesgz vers le serveur deproductionet téléchargez le vidage (changez lenom de dev si c'est lemême que celui deproduction.
INSERT IGNORE INTO `_wp_production_db`.`wp_cool_plugin_options` SELECT * FROM `_wp_dev_db`.`wp_cool_plugin_options`
Jene suispas à l'aise avec les commandes MySql doncj'opteraispour l'option 1.
There may be a better way that I am missing but I am going to give you 2 options:
1.Use XML Export to export your new posts and comments. Then use the WordPress Importer to import the new posts and comments back into the dev database
It's best to import into dev then move the database over to production because when you import it will download all the new media files from production.
In the meantime production has changed(new posts, new comments, etc.)
This would solve your problem of bringing in any changed content.
2. Use the INSERT IGNORE INTO MySql command to add the new tables from dev. or the REPLACE command to overwrite duplicate rows in the same table.
Before using MySql make a backup of both databases and move the gz database to the production server and upload the dump (change the name of dev if it's the same as production.
INSERT IGNORE INTO `_wp_production_db`.`wp_cool_plugin_options` SELECT * FROM `_wp_dev_db`.`wp_cool_plugin_options`
I'm not comfortable with MySql commands so I would go with option 1.
-
remarquez que l'exportation XML sebloque quelquepart avec lenombre demessages,parexemplesurmonblog +10.000 articlesje nepeuxpas l'utiliser.notice the XML export stalls somewhere with the amount of posts e.g. on my blog +10.000 posts I can not use it.
- 0
- 2010-11-14
- edelwater
-
@edelwater,oui cela dépend desparamètres du serveurpourmax_execution_time (généralement 30 secondes),pour lestrèsgrossesexportations,cette valeur doit être définieplus haut (1-2minutes ouplus)@edelwater, yes this depends on the server settings for max_execution_time (usually 30 seconds), for very big exports this value has to be set higher (1-2 minutes or more)
- 0
- 2011-07-28
- mike23
-
- 2010-09-22
S'il s'agit simplement dumêmetype de données (nouveaux articles deblog,nouveaux commentaires),je ne saispaspourquoi vous devez vraiment les synchroniser.Cen'estpas comme si cela changerait lafaçon dont le code sur le sitefonctionne car c'estjustepluspareil.Jene m'en souciegénéralementpas,sauf s'il s'agit d'unnouveautype de données.
Jem'assuretoujours de disposer d'unbon échantillon des données du site,pastous les articles,pages,commentaires du siteen direct.
If it's just more of the exact same type of data (some new blog posts, new comments) I'm not sure why you need to sync it really. It's not like it will change the way the code on the site works since it's just more of the same. I typically don't worry about it unless it's a new type of data.
I just always make sure I have a good sample of the data for the site no every post, page, comment from the live site.
-
Bonpoint!Cependant,si laproduction a des changements dans la zone de contenupurement (publications,commentaires)et que le développeur a des changements dans lesparamètreset la configuration (parexemple,ajouté 5pluginset peaufiné leursparamètres),comment reporteriez-vous ces changements deparamètres sans vraimentfaire letravail deuxfois (untemps sur le développementet un sur laproduction)?Good point! However if production has some changes in purely content area(posts, comments) and dev has changes in say settings and setup(for instance added 5 plugins and tweaked their settings) how would you carry over those settings changes without really doing work twice(one time on dev and one on production)?
- 2
- 2010-09-22
- Alex
-
c'est la vraie questionn'est-cepaset jen'aipas de réponsepour cela.that is the real question isn't it and I don't have an answer for it.
- 0
- 2010-09-22
- curtismchale
-
-1.Parfois,nous devons les synchroniser.Spécialementpour lepost/pages `id` de labase de données.-1. Sometimes we do need to have them in sync. Specially for the post/pages `id` from the database.
- 0
- 2014-07-21
- Francisco Corrales Morales
-
- 2010-11-14
Dès que voustouchez au sujet defaire des changementsen parallèle,voustouchez la zone degestion de la configuration. Avecbeaucoup demodèles,depropres communautés (http://www.cmcrossroads.com/)et des outilsnonpastantpour lagestion de version (comme svn/git) quepour le support de lagestion de configuration (modèles) comme clearcase. (zonestotalement différentes).
Dans ce cas,c'estencore une situation simpleet voustrouverez que celafonctionne avec quelques limitationset quelquestravauxmanuelset quelques listes.
Le scénario auquelje pensepour le rendreplus descriptif de la solutionidéale:plusieurs développeurstravaillant sur lamêmebase de code,plusieursenvironnements detest,plusieursenvironnements d'acceptation,plusieursenvironnements d'acceptation deproduction éventuellement danstous les coins dumonde.
Si vous souhaitezfaire unpeuplusprofessionnel:
a) écrivez une liste detous les éléments de configuration que vous rencontrez,celapourrait être le code WordPress lui-même,despluginsexternes,du contenu,desmétadonnéeset décidez lesquels de ceux-ci que vous souhaitez apporter sous une sorte de "gestion",qui ceux qui comptent.
b) décrire lesflux detravail quipeuvent seproduire,parexemple que sepasse-t-il avec un correctif,que sepasse-t-il avec quelque chose denouveauen cours de développement,dans quel cas changez-vous le contenu de votre côté,comment cela s'appelle-t-ilet qui lefait,quien est lepropriétaire,parexemple unnouveaumessage ou unnouveauplugin.
c)pour letravailen parallèle,décrivez d'abord les CI que vous voulezgérer,décidez si leflux vatoujours du développement à laproduction ou s'ilest vraimentnécessaire detoutfaire de deuxmanières.
d)pour chacun destypes de CI sous (a) écrire une résolution. Parexemple.pour TOUT ce quiest dutexte (ou dutexteexporté comme lesfichiersphpmais AUSSI dutextebrut dans lesfichiers XML) lafusionestpossible. Cen'est vraimentpas unproblèmemais vous avezbesoin d'unbon outil defusion. parexemple. Avec ClearCase,vous obtiendrez de 3manières unefusion des situations suivantes: 1)fusionstriviales:il lesfera automatiquement 2) automatiquenontrivial:il lesfera automatiquement MAIS vous devez le vérifier 3)nontrivialnon automatique: c'est un conflitparex. sur 1 ligne,plusieursmodifications ont été apportées. Lesnontriviaux sont lapartieminimale dont vous devez vous occupermanuellement,unbon outil defusion vousguidera dans ce domaine,parexemple. celui de clearcase (quifait également lafusion demotset où vouspouvez créer des liens dans d'autresfusions commerciales ounon commercialespour destypes defichiers spécifiques). Deplus,si vous avezidentifié sous (a) desfichiers qui devraient être copiés uniquement,leur comportement serait dene pas êtrefusionnésmais simplement d'être copiés dans un sensen écrasant l'autre version sansfusion (parexemple lesplugins que vousn'avezpasmodifiés). Beaucoup de cestypes sontpossibles avec différents comportements. Maisnotez les relationsentre les CI,
Ensuite,pour lesfusionsnontextuelles,vous devezprendre une décision sur lafaçon de lesgérer,parexemple.images qui ont étémodifiées à 2endroits. Vouspouvez déciderici que laproduction atoujours lapréférence (dumoins c'est ce queje pense),ce qui rend les choses simples.
Donc ...pour résoudre ceproblème,vous avezbesoin d'un outil degestion de versionprenanten charge différentsflux. Chaqueflux représenterait unepartie. (celapeut êtreextrêmement complexeen fonction de vosbesoinsmais dans ce cas,je pense que c'esttrès simple).
Si vouspouvezmaintenant réussir à avoir cesflux sous vosinstallations WordPresset les synchroniser également avec le contenu de labase de données,etc ... alors vouspouvezeffectuer lesfusions dans l'outil CM/versionnage,puis lesexporter denouveau dans le autreenvironnement.
Lefaitest que ... vous devez d'abordnoter ceci. Cen'estpas un hacktechnique. C'est unmodèlepar défaut autour de Config Management donc rien d'étrangeici aussi,mais vous devez l'écrire. Vouspourrieztrouverparexemple qu'unplugininstallé apporte desmodifications dans labase de données avec certaines données qui sont différentes dans un autreenvironnement,vous devez donc avoir uneprocédure supplémentaire autour de cela.
Techniquementpresquetoujours,toutestpossible,consultez http://www.cmcrossroads.com/forums les scénarios qui sont des dizaines ou des centaines defoisplus complexestouten utilisanttoujours lamême approcheet en utilisant lemêmeensemble demodèles CM.
en bref:placez une couche degestion de versionen dessous,automatisez lesfusionset gérez les conflits,puisimportez dans l'environnement cible. Pensez à une stratégie deflux qui convienticiet écrivez-la. Effectuez unegestion CMminuscule. Ce serait la solutionprofessionnelle sinoninstallez un hack de copie debase de données,des scripts,etc.
As soon as you touch the topic of doing changes in parallel you touch the area of configuration management. With lots of patterns, own communities (http://www.cmcrossroads.com/) and tools not so much for version management (as svn/git) but for support of configuration management (patterns) like clearcase. (totally different areas).
In this case it is still a simple situation and you will find it to work with some limitations and some manual work and some lists.
The scenario I am thinking of to make it more descriptive of the ideal solution: multiple developers working on the same codebase, multiple test environments, multiple acceptance environments, multiple production acceptance environments possibly in all corners of the world.
If you would want to do this a little bit more professional:
a) write down a list of all Configuration Items you encounter, this could be the WordPress code itself, plugins from externals, content, metadata and decide which ones of these you want to bring under some kind of "management", which ones matter.
b) describe the workflows that can happen e.g. what happens with a fix, what happens with something new being development, in what case do you change content on your side, what is that called, and who does it, who is the owner of it e.g. a new post or a new plugin.
c) for parallel working first describe which CI's you want to manage, decide if the flow is always from development to production or if it is really needed to do all of it two ways.
d) for each of the CI types under (a) write a resolution. E.g. for ALL that is text ( or exported text like php files but ALSO plain text in XML files) merging is possible. This is really no problem but you need a good merge tool. e.g. With ClearCase you would get in a 3 way merge the following situations: 1) trivial merges: it will do these automatically 2) non trivial automatic: it will do these automatically BUT you need to check it 3) non trivial non automatic: this is a conflict e.g. on 1 line several changes have been made. The non trivials are the minimal part that you need to care of manually, a good merging tool will lead you in this e.g. the one in clearcase (which also does word merging and where you can link in other commercial or non commercial mergers for specific file types). Furtermore if you have identified under (a) files that should be copied-only then their behaviour would be to not be merged but just be copied one way overwriting the other version without a merge (e.g. plugins that you have not modified). Many of these types are possible with different behaviours. But write down relations between CI's,
Then for the non text based merges you need to make a decision on how to handle them e.g. images that have been changed in 2 places. You could decide here that production always has preference (at least that is what i would think), which makes it simple.
So... to solve this problem you need a version management tool that support different streams. Each stream would represents one part. (this can be immensely complex depending on your needs but in this case I think it is very simple).
If you now can manage to have these streams under you WordPress installations and sync them also with the content of the database, etc... then you can perform the merges in the CM / versioning tool and then export it back in the other environment.
Thing is... you need to write this down first. This is not a technical hack. It is a default pattern around Config Management so nothing strange here also but you need to write it down. You might find e.g. that an installed plugin makes changes in the database with some data that is different in another environment, so you need to have an extra procedure around this.
Technically almost always everything is possible check http://www.cmcrossroads.com/forums for scenario's that are dozens or hundreds of times more complex though always using the same approach and using the same set of CM patterns.
in short: put a version management layer under it, automate the merges and handle the conflicts, then import in target environment. Think up a stream strategy that fits here and write it down. Perform a teeny weeny bit CM management. That would be the professional solution otherwise install some db copy hack, scripts etc...
-
- 2012-01-05
Je viens depublier un article sur lafaçon dontje synchronise les données deproduction avecnotremiseen scène,consultezmon article deblog à ce sujet à: http://blog.wp.weightpoint.se/2012/01/04/synchronizing-wordpress-multisite-base de données de l'environnement deproduction à l'environnement depréparation/
Si vous souhaitez également synchroniser le codeet d'autres éléments,je vous recommande de créer un référentielgit oumercurial avec lefichierignore correspondant.
Si vous souhaitezeffectuer desmises àjour différentiellespourproduire àpartir de lapréparation,alorsje suppose que la création de scripts demigrationest lemoyen leplus sûret lemeilleur.
I just made a post about how i synchronize out production data to our staging, check out my blog post about it at: http://blog.wp.weightpoint.se/2012/01/04/synchronizing-wordpress-multisite-database-from-production-to-staging-enviorment/
If you want to synchronize the code and other stuff too, i would recommend creating a git or mercurial repository with the relevant ignore file.
If you want to make differential updates to prod from staging, then i guess creating migration scripts is the safest and best way.
J'ai unproblème avec la synchronisation de labase de données WordPressentre le développementet laproductionet jeme demande comment d'autrespersonnes le résolvent.J'ai connaissance de cette question maisne couvrepas vraiment le cas d'utilisation leplusméchantet leplus réaliste.
Disons quej'ai un site Web WordPressen direct.J'aipris un dump detout,le répliquant surnotreenvironnement de développement.J'ai commencé àfaire des changements.1 semaineplustard,je suisprêt à déployermesmises àjour.Entre-temps,labase de données du site deproduction a changé (nouveaux articles,nouveaux commentaires,etc.).Comment synchroniser les changementsentre laproductionet le développementpendant le déploiementet est-ilpossible d'automatiser (unpeu aumoins) ceprocessus?