Database
 sql >> Datenbank >  >> RDS >> Database

Klonen von Datenbanken mit PSDatabaseClone

Gastautor:Sander Stad (@sqlstad)

PSDatabaseClone ist ein PowerShell-Modul, das Abbilder von Datenbanken ("Klone") erstellen und diese Klone an einen oder mehrere Hosts verteilen kann.

Warum dieses Modul verwenden?

Datenbankadministratoren und wirklich jeder, der mit Datenbereitstellung zu tun hat, hat Benutzer, die mit unseren Datenbanken arbeiten möchten. Dies kann die Entwicklung neuer Lösungen, das Extrahieren der Daten für ETL-Prozesse, das Simulieren von Leistungsproblemen, das Abrufen von Daten für Berichtszwecke usw. sein.

Die Bereitstellung der Daten an anderen Standorten kann eine sehr mühsame Aufgabe sein, und die meisten von uns verbringen viel Zeit und Ressourcen mit der Durchführung dieser Aufgabe.

Bekannte Lösungen zum Bereitstellen der Daten bestehen darin, Datenbanken wiederherzustellen oder einige umfangreiche Skripte zu entwickeln, um dieses Problem zu lösen. Diese Lösungen sind nicht immer die effizienteste Art der Bereitstellung von Daten und können sehr viel Zeit in Anspruch nehmen.

Neben der Zeit, die es kostet, die Daten an die anderen Standorte zu bringen, kann es auch viel Speicherplatz kosten.

Was wäre, wenn es eine Möglichkeit gäbe, den Zeitaufwand für die Bereitstellung der Daten zu reduzieren und gleichzeitig die Menge der benötigten Ressourcen zu reduzieren? Dafür gibt es jetzt eine Lösung namens PSDatabaseClone.

So installieren Sie das Modul

Die Installation des Moduls kann auf verschiedene Weise erfolgen.

PowerShell-Galerie

Am einfachsten geht das über den Befehl Install-Module . Der Befehl sucht im PowerShell-Katalog nach dem Modul. Führen Sie den folgenden Code aus, um das Modul mithilfe der PowerShell-Galerie zu installieren:

Install-Module PSDatabaseClone

Die Verwendung dieser Methode erleichtert auch die Aktualisierung des Moduls, wenn eine neue Version veröffentlicht wird. Verwenden Sie einfach das Update-Module Befehl wie unten, um es auf die neueste Version zu aktualisieren:

Update-Module PSDatabaseClone

Das Repository klonen

Eine andere Möglichkeit, das Modul zu installieren, besteht darin, das Git-Repository auf Ihren lokalen Computer zu klonen. Ich würde Leuten, die zu dem Projekt beitragen wollen, raten, diese Methode zu verwenden.

Führen Sie den folgenden Befehl aus:

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

Dadurch wird das gesamte Repository auf Ihren lokalen Computer heruntergeladen, von dem aus Sie das Modul verwenden oder neue Funktionen dafür entwickeln können.

Wie funktioniert das Modul?

Bilder

Das Ziel des Moduls war es, so wenig externe Anwendungen wie möglich zu verwenden, damit jeder das Modul verwenden kann, ohne Extras installieren zu müssen. Das Modul arbeitet mit nativer Technologie in Windows, um virtuelle Festplatten (VHDs) zu erstellen. Eine VHD ist ein Dateiformat, das eine Festplatte darstellt und Volumes, Partitionen enthalten kann, die wiederum Dateien und Ordner enthalten können. VHDs können an andere Hosts verteilt und als zusätzliche Festplatte gemountet werden, ähnlich wie beim Anschließen eines externen USB-Laufwerks. Sobald die Verbindung hergestellt ist, kann der Host wie jede andere Festplatte im System auf die Dateien und Ordner zugreifen.

Das Modul erstellt eine VHD, die unser sogenanntes Image sein wird. Das Image enthält alle Dateien und Ordner, die für die Datenbank erforderlich sind.

Während des Erstellens eines Images erhält das Modul eine Sicherung von der von Ihnen angegebenen Datenbank und stellt die Datenbank in einer VHD wieder her.

Nach der Wiederherstellung wird die VHD geschlossen und ausgehängt und enthält nun alle Dateien, die zum Klonen der Datenbank benötigt werden.

Abbildung 1:Vorgang zum Erstellen eines Images

Klone

Um einen Klon zu erstellen, erstellt das Modul eine „differenzierende Festplatte“, die dieselben Dateien und Ordner wie die übergeordnete Festplatte enthält, aber nur das Delta zwischen übergeordneter und untergeordneter Festplatte speichert.

Diese Funktionalität spart sofort Speicherplatz, da nur ein Bruchteil der ursprünglichen Datenbankgröße für den Klon verwendet wird.

Ein weiterer Vorteil besteht darin, dass das Image selbst von keiner der Änderungen betroffen ist, da der Klon das Delta der Änderungen speichert. Das bedeutet, dass auch andere Klone nicht betroffen sind.

Der Vorgang zum Erstellen eines Klons besteht darin, eine differenzierende Festplatte innerhalb eines erstellten Images (übergeordnete Festplatte) zu erstellen. Der Klon wird gemountet und die Datenbank innerhalb des Klons wird an eine Instanz angehängt.

Von diesem Moment an funktioniert die Datenbank genauso wie die ursprüngliche. Es enthält dieselben Objekte, Daten und Verhaltensweisen. Da sich alle Objekte in der Datenbank wie in der Originaldatenbank befinden, verhalten sich Abfragepläne und Abfragestatistiken gleich.

Dies gibt dem Benutzer oder Entwickler die Möglichkeit, Abfragen zu erstellen, die in der Produktion genauso ausgeführt werden wie auf ihrem Entwicklungssystem, wodurch das Risiko ineffizienter Abfragen verringert wird.

