Wie migriere ich meine SQL Datenbank in einen Docker Container? – Database Migration mit dem SQLSyncer

Avatar

Die Migration einer Datenbank kann viele verschiedene Gründe haben und gestaltet sich je nach Erfahrung und Anwendungsgebiet oft als größere Herausforderung, als initial angenommen. Das richtige Werkzeug zur Hand zu haben, kann dabei den entscheidenden Unterschied bringen. In unserem heutigen Artikel möchten wir Ihnen zeigen, wie Sie mit Hilfe des SQLSyncer eine SQL Datenbank im Handumdrehen auf einen Docker Container migrieren können. Zusätzlich werden wir die Vorteile besprechen, die der SQLSyncer bei der Sicherung einer Datenbank eines Docker Containers bringen kann.

Voraussetzungen

Um der im Artikel beschriebenen Anleitung folgen zu können, benötigen Sie:

  • Eine existierende SQL Server Instanz

  • Eine Datenbank die migriert werden soll (diese muss sich auf de SQL Server Instanz befinden)

  • Einen Docker Container (SQL Server muss auf dem Container installiert werden)

  • Eine Installation des SQLSyncer (Download)

Datenbank auf Container migrieren

Im folgenden Beispiel werden wir die Datenbank AdventureWorks2014 von einer SQL Server Instanz in einen Docker Container mit SQL Server migrieren.

Um mit der Migration zu beginnen, starten wir den SQLSyncer. Nach dem die Anwendung gestartet ist, müssen wir zunächst eine neue Konfiguration für die Migration anlegen. Dafür klicken wir auf dem Start-Bildschirm die mittlere Schaltfläche ‘Configuration’ an. Alternativ geht dies auch über den Menü-Punkt auf der linken Seite der Anwendung.

Konfiguration erstellen

Im folgenden Dialog müssen wir nun einige Informationen für unsere neue Konfiguration festlegen:

Der Name der Konfiguration

Configuration-Name: Der Name, mit dem die Konfiguration, die wir gerade erstellen, in Zukunft identifiziert werden soll. Dieser Name ist frei wählbar. In unserem Beispiel haben wir uns für docker-migration entschieden.

Mit einem Klick auf den Pfeil nach rechts, oder durch das Drücken der Tab-Taste wird der Dialog fortgeführt.

Die Quelle und das Ziel festlegen

Migration Data Source: Nachdem wir einen Namen gewählt haben, müssen wir im zweiten Schritt die Quelle und das Ziel der Migration festlegen. Für die Daten-Quelle, also der SQL Server auf dem sich die zu migrierende Datenbank befindet, geben wir in diesem Beispiel den Hostnamen “localhost” und den default Port “1433” auf dem der Server erreichbar ist, an. Da es sich bei unserer Quelle um einen SQL Server handelt, können wir den Service-Type unverändert lassen.

  • Wie zuvor muss mit einem Klick auf den Pfeil nach rechts, oder durch das Drücken der TAB-Taste der Dialog fortgeführt werden.

Migration Data Sink: Hier muss nun der Ziel-Server für die Migration festgelegt werden. In unserem Fall ist der Docker Container unter dem Hostname “docker01.madafa.local” mit Port 1433 zu finden. Der Service-Type bleibt wie zuvor auch unverändert.

  • Wir führen den Dialog wie zuvor, durch den Klick auf den Pfeil nach rechts, oder durch das Drücken der TAB-Taste der Dialog fort.

Ablauf der Migration bestimmen

Transfer Properties: Als nächstes legen wir fest, wie genau die Migration aussehen soll. Dabei unterscheiden wir zwischen dem Synchronisieren und dem Migrieren einer Datenbank. Beim Synchronisieren werden die Änderungen an einer Datenbank auf einer Kopie dieser Datenbank repliziert. In unserem Beispiel beschränken wir uns auf die Migration der Datenbank, also das Bewegen der Datenbank von einem Quell- auf den Ziel-Server. Ob dabei lediglich die Struktur der Tabellen, oder doch die Tabellen mit ihrem Inhalt übertragen werden soll, kann nach Belieben über das Drop-Down-Menü gewählt werden.

  • Wie zuvor muss mit einem Klick auf den Pfeil nach rechts, oder durch das Drücken der TAB-Taste der Dialog fortgeführt werden.

