pusha ut förändringar av databasstruktur till produktionsserver
Hej,
en nyfiken fråga slog mig imorse på väg till jobbet.
Om man har en produktionsserver, som rullat en viss tid, och en test/implementeringsserver där förändringar av databasstrukturen gjorts (nya kolumner, nya nycklar, index, oavsett strukturförändring).
När man vill deploya detta till produktionsservern, hur görs detta på bästa möjliga sätt? Man vill ju inte förstöra existerande data på produktionsservern och man vill inte göra allt för mycket manuellt arbete.
Hittils har jag klarat mig med små förändringar i strukturer och detta har gjort att det manuella arbetet inte blivit så stort. Men i framtida jobb kan det bli möjligt att det blir allt för stora ändringar.
Jag jobbar främst med MySQL databaser, stött på nån lösning med Oracle och MSSQL men generellt jobbar jag med MySQL.
Någon som har erfarenhet av detta? Hur gör ni?
/Björn
Svara
Sv: pusha ut förändringar av databasstruktur till produktionsserver
Hej, en inte helt lätt, det blir ganska lätt komplext för att hantera detta och eftersom du nämner en specifik databas, kanske ännu svårare. Du behöver nog fundera på vad du skall ha för mån först, och därefter försöka få tag på svar på var och en av dessa frågor.
Det spontana jag säger är att man scriptar in alla ändringar som görs i databasen, då kan du lägga scriptfilerna i någon form av versionshanterare också för att ha koll på ändringarna.
Hur har du tänkt vidare själv?
Svara
Sv:pusha ut förändringar av databasstruktur till produktionsserver
Om du menar scriptfiler, är det då sql-filer med saker som ALTER TABLE-likande grejer? som man bygger på medan utvecklingen pågår?
Min tanke stannar tyvärr vid manuella uppdateringar.
Ett annat fall är om man har en version 1.0 av en mjukvara, den har rullat ute hos kund i X antal år/månader/dagar.
Vi kommer nu med en version 2.0 av programmet, vi vill inte ta bort deras nuvarande data, eftersom den antagligen fortfarande är relevant för kunden.
Så vi vill använda samma databas, men under utveckling av v2.0 har ju så klart omstrukturering av databasen gjorts. Nya kolumner, index, nycklar.
Exemplet i mitt första inlägg, är ju om vi jobbar på exempelvis en industri, där produktion sker varje dag och natt där vi gör mindre förändringar än ovanstående exempel, men ändå så pass stora att det blir "olidligt" att manuellt uppdatera databasen.
Jag vet inte hur ofta sånt här egentligen skulle uppstå, jag har inget riktigt exempel att hämta ifrån verkligheten utan det handler mer om min nyfikenhet för hur arbetet skall skötas i stort.
/Björn
Svara
Sv: pusha ut förändringar av databasstruktur till produktionsserver
RedGate har en (kommersiell) produkt som jämför två databaser och visar vad som skiljer dem samt kan konstruera skript för att fixa till strukturen så den blir lika. Jag har för mig att den ska funka även för MySQL även om jag bara kört den för MS.
Dock, om du t.ex. bytt namn på en kolumn/tabell har jag svårt att tro att det inte måste till nåt manuellt steg för att komma runt det (verktyget lär då förseslå att du skrotar Tabell1 och skapar Tabell2, vilket gör att allt data försvinner...)
Svara