sql >> Databasteknik >  >> RDS >> Database

Kloning av databaser med PSDatabaseClone

Gästförfattare:Sander Stad (@sqlstad)

PSDatabaseClone är en PowerShell-modul som har förmågan att skapa bilder av databaser ("kloner") och distribuera dessa kloner till en eller flera värdar.

Varför använda den här modulen?

Databasadministratörer, och egentligen alla som har att göra med dataförsörjning, har användare som vill arbeta med våra databaser. Detta kan vara att utveckla nya lösningar, att extrahera data för ETL-processer, simulera prestandaproblem, hämta data för rapporteringsändamål och så vidare.

Att tillhandahålla data till andra platser kan vara en mycket tråkig uppgift och de flesta av oss spenderar mycket tid och resurser på att utföra den uppgiften.

Kända lösningar för att tillhandahålla data är genom att återställa databaser eller utveckla en del omfattande skript för att lösa detta problem. Dessa lösningar är inte alltid det mest effektiva sättet att tillhandahålla data och kan ta avsevärd tid.

Förutom den tid det kostar att få data till de andra platserna kan det också kosta mycket diskutrymme.

Tänk om det fanns ett sätt att minska den tid det tar att tillhandahålla data och samtidigt minska mängden resurser som behövs? Nu finns det en lösning för det och den heter PSDatabaseClone.

Hur man installerar modulen

Installationen av modulen kan utföras på flera sätt.

PowerShellGallery

Det enklaste sättet är att använda kommandot Install-Module . Kommandot letar efter modulen i PowerShell Gallery. Kör följande kod för att installera modulen med PowerShell Gallery:

Install-Module PSDatabaseClone

Att använda denna metod gör det också lättare att uppdatera modulen när en ny version släpps. Använd bara Update-Module kommando som nedan för att uppdatera den till den senaste versionen:

Update-Module PSDatabaseClone

Klonar arkivet

Ett annat sätt att installera modulen är genom att klona Git-förvaret till din lokala dator. Jag skulle råda personer som vill bidra till projektet att använda denna metod.

Kör följande kommando:

git clone https://github.com/sanderstad/PSDatabaseClone.git

Detta kommer att ladda ner hela arkivet till din lokala dator från vilken du kan använda modulen eller utveckla nya funktioner för den.

Hur fungerar modulen?

Bilder

Målet med modulen var att använda så lite externa applikationer som möjligt, så att alla kan använda modulen utan att behöva installera några extrafunktioner. Modulen fungerar genom att använda inbyggd teknologi i Windows för att skapa virtuella hårddiskar (VHD). En VHD är ett filformat som representerar en hårddisk och kan innehålla volymer, partitioner som i sin tur kan innehålla filer och mappar. VHDs kan distribueras till andra värdar och monteras som en extra disk, ungefär som att koppla in en extern USB-enhet. När den är ansluten kan värden komma åt filerna och mapparna som vilken annan disk som helst i systemet.

Modulen skapar en VHD som blir vår så kallade bild. Bilden kommer att innehålla alla filer och mappar som behövs för databasen.

Under processen att skapa en bild kommer modulen att få en säkerhetskopia från databasen du har angett och återställa databasen till en VHD.

Efter återställningen stängs och avmonteras VHD:n och innehåller nu alla filer som behövs för att klona databasen.

Figur 1:Processen att skapa en bild

Kloner

För att skapa en klon skapar modulen en "differentieringsdisk" som innehåller samma filer och mappar som den överordnade disken, men bara sparar deltat mellan förälder och barn.

Den funktionen sparar omedelbart diskutrymme eftersom endast en bråkdel av den ursprungliga databasstorleken används för klonen.

En annan fördel är att, eftersom klonen sparar förändringarnas delta, påverkas inte bilden i sig av någon av ändringarna. Det betyder att andra kloner inte heller påverkas.

Processen att skapa en klon är att skapa en differensskiva inuti en skapad bild (förälderdisk). Klonen monteras och databasen inuti klonen kopplas till en instans.

Från och med det ögonblicket fungerar databasen på samma sätt som den ursprungliga. Den innehåller samma objekt, data och beteenden. Eftersom alla objekt finns i databasen som den ursprungliga databasen, kommer frågeplaner och frågestatistik att fungera på samma sätt.

Detta ger användaren eller utvecklaren chansen att skapa frågor som körs på samma sätt i produktionen som på deras utvecklingssystem, vilket minskar risken för att köra ineffektiva frågor.

Skapa bilderna och klonerna

Skapa en bild

Det första steget i processen är att skapa en bild. För att skapa en bild måste du ha följande förutsättningar:

  • Källinstans
  • Destinationsinstans (kan vara samma som källinstansen)
  • Databas
  • Nätverkssökväg
  • Säkerhetskopiering

Kommandot som skapar bilden är:New-PSDCImage .

