4 Minuten Lesezeit (750 Worte)

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

Principal Consultant bei ORDIX

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Sonntag, 17. November 2024

Sicherheitscode (Captcha)

×
Informiert bleiben!

Bei Updates im Blog, informieren wir per E-Mail.