SQLSyncer

Der SQL Syncer ist ein voll automatisches, Plattform unabhängiges Werkzeug zum Migrieren von Datenbanken. Die Unabhängigkeit vom unterliegenden Betriebssystem macht es besonders einfach das Werkzeug in jeder gewünschten Umgebung bereit zu stellen.

Das einfache und intuitiv gestaltete Interface ermöglichen dem Benutzer eine Migrations-Strategie maßgeschneidert für die eignen Bedürfnisse zu Entwerfen und Umzusetzen. Die momentane Auswähl der Daten die Migriert werden besteht aus:

Datenbanken,Schemas,Benutzer definierte typen,Views (Ansichten),Prozeduren,Funktionen,Volltext-kataloge,Volltext-Indexe und Benutzer logins.

Die Definition der Migrations-Strategie dient dazu, die Art der Migration zu beschreiben (also, welche Objekte (Tabellen, gespeicherte Prozeduren, Funktionen, etc.) transferiert werden). Jedes einzelne Attribut ( also Databases, Schemas, Views, etc.) der Migrations-Strategie kann als Kategorie von Objekten gesehen werden die vom Benutzer ausgewählt wird um das Interesse am Migrieren dieser Art von Daten zu signalisieren. Dies ermöglicht es dem Benutzer eine Art Katalog der Datenbanken zu erstellen, mit dessen Hilfe im nächsten Schritt individuell die Auswahl der zu migrierenden Daten getroffen werden kann.

Um die Erstellung der Migrations-Strategie und ihre Funktionsweise so wie die Auswirkung auf das Arbeitsverhalten des SQL Syncer noch weiter zu durchleuchten, betrachten wir im Folgenden zwei beispielhafte Szenarien:

Beispielhaftes Szenario 1: Migration einer einzelnen, bestimmten Tabelle aus einer Datenbank

  • Um zu signalisieren, dass Datenbanken Tabellen übertragen werden sollen, setzt der Benutzer in der Spezifizierung der Migrations-Stategie einen Haken im Feld Databases in dem oben gezeigten Fenster.
  • Im nächsten Fenster wir ihm eine Auswahl an Datenbanken präsentiert aus denen er wählen muss (alle Datenbanken die von dem zuvor spezifizierten SQL Server (Data Source) zur Verfügung stehen sind aufgeführt).
  • Der Benutzer wählt die Datenbank aus die die Tabelle die er migrieren möchte enthält und bestätigt die Auswahl mit einem Klick auf Continue.
  • Als nächstes wird dem Benutzer eine Auswahl der in der Datenbank befindlichen Tabellen präsentiert. Er wählt die gewünschte Tabelle aus der Liste aus und startet den Prozess der Migration mit einem weiteren Klick auf Continue.

Beispielhaftes Scenario 2: Migration aller Prozeduren und Funktionen aller Datenbanken auf dem Server

  • Um zu signalisieren, dass Prozeduren und Funktionen übertragen werden sollen, setzt der Benutzer in der Spezifizierung der Migrations-Strategie einen Haken in den Feldern Procedure und Function in dem oben gezeigten Fenster.
  • Im nächsten Fenster wird ihm eine Auswahl an Datenbanken präsentiert aus denen er wählen muss (alle Datenbanken die von dem zuvor spezifizierten SQL Server (Data Source) zu Verfügung stehen sind aufgeführt).
  • Der Benutzer wählt alle aufgeführten Datenbanken aus, indem er auf Select all klickt und seine Auswahl mit einem weiteren Klick auf Continue bestätigt.
  • Ab jetzt werden dem Benutzer nach und nach weitere Fenster zur Auswahl der Prozeduren pro Datenbank präsentiert. In jedem der Fenster wählt der Benutzer Select all und bestätigt seine Auswahl mit Continue.
  • Nachdem für jede zuvor ausgewählt Datenbank die Prozeduren ausgewählt wurden (in diesem Beispiel ALLE Prozeduren von JEDER Datenbank), beginnt die Auswahl der Funktionen.
  • Erneut wird dem Benutzer zu jeder zuvor ausgewählten Datenbank eine Liste von Funktionen die zur Auswahl stehen präsentiert. Er klickt auf jedem der Fenster Select all und bestätigt seine Auswahl wie gewohnt mit einem weiteren klick auf Continue.
  • Nachdem die Auswahl im letzten Fenster getroffen wurde, sind nun ALLE Prozeduren und Funktionen von JEDER Datenbank die auf dem spezifizierten SQL Server befindlich sind ausgewählt und der SQL Syncer beginnt mit dem Prozess der Migration.

Die beiden oben beschriebenen Scenarios sind nur sehr einfache Beispiele für die Arbeitsweise mit dem SQL Syncer. In der tatsächlichen Anwendung ist der Benutzer nicht drauf beschränkt eine oder zwei Kategorien zu benutzen um die Migrations-Strategie zu beschreiben, sondern kann nach belieben aus den zur Verfügung stehenden Kategorien wählen.

Weitere Informationen bezüglich dem Prozess der Definition der Migrations-Strategie sehen sie im Absatz “Data Selection”.

