Von Matthias Jung auf Mittwoch, 26. Februar 2020
Kategorie: Data Management

Raus aus der Komfortzone: Linux, PowerShell und MySQL

Manchmal ist es an der Zeit, etwas Neues zu probieren. Seit fast zwanzig Jahren beschäftige ich mich mit MySQL Datenbanken. Dabei kommt bei mir (und unseren Kunden) fast ausschließlich Linux zum Einsatz. In diesem Umfeld wurden von mir ein paar Dutzend Skripte in Shell und/oder Perl zur Verwaltung oder zum Monitoring entwickelt und implementiert. So weit, so gut.

Die andere Welt da draußen

In den letzten Tagen hatte ich Kontakt mit einem Kunden, der aktuell seine Datenbanken auf einer Vielzahl von internen Windows-Servern verteilt hat. Im Rahmen einer neuen IT-Strategie sollen diese Systeme nun in die Cloud migriert und auch ein wenig konsolidiert werden. Auch hier existieren viele hilfreiche Skripte. Der größere Teil wurde mit der PowerShell implementiert. Die Frage des Kunden lautet daher: Muss ich die nun alle neu implementieren oder kann ich diese weiter nutzen?

Mut zur Lücke

Bis zum heutigen Tage habe ich mich nicht wirklich tiefgehend mit der PowerShell beschäftigt. Allerdings ist mir bekannt, dass die PowerShell auch für Windows-fremde Systeme wie Linux und den Mac verfügbar ist. Genutzt habe ich das allerdings nie. Zeit dies zu ändern!

Ein Selbstversuch in drei Akten

Es folgt also ein Selbstversuch (unter Zeitdruck), wie und ob man mit der PowerShell unter Linux und MySQL arbeiten kann. Zeit die Stoppuhr zu starten:

Akt 1: Powershell Installation (00 Min. 00 Sek.)

Mein Versuchsobjekt ist ein Ubuntu 18.04 Server mit einer MySQL 8.0.19 DB. Der erste Akt ist auch wieder schnell vorbei und besteht nur aus zwei Kommandos:

  1. Download der Software
  2. Installation der Software

Zusätzlich wird noch der MySQL Connector/NET benötigt, um mit der Datenbank kommunizieren zu können.

Akt 2: Skripting (12 Min. 30 Sek.)

Ok, hier habe ich geschummelt. Da ich keine PowerShell Skills habe, habe ich mir im Internet einige Tutorials und Vorlagen angeschaut, um schnell ein Ergebnis zu bekommen. In diesem Moment geht es mir auch nicht darum ein perfektes, möglichst elegantes und effizientes Skript zu schreiben, sondern lediglich um einen funktionalen Test. Mein Ziel: Das Ergebnis eines einfachen SELECTs auf STDOUT auszugeben:

Im ersten Abschnitt wird der Funktionsumfang der PowerShell um MySQL Funktionen erweitert. Dazu wird die entsprechende runtergeladene DLL des Connectors eingebunden. Danach wird die Verbindung zur DB aufgebaut. Im nächsten Abschnitt wird das SQL-Kommando an den Server gesendet und das Ergebnis entgegengenommen. Im letzten Schritt wird über das Ergebnis zeilenweise iteriert und die Datensätze werden auf STDOUT ausgegeben.

Akt 3: Testen ( 42 Min. 30 Sek.)

Das Skript funktioniert tadellos.

Beflügelt von dem Ergebnis habe ich mir ebenfalls eine PowerShell Umgebung auf meinem Macbook installiert (siehe unten) und das identische Skript (Pfadangabe zur DDL musste angepasst werden) erneut getestet. Auch hier lief das Skript sorgenfrei (48 Min 00. Sek).

Fazit

Das Ergebnis überzeugt und wird sicherlich unseren Kunden erfreuen. Generell ist es problemlos möglich, mit der PowerShell Skripte in heterogenen Umgebungen (Windows/Linux) zu entwickeln und zu betreiben. Die PowerShell ist sicher auch ein mächtiges Werkzeug (der Name legt dieses ja nah ;-)). Ich werde mich daher in naher Zukunft mehr damit beschäftigen und dieses Tool vielleicht auch häufiger einsetzen.

Kommentare hinterlassen