Schlagwort-Archive: MySQL

Upgrade auf MySQL 8.0 abgeschlossen

Vorgestern ist rund drei Jahre nach dem letzten Release MySQL 8.0 offiziell von Oracle freigegeben worden. Vor dem Upgrade sollte man unbedingt die Upgrade Guides durchgehen, denn mit dem neuen Release hat sich einiges getan – das Upgrade fällt diesmal etwas größer aus.
Die neue MySQL Shell bietet ein kleines Werkzeug, mit dem vorab einige Knackpunkte erkannt werden können. Bei mir hat sie glücklicherweise nur einige Warnungen ausgespuckt, die keine kritische Wirkung auf das Upgrade hatten.
Für das Upgrade habe ich die In-Place Variante gewählt, d.h. die neuen MySQL 8.0 Binaries werden mit einem vorhandenen Datadir gestartet. Beim ersten Start nimmt MySQL 8.0 dann notwendige Änderungen vor, die u.a. auch in der Erstellung des neuen Data Dictionary enden. Dieser Vorgang hat selbst bei meiner nicht gerade üppigen Installation einige Minuten verschlungen. Ein gewohntes anschließendes mysql_upgrade bringt schließlich auch die restlichen Bereiche auf den aktuellsten Stand.
Eine der kritischeren Änderungen ist die Umstellung des Preferred Authentication Plugins von mysql_native_password auf caching_sha2_password. Diese Änderung erfordert auch die Aktualisierung der MySQL Client Bibliotheken. Glücklicherweise bleiben bereits bestehende MySQL Benutzeraccounts hiervon aber unberührt, sodass bestehende Anwendungen erst einmal auch ohne neue Libs auskommen. Die Aktualisierung kann hier zu einem späteren Zeitpunkt vorgenommen werden.
Nach dem Upgrade hat bei mir lediglich der XMPP/Jabber Server Openfire gestreikt. Dieser bringt noch einen älteren MySQL Java Connector mit, der scheinbar auf eine MySQL Query Cache Variable zugreift, die in MySQL 8.0 (dort wurde der Query Cache komplett entfernt) nicht mehr existiert. Ein manuelles Upgrade des dort verwendeten MySQL Connectors hat aber auch hier Abhilfe geschaffen.

Hallo, MySQL 8.0.11!
Hallo, MySQL 8.0.11!

Unter dem Strich ist das Upgrade auf MySQL 8.0 trotz der zahlreichen Änderungen ausgesprochen problemlos vonstattengegangen. Die lange Testphase scheint MySQL 8.0 gut getan zu haben 🙂

MySQL und MariaDB – eine Nachbetrachtung

Heute möchte ich nochmals meine Gedanken aus dem Beitrag Die Zukunft von MySQL ist eine spannende Angelegenheit aus dem Jahre 2013 aufgreifen. Sind die Befürchtungen wahr geworden, gibt es mittlerweile neue Gesichtspunkte?

Oracle hat sich in der Vergangenheit bei Open Source Projekten nicht gerade beliebt gemacht, insofern bestanden auch bei MySQL ernsthafte Bedenken, was die künftige Marschrichtung und Zukunft anbelangte. Entgegen aller Unkenrufe scheint es Oracle mit MySQL aber ernster zu meinen als mit anderen „Randprodukten“, die vermutlich aus Oracle-Sicht nicht ganz ins Portfolio passten. Das zeigt sich an der Entwicklung von MySQL in den letzten Jahren: mit MySQL 5.7 haben viele sinnvolle Dinge Einzug gehalten, an der nächsten Version 8.0 wird zudem aktiv gearbeitet und diese wird auch alte Zöpfe abschneiden.
Ein großer Kritikpunkt der weiterhin besteht ist allerdings der Umgang mit Bugtracker-Einträgen. Nicht alle sind öffentlich zugänglich, manche stehen nur Oracle-intern zur Verfügung. Ganz offen zeigt sich hier Oracle also weiterhin nicht. Auch das MySQL Updates in der Regel an festen Oracle Patchdays erscheinen, stößt so manchem Bitter auf. Hier kann MariaDB natürlich definitiv punkten und zeigt sich offener.