Nachdem der Benutzer die gewünscht Migrations-Strategie mit Hilfe der oben gezeigten Optionen beschrieben hat ist der SQL Syncer bereit mit der Synchronisation zu beginnen. Die Art und Weise wie der SQL Syncer arbeitet folgt einem iterativen Schema: in der ersten Iteration (die erste Stufe des Arbeitsflusses) werden die Datenbanken synchronisiert und alle existierenden (und ausgewählten) Daten werden in den Ziel-Server (Data Sink) migriert. Zusätzlich wird Change Data Capture (CDC) für die Datenbanken aktiviert um die Integrität der Daten im Synchronisierungsprozess zu gewährleisten und die folgenden Iterationen vorzubereiten.

Mit CDC werden alle Änderungen/Updates/etc. die während der Synchronisierung an dem Source Server vorgenommen werden erfasst und separat gespeichert. Basierend darauf kann der SQL Syncer in den folgenden Iterationen die Änderungen zwischen Source und Sink fortlaufen erfassen und umsetzten. Dies geschieht, bis der Benutzer sich dazu entscheidet die Migration zu beenden.

Momentan verfügbare Szenarien:

  • SQL Server ↔︎ SQL Server

Der SQL Syncer kann von einem SQL Server zu einem anderen SQL Server migrieren. Dabei stehen alle SQL Server Versionen von SQL Server 2008 R2, über SQL Server 2012/14/16, bis hin zum neusten Release zur Verfügung. Beispiele:

  • Migration von SQL Server 2008 R2 nach SQL Server 2012
  • Migration von SQL Server 2019 nach SQL Server 2014

Zukünftige Szenarien:

  • SQL Server ↔︎ PostgreSQL: Migration von SQL Server zu PostgreSQL und umgekehrt befindet sich momentan in der Entwicklung und wird bald zur Verfügung stehen.
  • SQL Server ↔︎ MySQL: Migration von SQL Server zu MySQL und umgekehrt befindet sich momentan in der Entwicklung und wird bald zur Verfügung stehen.

Installation

Clone

Um das Repository auf ihre lokale Maschine zu kopieren, benutzen sie https mit dem Kommando https://github.com/MainzerDatenFabrik/sqlsyncer.git, oder SSH mit dem Kommando git@github.com:MainzerDatenFabrik/sqlsyncer.git und fangen sie an, ihre SQL Server Umgebung zu migrieren.

Execute

Um den SQLSyncer zu starten, öffnen Sie ein CMD/Terminal Fenster und navigieren Sie in das zuvor kopierte Repository. Dort angekommen, führen Sie das Kommando java -jar out\artifacts\sqlsyncer\sqlsyncer.jar (windows) oder java -jar out/artifacts/sqlsyncer/sqlsyncer.jar (linux/maxOS) aus.

Usage

Der SQLSyncer wird über eine simple und intuitive. graphische Benutzeroberfläche (GUI) gesteuert. Sobald die Anwendung gestartet wurde erscheint der Lade-Bildschirm. Nachdem der Ladevorgang beendet ist, erscheint das Haupt-Interface.

Die folgenden Informationen müssen vom Benutzer für den Prozess der Migration angegeben werden:

Data Source

Um die Daten-Quelle zu konfigurieren muss die IP Adresse und der Port der Quell Instanz angegeben werden. Eine beispielhafte Eingabe könnte wie folgt aussehen: example.host.com als ip und 1433 als port (1433 ist der default port für SQL Server Instanzen).

Data Sink

Um das Daten-Ziel zu konfigurieren muss die IP Adresse und der Port der Ziel Instanz angegeben werden. Eine beispielhafte Eingabe könnte wie folgt aussehen: another.host.com als ip und 1433 als port (1433 ist der default port für SQL Server Instanzen).

SQL User

Als nächstes muss der SQL User Login der für die Migration benutzt werden soll angegeben werden. VORSICHT: Der SQL User Login muss auf beiden SQL Server Instanzen (Quelle und Ziel) existieren!

Miscellaneous

Hier wird die Ruhezeit des SQL Syncer zwischen den einzelnen Iterationen (in Minuten) festgelegt.

Migration Mode

Hier wird der Modus festgelegt, in welcher die Migration durchgeführt werden soll. Momentan steht nur der direkte Modus zur Verfügung.

Migration Stategy

Zuletzt muss die Migrations-Strategie bestimmt werden. Hierfür kann der Benutzer die Check boxen der zur Verfügung gestellten Kategorien auswählen. Zur Verfügung stehen folgende Kategorien:

  • Databases
  • Prozeduren
  • Fuktionen
  • Views (Ansichten)
  • Benutzer

Mit einem Klick auf Continue in der unteren rechten Ecke der Anwendung wird die bisher getätigte Auswahl bestätigt.

Data Selection

Auf den folgenden Fenstern wird dem Benutzer basieren auf den vorher getätigten Entscheidungen eine Auswahl an Daten präsentiert. Um genau bestimmen zu können welche Daten übertragen werden sollen (z.B., Datenbanken, Tabellen, Funktionen, etc.), muss in der präsentierten Liste eine Auswahl mit Hilfe der Kontrollkästchen getroffen werden. Nachdem alle gewünschten Objekte/Daten ausgewählt wurden, kann die Auswahl mit einem Klick auf Continue in der unteren rechten Ecke der Anwendung bestätigt werden.

Sobald jede Auswahl getroffen wurden startet der SQL Syncer direkt mit dem Prozess der Migration. Eine neues Fenster mit Informationen bezüglich des aktuellen Status des SQL Syncers erscheint.