Det är mycket viktigt att använda en nätverkssökväg till bilderna för att göra det möjligt för andra värdar att hitta bilden och använda den för att skapa en klon.

När följande kommando körs:

New-PSDCImage -SourceInstance SQLDB1 -DestinationInstance SQLDB1 -ImageNetworkPath \\sqldb1\psdatabaseclone\images -Database DB1 -CreateFullBackup

Du får följande resultat:

Detta kommando kördes 2018-07-24 runt 21.00, vilket förklarar datumen i bilden

I det här exemplet tittar kommandot på instansen SQLDB1 för en viss databas och försöker skapa en bild med samma instans. Det kommer att skapa en ny fullständig säkerhetskopia för att få den senaste informationen.

Resultatet är en bild som finns i nätverksresursen \\sqldb1\psdatabaseclone\images kallas DB1_20180724214146.vhdx .

Siffrorna i bildens namn är en tidsstämpel vid vilken tidpunkt bilden skapades.

Skapa en klon

Klonen är beroende av bilden och det enklaste sättet att skapa en klon från en viss databas är att låta modulen ta reda på det åt dig.

Utför följande kommando:

New-PSDCClone -SqlInstance SQLDB3 -Database DB1 -CloneName DB1_Clone2 -LatestImage

Kommer att skapa ett liknande resultat som nedan:

Kommandot skapade precis en differentialskiva på en annan instans. Klonen är baserad på den senaste bilden för databasen DB1, och klonen kommer att heta "DB1_Clone2."

Eftersom vi inte angav en destination, kommer kommandot att söka efter standarddataplatsen för SQL Server-instansen.

Inom den katalogen kommer den att skapa en underkatalog som heter "klon". Klonen kommer att placeras i den mappen.

Hämtar information

Under installationen av modulen tilldelade du en plats där alla kloner kan hittas. Detta var antingen en databas eller en katalog, och mer specifikt en resurs, där konfigurationsfilerna skrivs.

För att hämta informationen kan du använda kommandona Get-PSDCImage och Get-PSDCClone . Dessa kommandon hämtar informationen från informationsarkivet och returnerar den till användaren.

Bildinformation

För att få bildinformationen måste du använda kommandot Get-PSDCCimage . Detta kommer att ge dig ett resultat som liknar nedan:

Du ser att det kan finnas flera bilder från samma databas som var och en kan ha olika data.

Klona information

På samma sätt som att hämta bildinformation kan du få kloninformation. Använd kommandot Get-PSDCClone så får du ett liknande resultat som nedan:

Vad är nästa?

Nästa sak med PSDatabaseClone är att göra det möjligt att fördunkla data i bilderna för att göra den lämpad för företagsmiljöer. Vi känner alla till incidenterna med dataintrång den senaste tiden och vi vill se till att vår data, åtminstone den data som inte finns på plats, är maskerad på ett sådant sätt att ingen skulle veta vad de ska göra med den.

Hur kan du hjälpa till?

PSDatabaseClone är en PowerShell-modul med öppen källkod och alla som är intresserade kan hjälpa till att förbättra modulen. Om du är bekant med att utveckla PowerShell-funktioner och/eller moduler kan du hjälpa till med att utveckla nya funktioner, fixa buggar (jag är säker på att det finns buggar någonstans). Om du inte är bekväm med att utveckla koden, oroa dig inte; det finns massor av saker att göra.

Du kan hjälpa till att testa de olika funktionerna och försöka bryta dem. Jag som en person kan bara gå så långt och för det mesta testar jag det glada flödet i mina program. Du testar förmodligen på ett annat sätt och får andra resultat som jag aldrig skulle ha tänkt på. Detta kommer att bidra till att göra modulen bättre.

Du kan också hjälpa till att tänka på nya funktioner att lägga till den nuvarande lösningen. Du kanske har en bra idé för ny funktionalitet som jag inte kunde ha tänkt på på egen hand.

Om du har en idé om en ny funktion eller hittat en bugg, gå till github-sidan och skapa en funktionsbegäran eller en buggrapport. Det är mycket uppskattat.

Information

Webbplats:https://psdatabaseclone.org

Github:https://github.com/sanderstad/PSDatabaseClone

Om författaren

Sander har arbetat med SQL Server sedan version 2000.
Han har arbetat i en mängd olika branscher , från jordbruket, finansbranschen och sjukvården.
Han har arbetat med PowerShell sedan version 1 och anammar automatisering där han kan.
  1. Tabelltyp i Oracle Stored Procedure Exempel

  2. Indexerade vyer och statistik

  3. 2 sätt att få standardspråket för en inloggning i SQL Server (T-SQL)

  4. Så här fixar du föråldrade oracle.sql.ArrayDescriptor, oracle.sql.STRUCT och oracle.sql.StructDescriptor