Eine Authentifizierungsmethode wählen

Authentication Properties: Um unsere Migration erfolgreich durchführen zu können, müssen wir uns sowohl auf dem Quell- als auch auf dem Ziel-Server authentifizieren. Die einfachste Möglichkeit ist es, ein Active-Directory zu verwenden. Es muss sicher gestellt sein, dass der verwendete Windows-Benutzer über ausreichende Berechtigungen (sysadmin) auf beiden SQL Server Instanzen verfügt (Quell-Server und Docker Container Instanz).
Alternativ kann die SQL Server Authentifizierung mit einem Benutzernamen und einem passenden Passwort gewählt werden. Auch hier muss der Login auf beiden Servern existieren und über ausreichende Berechtigung verfügen.

  • Wie zuvor muss mit einem Klick auf den Pfeil nach rechts, oder durch das Drücken der TAB-Taste der Dialog fortgeführt werden.

Nachdem eine Authentifizierungsmethode gewählt und der Dialog fortgeführt wurde, wird automatisch die Erreichbarkeit der Quell- und Ziel-Server, sowie die Berechtigung des verwendeten Benutzers überprüft. Gibt es Probleme mit der gewählten Konfiguration, wird an dieser Stelle eine entsprechende Nachricht ausgegeben.

Die gewünschte(n) Datenbank(en) und Datenbank-Objekte auswählen

Select Databases: Wenn die Verbindung mit Quell- und Ziel-Server erfolgreich durchgeführt wurde, wird im nächsten Schritt eine Auswahl der auf dem Quell-Server befindlichen Datenbanken präsentiert. Mit einem Klick auf den Namen, kann eine einzelne Datenbank zur Migration gewählt werden. Mit einem Klick auf “All” oder “None” in der unteren Schaltfläche lassen sich schnell alle bzw. keine Objekte auswählen. Zusätzlich kann die am oberen Bildschirmrand befindliche Suchleiste dazu benutzt werden die Tabellen zu filtern.

Um mit der Migration fortzufahren, muss mindestens eine Datenbank zur Migration ausgewählt werden.

  • Wie zuvor muss mit einem Klick auf den Pfeil nach rechts, oder durch das Drücken der TAB-Taste der Dialog fortgeführt werden.

In den folgenden Tabellen können nun nacheinander die Tabellen, Sichten, Prozeduren und Funktionen der zuvor ausgewählten Datenbanken ausgewählt werden. In unserem Beispiel entscheiden wir uns dafür, alle Tabellen der AdventureWorks2014 Datenbank zu migrieren.

Wir entscheiden uns dafür alle Tabellen der Datenbank zu migrieren. Die Auswahl der Sichten, Prozeduren und Funktionen können wir zunächst überspringen.

Schedule, Notifications und Steps

Nachdem die Datenbank-Objekte zur Migration ausgewählt wurden, kann im nächsten Schritt eine Schedule festgelegt werden. Basierend auf dieser Schedule kann die Konfiguration

  • periodisch (also alle x Stunden und y Minuten),

  • fixiert (also z.B. jeden Tag um 12:00 Uhr), oder

  • im Anschluss zur Ausführung einer anderen, bereits existierenden Konfiguration

ausgeführt werden. Wird keine Schedule definiert, muss die Konfiguration zur Ausführung manuell gestartet werden.

Eine Schedule zu definieren ist vor allem sinnvoll für eine Konfiguration, die in einem regelmäßigen Zeitraum voll automatisch durchgeführt werden soll. In diesem Beispiel beschränken wir uns auf die manuelle Ausführung einer Konfiguration und lassen die Einstellungen der Schedule unverändert.

  • Wie zuvor muss mit einem Klick auf den Pfeil nach rechts der Dialog fortgeführt werden.

Um während der Migration über evtl. auftretende Probleme oder nach der Migration über das Ergebnis der Ausführung unterrichtet zu werden, können E-Mail- oder Slack-Notifications eingerichtet werden.
Wir haben in unserer Konfiguration die manuelle Ausführung gewählt, daher können wir den Status der Ausführung direkt nachvollziehen. Wir verzichten also darauf, dass die Konfiguration uns benachrichtigt.

  • Wie zuvor muss mit einem Klick auf den Pfeil nach rechts der Dialog fortgeführt werden.