Images und Klone erstellen

Erstelle ein Bild

Der erste Schritt des Prozesses besteht darin, ein Bild zu erstellen. Um ein Image zu erstellen, müssen Sie folgende Voraussetzungen erfüllen:

  • Quellinstanz
  • Zielinstanz (kann mit der Quellinstanz identisch sein)
  • Datenbank
  • Netzwerkpfad
  • Sicherung

Der Befehl, der das Image erstellt, lautet:New-PSDCImage .

Es ist sehr wichtig, einen Netzwerkpfad zu den Images zu verwenden, damit andere Hosts das Image finden und daraus einen Klon erstellen können.

Wenn der folgende Befehl ausgeführt wird:

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

Sie erhalten das folgende Ergebnis:

Dieser Befehl wurde am 24.07.2018 gegen 21:00 Uhr ausgeführt, was die Daten im Bild erklärt

In diesem Beispiel sucht der Befehl in der Instanz SQLDB1 nach einer bestimmten Datenbank und versucht, ein Image mit derselben Instanz zu erstellen. Es wird eine neue vollständige Sicherung erstellt, um die neuesten Daten zu erhalten.

Das Ergebnis ist ein Bild, das sich in der Netzwerkfreigabe \\sqldb1\psdatabaseclone\images befindet namens DB1_20180724214146.vhdx .

Die Zahlen im Namen des Bildes sind ein Zeitstempel, zu dem das Bild erstellt wurde.

Klon erstellen

Der Klon ist vom Image abhängig, und der einfachste Weg, einen Klon aus einer bestimmten Datenbank zu erstellen, besteht darin, das Modul das für Sie herausfinden zu lassen.

Führen Sie den folgenden Befehl aus:

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

Erzeugt ein ähnliches Ergebnis wie unten:

Der Befehl hat gerade eine differenzielle Festplatte auf einer anderen Instanz erstellt. Der Klon basiert auf dem neuesten Image für die Datenbank DB1 und erhält den Namen „DB1_Clone2.“

Da wir kein Ziel angegeben haben, sucht der Befehl nach dem Standarddatenspeicherort der SQL Server-Instanz.

Innerhalb dieses Verzeichnisses wird ein Unterverzeichnis namens „clone“ erstellt. Der Klon wird in diesem Ordner abgelegt.

Abrufen von Informationen

Während der Einrichtung des Moduls haben Sie einen Ort zugewiesen, an dem alle Klone zu finden sind. Dies war entweder eine Datenbank oder ein Verzeichnis, genauer gesagt eine Freigabe, in die die Konfigurationsdateien geschrieben werden.

Um die Informationen abzurufen, können Sie die Befehle Get-PSDCImage verwenden und Get-PSDCClone . Diese Befehle rufen die Informationen aus dem Informationsspeicher ab und senden sie an den Benutzer zurück.

Bildinformationen

Um die Bildinformationen zu erhalten, müssen Sie den Befehl Get-PSDCCimage verwenden . Dadurch erhalten Sie ein ähnliches Ergebnis wie unten:

Sie sehen, dass es mehrere Bilder aus derselben Datenbank geben kann, die jeweils unterschiedliche Daten enthalten können.

Informationen klonen

Ähnlich wie beim Abrufen von Bildinformationen können Sie Kloninformationen abrufen. Verwenden Sie den Befehl Get-PSDCClone und Sie erhalten ein ähnliches Ergebnis wie unten:

Was kommt als nächstes?!

Als Nächstes ermöglicht PSDatabaseClone, die Daten in den Images zu verschleiern, um sie für Unternehmensumgebungen geeignet zu machen. Wir alle wissen von den Datenschutzverletzungen in letzter Zeit und wir möchten sicherstellen, dass unsere Daten, zumindest die Daten, die nicht vor Ort sind, so maskiert werden, dass niemand weiß, was damit zu tun ist.

Wie können Sie helfen?

PSDatabaseClone ist ein Open-Source-PowerShell-Modul und jeder Interessierte kann helfen, das Modul zu verbessern. Wenn Sie mit der Entwicklung von PowerShell-Funktionen und/oder -Modulen vertraut sind, können Sie bei der Entwicklung neuer Funktionen helfen und Fehler beheben (ich bin mir sicher, dass es irgendwo Fehler gibt). Wenn Sie sich beim Entwickeln des Codes nicht wohl fühlen, machen Sie sich keine Sorgen; es gibt viel zu tun.

Sie können helfen, die verschiedenen Funktionen zu testen und versuchen, sie zu brechen. Ich als eine Person kann nur so weit gehen und teste die meiste Zeit den fröhlichen Ablauf meiner Programme. Sie testen wahrscheinlich auf eine andere Weise und erhalten andere Ergebnisse, an die ich nie gedacht hätte. Dies wird dazu beitragen, das Modul zu verbessern.

Sie können auch dabei helfen, über neue Funktionen nachzudenken, die der aktuellen Lösung hinzugefügt werden können. Vielleicht haben Sie eine tolle Idee für neue Funktionen, auf die ich alleine nicht gekommen wäre.

Wenn Sie eine Idee für ein neues Feature haben oder einen Fehler gefunden haben, gehen Sie auf die Github-Seite und erstellen Sie eine Funktionsanfrage oder einen Fehlerbericht. Es wird sehr geschätzt.

Informationen

Website:https://psdatabaseclone.org

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

Über den Autor

Sander arbeitet seit Version 2000 mit SQL Server.
Er hat in einer Vielzahl von Branchen gearbeitet , aus der Landwirtschaft, der Finanzbranche und dem Gesundheitswesen.
Er arbeitet seit Version 1 mit PowerShell und setzt auf Automatisierung, wo immer er kann.