it-swarm.dev

Synchronizace databáze mezi dev/staging a produkcí

Mám problém se synchronizací databáze WordPress mezi vývojem a výrobou a přemýšlím, jak to ostatní lidé řeší. Jsem si vědom této otázky ale ve skutečnosti se nejedná o pouštější a realističtější případ použití.

Řekni, že mám živou webovou stránku WordPress. Vybrala jsem si všechno, replikovat to na našem dev prostředí. Začala jsem dělat změny. O 1 týden později jsem připraven nasadit své aktualizace. Mezitím se změnila databáze na místě výroby (nové příspěvky, nové komentáře atd.). Jak mohu synchronizovat změny mezi výrobou a vývojem během zavádění a je možné tento proces automatizovat (alespoň alespoň)?

34
Alex

Může být lepší způsob, jak mi chybí, ale dám vám dvě možnosti:

1. Použijte XML Export pro export vašich nových příspěvků a komentářů. Poté použijte WordPress dovozce pro import nových příspěvků a komentářů zpět do databáze dev

Nejlepší je importovat do dev pak přesunout databázi do výroby, protože při importu budou staženy všechny nové mediální soubory z výroby.

Mezitím se výroba změnila (nové příspěvky, nové komentáře atd.)

To by vyřešilo váš problém vnášení nějakého změněného obsahu.

2. Pomocí příkazu INSERT IGNORE INTO MySql přidejte nové tabulky z dev. nebo příkaz NAHRADIT přepsat duplicitní řádky ve stejné tabulce.

Před použitím MySql vytvořte zálohu obou databází a přesuňte databázi gz na produkční server a nahrajte výpis (změňte název dev, pokud je stejný jako produkce.

INSERT IGNORE INTO `_wp_production_db`.`wp_cool_plugin_options`
SELECT *
FROM `_wp_dev_db`.`wp_cool_plugin_options`

Nejsem spokojen s MySql příkazy, takže bych šel s možností 1.

9
Chris_O

Pokud je to jen více z přesně stejného typu dat (některé nové příspěvky na blogu, nové komentáře), nejsem si jistý, proč je třeba synchronizaci opravdu provést. Není to tak, že by to změnilo způsob, jakým kód na stránkách funguje, protože je to jen stejné. Obvykle se o to nestarám, pokud se nejedná o nový typ dat.

Vždycky jsem se vždycky ujistil, že mám dobrý vzorek dat pro stránky, ne každý příspěvek, stránku, komentář z živého webu.

2
curtismchale

Právě jsem udělal příspěvek o tom, jak synchronizovat výrobní data s našimi inscenacemi, podívejte se na můj blog o tom na: http://blog.wp.weightpoint.se/2012/01/04/synchronizing-wordpress-multisite -databáze-z-produkce-inscenace-prostředí/

Pokud chcete kód a další věci synchronizovat, doporučuji vytvořit úložiště git nebo Mercurial s příslušným souborem ignorování.

Pokud chcete provést diferenciální aktualizace prod z inscenací, pak myslím, že vytváření migračních skriptů je nejbezpečnější a nejlepší způsob.

1
Niklas

Jakmile se dotknete tématu provádění změn, dotknete se oblasti správy konfigurace. Se spoustou vzorů, vlastními komunitami (http://www.cmcrossroads.com/) a nástroji ne tak moc pro správu verzí (jako svn/git), ale pro podporu správy konfigurace (vzorů), jako je například clearcase. (zcela jiné oblasti).

V tomto případě je to stále jednoduchá situace a najdete ji v práci s určitými omezeními a některými manuálními pracemi a některými seznamy.

Scénář, o kterém přemýšlím, aby byl více popisný pro ideální řešení: více vývojářů pracujících na stejné databázi, více testovacích prostředích, prostředí pro více akceptací, více produkčních akceptačních prostředí ve všech koutech světa.

Pokud byste to chtěli udělat o něco profesionálnější:

a) zapište si seznam všech konfiguračních položek, se kterými se setkáváte, mohlo by to být samotný kód WordPressu, pluginy z externích zdrojů, obsah, metadata a rozhodnout, které z nich chcete pod nějakým „řízením“, které je důležité.

b) popsat pracovní postupy, které mohou nastat např. co se stane s opravou, co se stane s něčím novým, v kterém případě změníte obsah na vaší straně, co je to nazýváno a kdo to udělá, kdo je jeho vlastníkem, např. nový příspěvek nebo nový plugin.

c) pro paralelní práci nejprve popište, které CI chcete spravovat, rozhodněte se, zda je tok vždy z vývoje do výroby, nebo zda je to skutečně nutné udělat dvěma způsoby.

d) pro každý z typů CI podle písmene a) napište usnesení. Např. pro ALL, který je text (nebo exportovaný text jako php soubory, ale ALSO prostý text v XML souborech) je možné sloučení. To je opravdu žádný problém, ale potřebujete dobrý nástroj pro sloučení. např. S ClearCase byste se dostali do 3 způsobů sloučení následujících situací: 1) triviální sloučení: to bude dělat tyto automaticky 2) netriviální automatické: to bude dělat tyto automaticky, ale musíte zkontrolovat 3) netriviální non automatické: to je konfliktu např na jednom řádku bylo provedeno několik změn. Non trivials jsou minimální část, kterou potřebujete k péči o ručně, dobrý nástroj pro sloučení vás povede v tomto např. jeden v clearcase (který také Word slučuje a kde vy můžete odkazovat v jiných komerčních nebo non-komerční fúze pro specifické typy souborů). Pokud byste navíc identifikovali (a) pouze soubory, které by měly být kopírovány, pak by jejich chování nemělo být sloučeno, ale mělo by být zkopírováno pouze jedním způsobem přepsáním jiné verze bez sloučení (např. Zásuvných modulů, které jste nezměnili). Mnohé z těchto typů jsou možné s různým chováním. Ale zapište vztahy mezi CI,

Pro sloučení bez textových textů pak musíte rozhodnout, jak s nimi pracovat, např. obrázky, které byly změněny na 2 místech. Dalo by se rozhodnout, že výroba má vždy přednost (alespoň to je to, co bych si myslel), což je jednoduché.

Takže ... k vyřešení tohoto problému potřebujete nástroj pro správu verzí, který podporuje různé proudy. Každý proud by představoval jednu část. (To může být nesmírně složité v závislosti na vašich potřebách, ale v tomto případě si myslím, že je to velmi jednoduché).

Pokud se vám nyní podaří mít tyto proudy pod instalací WordPress a synchronizovat je také s obsahem databáze, atd., Pak můžete provést sloučení v nástroji CM/versioning a poté jej exportovat do jiného prostředí.

Věc je ... musíte to napsat jako první. To není technický hack. Je to výchozí vzor kolem Config Management, takže zde není nic divného, ​​ale musíte ho napsat. Můžete najít např. že nainstalovaný plugin provádí změny v databázi s některými daty, která se liší v jiném prostředí, takže je třeba mít k tomu další postup.

Technicky téměř vždy je vše možné zkontrolovat http://www.cmcrossroads.com/forums pro scénáře, které jsou desítky nebo stokrát složitější, i když vždy používají stejný přístup a používají stejnou sadu vzorů CM.

zkrátka: umístit pod něj vrstvu správy verzí, automatizovat sloučení a zvládnout konflikty, poté importovat do cílového prostředí. Zamyslete se nad proudovou strategií, která se zde hodí a zapište si ji. Proveďte malé řízení CM bitů. To by bylo profesionální řešení jinak nainstalovat některé kopie kopii hack, skripty atd ...

1
edelwater