Kurz und gut – Episode #21 Zeit für was Neues? Der Upgrade Checker der MySQL Shell
In meinem letzten Seminar wurde ich gefragt, wie man MySQL Datenbanken am besten aktualisiert (upgraded), bzw. ob man im Vorfeld prüfen kann, ob ein Upgrade ggf. Probleme machen kann.
Das Problem
Ein Upgrade einer Datenbank birgt immer die Gefahr, dass sich die neue Version anders verhält als das Vorgänger-Release. So bekommen z. B. bestimmte Konfigurationseinstellungen neue Default-Werte oder genutzte Funktionalitäten werden gar nicht mehr unterstützt. Kann man dies im Vorfeld prüfen, ohne die neuen „Release-Notes“ vollständig zu lesen?
Die Lösung
Man kann! Die MySQL Shell bringt das sogenannte "Upgrade Checker Utility" mit, welches genau für diesen Anwendungszweck konzipiert wurde. Dabei ist es wichtig zu beachten, dass die MySQL Shell in der Version installiert werden muss, welche der Zielversion der Datenbank entspricht.
In unserem kleinen Testszenario wollen wir überprüfen, ob wir unseren MySQL-Server von der Version 8.0.36 auf die Version 8.4.0 aktualisieren könnten.
Dazu bauen wir mit der Shell (in der Version 8.4.0) eine Verbindung zu unserem Server „DBSrv“ (in der Version 8.0.36) auf.
bash-5.1# mysqlsh root:root@DBSrv Cannot set LC_ALL to locale en_US.UTF-8: No such file or directory MySQL Shell 8.4.0 Copyright (c) 2016, 2024, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type '\help' or '\?' for help; '\quit' to exit. WARNING: Using a password on the command line interface can be insecure. Creating a Classic session to 'root@DBSrv' Fetching global names for auto-completion... Press ^C to stop. Your MySQL connection id is 14 Server version: 8.0.36 MySQL Community Server - GPL No default schema selected; type \use <schema> to set one. MySQL DBSrv:3306 ssl SQL >
Der Aufruf der Upgrade-Checker ist trivial. Hierfür ist nur ein einziger Methoden-Aufruf notwendig. Dies erledigen wir im JS-Modus der Shell:
MySQL DBSrv:3306 ssl JS > \js MySQL DBSrv:3306 ssl JS > util.checkForServerUpgrade('root:root@DBSrv:3306', {'targetVersion': '8.4'}) The MySQL server at DBSrv:3306, version 8.0.36 - MySQL Community Server - GPL, will now be checked for compatibility issues for upgrade to MySQL 8.4.0. 1) Removed system variables (removedSysVars) No issues found 2) System variables with new default values (sysVarsNewDefaults) Warning: Following system variables that are not defined in your configuration file will have new default values. Please review if you rely on their current values and if so define them before performing upgrade. More information: https://dev.mysql.com/blog-archive/new-defaults-in-mysql-8-0/ binlog_transaction_dependency_tracking - default value will change from COMMIT_ORDER to WRITESET. group_replication_consistency - default value will change from <Ausgabe wurde hier gekürzt> innodb_redo_log_capacity - default value will change from 104857600 (100MB) to MIN ( #vcpu/2, 16 )GB. 3) Issues reported by 'check table x for upgrade' command (checkTableCommand) No issues found 4) Check for deprecated or invalid user authentication methods. (authMethodUsage) No issues found 5) Check for deprecated or removed plugin usage. (pluginUsage) No issues found 6) Check for deprecated or invalid default authentication methods in system variables. (deprecatedDefaultAuth) No issues found 7) Check for deprecated or invalid authentication methods in use by MySQL Router internal accounts. (deprecatedRouterAuthMethod) No issues found 8) Checks for errors in column definitions (columnDefinition) No issues found 9) Check for allowed values in System Variables. (sysvarAllowedValues) No issues found 10) Checks for user privileges that will be removed (invalidPrivileges) Verifies for users containing grants to be removed, since privileges are removed as part of the upgrade, raises a NOTICE to inform the user about users that will be losing invalid privileges 'root'@'%' - The user 'root'@'%' has the following privileges that will be removed as part of the upgrade process: SET_USER_ID 'root'@'localhost' - The user 'root'@'localhost' has the following privileges that will be removed as part of the upgrade process: SET_USER_ID 11) Checks for partitions by key using columns with prefix key indexes (partitionsWithPrefixKeys) No issues found Errors: 0 Warnings: 20 Notices: 2 NOTE: No fatal errors were found that would prevent an upgrade, but some potential issues were detected. Please ensure that the reported issues are not significant before upgrading.
Fazit
Die MySQL Shell ist ein vielseitiges Tool. Besonders nützlich ist das Upgrade Checker Utility, das überprüft, ob Ihr MySQL-Server für ein Upgrade bereit ist. Es entdeckt Kompatibilitätsprobleme, behebt diese jedoch nicht – das bleibt Ihre Aufgabe. Im Gegensatz zu anderen Tools geht der Upgrade Checker jedoch sehr tief in die Analyse und deckt die wesentlichen Fragestellungen auf.
Sie haben Fragen rund um den Betrieb von MySQL, MariaDB und Co? Sprechen Sie uns an.
Seminarempfehlung
MYSQL ADMINISTRATION DB-MY-01
Mehr erfahrenPrincipal Consultant bei ORDIX
Bei Updates im Blog, informieren wir per E-Mail.
Kommentare