Apropos MariaDB. Auch hier hat sich im Laufe der Jahre einiges getan und erst kürzlich wurde die stabile Version 10.2 veröffentlicht. Linux Distributionen setzen nun mehrheitlich auf MariaDB, mit Debian Stretch ist vor etwas mehr als einem Monat eine weitere große dazugekommen. Dabei zeigt sich immer mehr, dass MariaDB nicht mehr nur ein Fork darstellt, sondern mit der Zeit viel mehr zu einem eigenständigen Produkt wird. Noch dürften die jeweiligen Eigenheiten von MySQL und MariaDB normale Webanwendungen nicht großartig tangieren, aber ob dies auf langfristige Sicht so bleiben wird bleibt fraglich. Solange wir uns damit aber noch nicht herumschlagen müssen, darf die Wahl nach Gusto erfolgen. Insofern ist es immer schön eine offene Alternative wie MariaDB in der Hinterhand zu haben.

Ich selbst bin persönlich noch bei MySQL geblieben, allerdings benötigen meine Webanwendungen bislang keine der speziellen Funktionen von MySQL oder MariaDB – ein späterer Wechsel wäre also noch relativ problemlos durchführbar. Insofern verfolge ich entspannt beide Entwicklungslinien, MySQL und MariaDB dürfen sich durchaus beidseitig inspirieren 🙂

Unter dem Strich lässt sich festhalten, dass auch MySQL noch lange nicht tot ist. Auch wenn sich so mancher Kritikpunkt weiterhin nennen lässt, hat Oracle MySQL zumindest nicht fallen lassen.

Upgrade auf Debian Stretch 9.0 geglückt

Im zweiten Anlauf ist mir in der vergangenen Nacht das Upgrade des Servers auf Debian Stretch geglückt. Damit ist etwas mehr als eine Woche nach dem Release von Debian Stretch die Hauptarbeit bereits abgeschlossen. Grundsätzlich habe ich direkte Upgrades auf die Nachfolgeversion von Debian bislang gemieden und stets auf eine (meistens deutlich spätere) Neuinstallation gesetzt. Auch diesmal stand dieser Weg bei mir ganz oben auf der Liste, allerdings habe ich mich dann doch relativ schnell für das Upgrade umentschieden – auch nachdem erste Berichte von einem grundsätzlich relativ reibungslosen Prozess berichteten. Bei vergangenen Debian Upgrades sah das zum Teil noch anders aus.
Das eigentliche Systemupgrade lief bei mir am problemlosesten, großartige Auseinandersetzungen mit Abhängigkeiten traten nicht zu Tage. Konfigurationsdateien diverser genutzter Pakete habe ich vorerst beibehalten und werde diese ggf. zu einem späteren Zeitpunkt gegenüber neuen Versionen vergleichen. Kritische Änderungen, die eine sofortige Aktion erfordern würden, gab es bei diesen nicht. Dies betraf vor allem Postfix und Dovecot, sodass der Mailserver auch weiterhin gewohnt seinen Dienst ohne direkten Eingriff verrichtet.
Apache und PHP kompiliere ich auf dem Server stets selbst, der Neueinstieg von OpenSSL 1.1 in Debian Stretch hat mir hier vor allem bei Apache das erste Problem beschert. Die kürzlich erschienene Apache Version 2.4.26 ist die erste, die OpenSSL 1.1 offiziell unterstützt – alles darunter führt zwangsläufig zu Frustrationen. Wichtig ist also, gleich die neuste Version zu wählen. Die aktuelle PHP Version 7.1.6 ist ebenfalls OpenSSL 1.1 kompatibel, auch wenn bei der Kompilierung noch einige Warnungen ausgespuckt werden. Die PHP Erweiterung curl erfordert zudem noch das Paket libcurl4-openssl-dev. Hier benötigt es dann noch einen Symlink, damit der Konfigurationsvorgang ohne Fehler durchläuft.
Das reguläre Upgrade auf Stretch betrifft vor allem bisherige Nutzer von MySQL, sofern die entsprechenden Debianpakete genutzt werden. Während des Upgrades findet dann ein automatischer Umstieg auf MariaDB statt. Mich hat dies nicht betroffen, da ich MySQL separat installiert habe. Die zugehörige MariaDB Library scheint zudem größtenteils MySQL-kompatibel zu sein, sodass sich auch Dovecot und Postfix daran nicht aufhängen. PHP nutzt über mysqlnd sowieso seine eigene MySQL-Library.
Der größte sichtbare Benefit mit dem Umstieg auf Debian Stretch war für mich die Möglichkeit, das HTTP/2 Modul des Apache Webservers zu aktivieren. Unter Debian Jessie war dies ohne Fallstricke nicht möglich, da die dortige OpenSSL Version und nötige libnghttp2 Bibliothek zu alt waren. Beides hat sich nun gelöst, sodass nach der Nachinstallation des libnghttp2-dev Pakets und anschließenden Kompilierung HTTP/2 final aktiviert werden konnte. Damit ist auch dieser letzte große Punkt auf der ToDo Liste verschwunden 🙂
Im Großen und Ganzen ist das Upgrade unter dem Strich also sehr weich verlaufen. Eine Neuinstallation hätte da weitaus mehr Zeit und Planung beansprucht. Auch wenn noch kleinere Nacharbeiten anstehen: der größte Teil ist geschafft und der Server damit für die nächste Zeit wieder auf dem aktuellsten Stand. Danke, liebes Debian Team!

