AllInfo

Hur man automatiserar MySQL -databasmigreringar med Skeema

Skeema är ett CLI-verktyg med öppen källkod som låter dig synkronisera MySQL-databasscheman över flera värdar. Det fungerar med vanliga SQL -filer som innehåller CREATE TABLE -satser.

Datamigreringar är en av de vanligaste utmaningarna i programutvecklingsprocessen. Hur versioner du ditt schema och tillämpar ändringar i alla dina miljöer?

Skeema hjälper till att lindra denna smärta genom att låta dig hantera ditt schema som vanlig SQL. Det finns ingen speciell syntax eller konfigurationsfilformat att lära sig. När du skjuter upp ditt schema till en värd, kommer Skeema att dra definitionerna av tabellerna på den värden och sprida dem mot dina lokala filer. Den beräknar sedan CREATE-, ALTER- och DROP -satserna för att få fjärrvärden att matcha dina SQL -filer.

Du måste använda InnoDB -tabeller för att få ut det mesta av Skeema. Det kan fungera med MyISAM-tabeller men alla funktioner stöds inte och du kan stöta på problem.

Komma igång

Skeema är tillgängligt för Linux och Mac. DEB- och RPM-paket erbjuds, liksom färdiga fristående binära filer. Ta rätt nedladdning för ditt system och antingen installera paketet eller extrahera binären till en katalog som finns i din sökväg.

Annonsering

Det första steget i att använda Skeema är att få din databas befintliga schema. Om du redan har en samling SQL-filer med CREATE TABLE-satser kan du använda dem som de är. Kör annars kommandot skeema init för att få SQL som representerar en levande databas.

Skeemas CLI accepterar samma argument som det vanliga mysql -kommandot. Använd flaggorna -h, -u och -p för att ange din MySQL -värd, användarnamn och lösenord. MySQL -användaren bör ha administrativ åtkomst till dina scheman; annars kan Skeema kanske inte inspektera dem eller tillämpa alla ändringar. Skeema kommer att lägga in dina SQL -filer i en ny katalog i din arbetskatalog; lägg till -d -flaggan för att välja vad detta kallas.

skeema init -h example.com -u root -p -d my -sql

Skeema är standard för att exportera SQL för alla scheman på värden. Varje schema får sin egen underkatalog i mappen my-sql. Använd –schema -flaggan för att ange ett specifikt schema som ska exporteras. Det kommer att placeras direkt i my-sql, utan någon underkatalog häckande.

Synkronisera scheman

När du har fått din SQL är du redo att synkronisera den till en annan värd. Använd kommandot skeema push för att skilja din lokala SQL mot en annan MySQL -server. Skeema kommer automatiskt att tillämpa alla ändringar som det upptäcker.

cd my -sql skeema push -h example.com -u root -p -d my -sql

Prova att redigera en av CREATE TABLE -satserna i din SQL. Lägg till en ny kolumn eller ändra typen av en befintlig. När du skeema push genererar Skeema en ALTER TABLE -sats som uppdaterar fjärrtabellen så att den matchar.

Potentiellt destruktiva operationer som att tappa en tabell eller ändra en kolumns datatyp är som standard inaktiverade. Detta hjälper dig att undvika oavsiktlig dataförlust om du kör Skeema av misstag eller anger en felaktig server. Destruktiva operationer aktiveras genom att lägga till –allow-unsafe -flaggan till skeema push-kommandon.

Använda flera miljöer

En vanlig användning av Skeema är att hålla flera miljöer synkroniserade. Om du har lokala, dev- och produktionsservrar kan du med Skeema namnge dem så att du sömlöst kan trycka och dra mellan dem.

Annonsering

Redigera .skeema -filen i schemakatalogen för att aktivera denna funktion. Detta är en INI-liknande konfigurationsstruktur där varje sektion definierar en ny namngiven miljö. Du kommer att ha en enda produktionsmiljö, tillagd av skeema init, till att börja med.

Ange varje servers anslutningsinformation så att du kan trycka och dra för att hålla allt i synkronisering. Nycklar högst upp i filen, utanför valfri sektion, är globala inställningar som tillämpas på alla miljöer.

default-character-set = utf8mb4 default-collation = utf8mb4_general_ci generator = skeema: 1.5.2-community schema = exempel-db [produktion] smak = mysql: 8.0 host = exempel.com port = 3306 lösenord = exempel användare = mysql [lokal] smak = mysql: 8.0 värd = lokal värd port = 3306 lösenord = exempel användare = mysql

Nu kan du enkelt synkronisera ändringar mellan miljöer:

skeema pull local skeema push production

Denna kommandosekvens uppdaterar först dina SQL-filer på disken för att matcha din lokala servers schema. Ändringarna tillämpas sedan på den levande produktionsmiljön. Alternativt kan du redigera SQL-skivan manuellt och sedan gå vidare till både lokal och produktion.

Detta tillvägagångssätt gör databasmigreringar enkla, repeterbara och mindre felbenägna. Du kan införliva Skeema i en CI-pipeline för att rulla ut databasändringar i produktionen som en del av ditt vanliga distributionsflöde.

Dry Runs and Lints

< p> Ibland kanske du vill kontrollera de förändringar som en miljö behöver utan att faktiskt tillämpa dem. I det här fallet kan du använda skeema diff för att jämföra en namngiven miljö med dina SQL-filer på disken. Skeema visar dig skillnaderna så att du kan förutse effekterna av ett skeema -tryck.

Annonsering

Skeema har också ett inbyggt luddverktyg. Kör skeema lint för att analysera dina SQL -filer och hitta möjliga problem. Flera konfigurerbara regler stöds. Dessa hjälper dig att se till att din SQL är konsekvent, stöds och kompatibel med moderna bästa MySQL -metoder. Luddresultat visas också under skeema push- och skeema pull-kommandon.

Fler alternativ

Skeema-kommandon har flera delade flaggor som låter dig anpassa operationer. Här är några av de viktigaste:

Dessa alternativ ger dig mer kontroll över Skeema ’ s verksamhet. De låter dig konfigurera databasanslutningen för att exakt matcha din applikations MySQL -konfiguration.

Slutsats

Skeema tar smärtan ur databasmigreringar genom att tillhandahålla automatisering och kompatibilitet med pipeline för distribution av CI/CD. Den har en inbyggd SQL linter, diff-verktyg och synkroniseringsmekanism.

En premiumversion lägger till extra funktionalitet, inklusive möjligheten att arbeta med vyer och triggers. Skeema Premium är ett kommersiellt erbjudande byggt ovanpå Skeema Community-kärnan med öppen källkod. Det kostar $ 99/månad och stöder också Windows -system.

Att använda Skeema gör det enklare för dig att dela databasschemändringar med ditt team, så att alla dina miljöer är synkroniserade. Det är ett säkrare val än att manuellt dela ALTER TABLE -påståenden som kan vara felplacerade och inte skapa en kanonisk representation av ditt nuvarande schema.

Exit mobile version