Zu guter Letzt bleibt nur noch, die einzelnen Schritte der Konfiguration zu bestimmen. Basierend auf unseren zuvor getätigten Eingaben befindet sich bereits ein “Step” in der Übersicht, der unsere Migration vom Quell- zum Ziel-Server beschreibt. Nach Belieben können über die Schaltfläche auf der rechten Seite weitere Schritte definiert werden, die im Rahmen der Ausführung der Konfiguration durchgeführt werden sollen. Über das “+” wird ein neuer Schritt der Tabelle hinzugefügt, über das “x” lässt sich ein ausgewählter Schritt entfernen und über die Pfeile nach oben und unten lässt sich die Reihenfolge der Steps in der Tabelle (und damit auch in der Ausführung) anpassen.

In unserem Fall ist der default Schritt, der unsere Migration beschreibt, ausreichend. Mit einem Klick auf Create bestätigen wir die getätigten Eingaben und haben unsere Konfiguration erfolgreich erstellt.

Alle Einstellungen der Konfiguration können im Nachhinein über die Schaltfläche Execution/Results geändert werden. Dafür die gewünschte Konfiguration auswählen und entweder mit einem Klick auf die Schaltfläche mit der Aufschrift Properties oder über einen Rechtsklick Properties die Eigenschaften der Konfiguration öffnen.

Konfiguration ausführen

Nachdem wir zuvor unsere Konfiguration erstellt haben, landen wir auf der “Execution”-Übersicht der Anwendung. Aus der auf der rechten Seite befindlichen Liste können wir nun unsere Konfiguration auswählen. In unserem Fall ist das die Konfiguration mit dem Namen docker-migration.

Um diese Konfiguration auszuführen, muss erneut eine Methode zur Authentifizierung ausgewählt werden (entweder AD oder SQL Login verwenden) und anschließend kann mit einem Klick auf Start die Ausführung angestoßen werden.

Wenn eine Konfiguration gestartet wird, erhöht sich die Zahl der ausgeführten Konfigurationen auf der linken Seite und der Name der Konfiguration erscheint in der darunter liegenden Liste. Zusätzlich lässt sich über den Fortschritt-Balken der Fortschritt der Ausführung verfolgen.

Ergebnisse überprüfen

Wenn die Durchführung einer Konfiguration abgeschlossen ist, verschwindet der Name der Konfiguration aus der Liste auf der linken Seite und die Anzahl der ausgeführten Konfiguration wird verringert.

Um die Ergebnisse der Ausführung einzusehen, kann über Show Histroy oder Results (in der linken Übersicht) die Einstellungen der Ausführungen geöffnet werden.

In der nun vor uns befindlichen Tabelle werden alle Ausführungen der Konfiguration festgehalten. Möchten wir genauere Informationen über die Durchführung und evtl. Fehler nachvollziehen, muss ein Eintrag aus der Tabelle ausgewählt und mit einem Klick auf Show Log bestätigt werden.

Sichern einer SQL Datenbank eines Docker Containers

Analog zu der zuvor erstellen Konfiguration bietet es sich an, eine “gespiegelte” Konfiguration zu erzeugen (also Quelle und Ziel der Konfiguration zu vertauschen). So lassen sich Datenbanken die auf dem Docker Container erstellt oder Verändert wurden, spielend leicht auf einem beliebigen SQL Server übertragen.

Mit Hilfe dieser beiden Konfigurationen kann zukünftig eine Datenbank ohne großen Aufwand auf einem beliebigen Container bereitgestellt werden. Handelt es sich dabei beispielweise um eine Test-Umgebung, kann die Datenbank im Nachhinein mit nur wenigen Klicks gesichert und anschließend in einer Entwicklungsumgebung analysiert werden.

Natürlich handelt es sich bei diesen Beispiel nur um Denkanstöße, um zu verdeutlichen, welche Möglichkeiten der Einsatz des SQLSyncer bietet. Dank der hohen Konfigurierbarkeit und der hohen Benutzerfreundlichkeit ist Ihrer Kreativität im Grunde keine Grenzen gesetzt.


→ Hier findest Du den Artikel zum direkten PDF-Download: madafa.de/download/artikel-downloads/


Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Secured By miniOrange