Die Zukunft von MySQL ist eine spannende Angelegenheit

LAMP steht heutzutage noch für Linux, Apache, MySQL und PHP. Das „M“ könnte irgendwann einmal aber zu MariaDB werden, das die ursprüngliche Idee eines Open Source Business Modells weiterführt.
Oracle macht sich mit der Weiterentwicklung von MySQL in der letzten Zeit nicht gerade viele Freunde. Einige Linux Distributionen haben den Schritt schon gewagt und sind zu MariaDB gewechselt (wie einst von Open- zu LibreOffice – ja, auch hier war Oracle Stein des Anstoßes). Dass sich nun auch ein großer Hoster wie 1und1 zu Wort meldet, klingt in diesem Kontext nicht gerade uninteressant und könnte ein weiterer Puzzlestein in der Zukunftsgeschichte von MySQL darstellen. Gewiss, ein Ende von MySQL ist aktuell nicht in Sicht, aber mit MariaDB hat sich eine starke Alternative in Position gebracht, die ursprüngliche Stärken wieder aufleuchten lässt und auch transparenter wirkt. Die Frage liegt nun einmal mehr bei den Nutzern: wo liegt die Toleranzgrenze in Sachen MySQL und werden die Dominosteine der Webcommunity in absehbarer Zeit in Richtung MariaDB fallen?

Interessant ist auch ein Blogeintrag vom ursprünglichen MySQL-Gründer Monty (der sich nun für MariaDB stark macht) aus dem Jahre 2011. Dieser fasst zusammen, wieso das Open Source Modell viel eher zu MySQL passt – das sah im übrigen selbst Sun damals so.

Fleißiges MySQL-Bienchen

Bei der heutigen kurzen Server-Session sind mir über phpMyAdmin etwas zufällig Statistiken über den MySQL Server ins Auge gesprungen. Erstaunlich, wieviel Datenverkehr im täglichen Betrieb des MySQL Datenbankservers anfallen kann. In den letzten zwei Wochen sind gute 26 GiB an „internem“ Traffic angefallen.

MySQL Traffic
MySQL Traffic

Zum Vergleich: der Traffic, der über die Netzwerkschnittstelle anfällt, ist derzeit deutlich geringer. Das mag unter anderem an den täglichen Backups und den ganzen Anwendungen liegen, die mittlerweile den MySQL Server nutzen. Das ganze hat aber ausschließlich rein informativen Charakter, denn der Server hat noch gut lachen, wenn man die effektive Auslastung betrachtet.

Yella Entwicklung wieder aufgenommen

„Alle Versionen wieder kommt die Pausenzeit“ – das könnte man so ohne Zweifel unterschreiben. Nachdem die letzte Yella Version schon gefühlte Jahre alt ist, habe ich heute mit der Entwicklung der nächsten Version begonnen. Das Schöne ist, dass ein solches Hobbyprojekt immer dann da ist, wenn Bedarf danach besteht. Nach dem Beziehungsende vergangene Woche ist das eine tolle Möglichkeit, um etwas abzuschalten. Das Leben muss weitergehen – und die Entwicklung darf das ruhig auch. Die erste Änderung ist bereits in die Versionsverwaltung eingecheckt und auch eine der Tabellen wurde prompt mit einem Optimize zerschossen.

Zerschossene Tabelle
Zerschossene Tabelle

