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!](https://www.thexme.de/wp-content/uploads/2018/04/mysql-8.0-upgrade-300x113.png)
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 🙂