Glücklicherweise konnte ich diese kurzerhand per phpMyAdmin wieder von der produktiven Version in die Entwicklungsversion duplizieren. Bis zur endgültigen neuen Version gibt es noch viel zu tun, aber gerade bei einem Hobbyprojekt gilt: it’s done when it’s done – the most important thing is that it’s fun! 🙂

mysqlnd – ein Segen!

Auf mysqlnd bin ich ehrlich gesagt auch erst kürzlich durch eine Surftour auf php.net gestoßen. Ich habe mich heute dann aber relativ spontan dafür entschieden, PHP mit mysqlnd nochmals neu zu kompilieren. Neben dem Hauptvorteil, dass man nicht mehr auf die jeweils installierte MySQL Client Bibliothek kompilieren muss (yeah, keine Hinweise mehr!) hat es bei mir auch eine kleine Lästigkeit beseitigt. Obwohl ich als MySQL Socket Pfad /tmp/mysql.sock an allen möglichen Stellen angegeben hatte, haben einige wenige Skripte weiterhin in /var/run/mysqld danach gesucht. Nun gut, ein kleiner Link hat das ganze beseitigt, aber das war eher ein Workaround. Mit mysqlnd funktioniert die Sache nun ohne auch ohne, sehr schick.

MySQL bleibt weiterhin frei

Das die Übernahme von MySQL AB durch Sun eine gute Entscheidung für die Open Source Community war hat sich neulich bestätigt. Jonathan Schwarz, CEO von Sun, hat auf Anfrage klargestellt, das alle Veröffentlichungen von Sun unter einer Open Source Lizenz stehen. Zuvor hatte Marten Mickos, früher CEO bei MySQL AB und nun Teil von Suns Management ein neues Geschäftsmodell ins Spiel gebracht, das einige zusätzliche Komponenten von MySQL 6 nur noch proprietär verfügbar machen sollte.
Schon vor der Übernahme von MySQL AB durch Sun war eine verstärkte Trennung der Community-Version und der Enterprise-Version geplant gewesen. Welchen Weg die freie Version nun geht, wird sich mit MySQL 6 zeigen.

MySQL AB goes to Sun

Für einen angeblichen Betrag von etwa einer Milliarde US-Dollar übernimmt Sun die schwedische Datenbank-Firma MySQL AB. Die gleichnamige Datenbank wird oft in LAMP-Umgebungen (Linux, Apache, MySQL, PHP) genutzt und hat sich dort in den letzten Jahren zu der führenden Datenbank gemeistert.
Mit Sun dürfte in meinen Augen auch eine freundliche Lösung gefunden worden sein, steht hinter Sun doch keine geringere Firma, die mit Open Office und einem teilweise offen gelegten Java schon gezeigt hat, das für sie Open Source ein wichtiges Thema ist. Zuletzt kommen die größere Infrastruktur und auch die Partnerschaften, die Sun aufweisen kann, nun MySQL zugute. Letztendlich dürfte dieser Deal also auch allen MySQL Fans Vorteile bringen.

MySQL Server Informationen

Während ich fleißig mein neu erworbenes MySQL Buch verschlinge, entdecke ich ständig neue Details zu MySQL. Bisher war mir auch nicht aufgefallen, das der MySQL Server schöne Statistiken liefert, die zum Beispiel mit dem Kommandozeilenprogramm mysql oder mit phpMyAdmin angezeigt werden können. Der hier laufende MySQL Server (Version 5.0) lieferte unter anderem (die eigentliche Statistik ist wirklich sehr groß..) folgende Informationen, aufgerufen mit phpMyAdmin.

Dieser MySQL-Server läuft bereits 83 Tage, 10 Stunden, 17 Minuten und 42 Sekunden. Er wurde am 13. August 2007 um 05:41 gestartet.
Abfragestatistik: Seit seinem Start wurden 11,107,191 Abfragen an diesen MySQL-Server gesandt.
Traffic (insgesamt): 4,690 MiB

phpMyAdmin liefert zudem zu den ausgegebenen Werten auch sehr hilfreiche Beschreibungen die einen Hinweis darauf geben, ob der angegebene Wert zu hoch ist und noch Optimierungsbedarf besteht.
Die Statistiken liefern so auch einen guten Ansatz, MySQL passend  zu konfigurieren. Aber die richtige Konfiguration ist ein sehr umfangreiches Thema, damit habe ich mich ehrlich gesagt noch nicht ansatzweise beschäftigt.. 😉