{"id":1277,"date":"2024-06-02T13:25:06","date_gmt":"2024-06-02T11:25:06","guid":{"rendered":"https:\/\/www.krombusch.de\/?p=1277"},"modified":"2024-06-02T22:58:09","modified_gmt":"2024-06-02T20:58:09","slug":"fallstricke-migration-ubuntu-20-04-auf-24-04-mit-plesk","status":"publish","type":"post","link":"https:\/\/www.krombusch.de\/?p=1277","title":{"rendered":"Fallstricke Migration Ubuntu 20.04 auf 24.04 mit Plesk"},"content":{"rendered":"<p>Eine \u00e4ltere VM (Virtuozzo, lcx) soll auf eine neue VM (KVM) umgestellt werden. Die alte VM wird als Source, die neue als Target bezeichnet.\u00a0 Zum Umzug wird PLESK verwendet (Plesk Obsidian 18.0.61, Admin-Edition auf beiden VMs).<\/p>\n<p>&nbsp;<\/p>\n<p><!--more--><\/p>\n<p>Eine philosophische Betrachtung \u00fcber Ubuntu und Snap erfolgt nicht, da der Server einfach nur stabil und m\u00f6glichst bis zum Ende des neuen LTS laufen soll.<\/p>\n<p>Auf Quell- und Zielsystem sind dieselben Major-Release von MariaDB, Apache, php &#8230; vorhanden. Beim Datenbankdienst werden durch Einf\u00fcgen der Zeile &#8222;innodb_strict_mode=OFF&#8220; in der my.cnf un\u00f6tige Schwierigkeiten im Vorfeld minimiert. Nicht benutzte Module und Extensions schaltet man auf beiden Systemen ebenfalls vorher ab.<\/p>\n<p>Den Migrationsassistent startet man auf dem Target gestartet, er verbindet sich dann per ssh auf den Source. Die eigentliche Arbeit (Backups, rsync&#8230;) wird auf dem Source ausgef\u00fchrt.<\/p>\n<p>Folgende Fallstricke sind mit begegnet:<\/p>\n<p>Beim ersten Versuch kam die Meldung, dass nicht gen\u00fcgend Speicherplatz auf dem Source zur Verf\u00fcgung stand. Der Migrationsassistent ben\u00f6tigt hier ein tempor\u00e4res Verzeichnis, in das er die mysql-dumps usw. legen kann. Deshalb habe ich ein per NFS freigegebenes Verzeichnisse von einem dritten Server (30-Tage-Test, prinzipiell ginge auch der Target) als tempor\u00e4res Verzeichnis eingestellt und den Vorgang nochmal gestartet. Und nach einiger Zeit wieder abgebrochen. NFS ist bei sowas qu\u00e4lend langsam.<\/p>\n<p>Deshalb wurde der Mount sshfs gemacht, weil scp hier wesentlich flotter geht und das Verzeichnis auch nicht durch ein Locking sperrt, wenn man dem Fortschritt auf der Konsole zuschauen will.<\/p>\n<p>Der Assistent macht dann erstmal einen Vorbereitungslauf. Da kam es bei mit sofort zu einem Parser-Fehler im Skript <em>database_utils.py<\/em> auf dem Source. Dieser konnte schnell behoben werden, indem die Zeilen 450 und 2006 im Datenbankskript auf dem Source angepasst und die Methoden mit Klammern versehen wurden. Ist in neueren Version von Plesk wahrscheinlich schon angepasst.<\/p>\n<p class=\"p1\"><span class=\"s1\">450: if<\/span><span class=\"s2\"> server.host<strong>()<\/strong> == <\/span><span class=\"s3\">&#8218;localhost&#8216;<\/span> <span class=\"s1\">and<\/span><span class=\"s2\"> server.port<strong>()<\/strong> == <\/span><span class=\"s3\">3306<\/span><span class=\"s2\">:<\/span><\/p>\n<p><a href=\"https:\/\/www.krombusch.de\/?attachment_id=1279\" rel=\"attachment wp-att-1279\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1279\" src=\"https:\/\/www.krombusch.de\/wp-content\/uploads\/2024\/06\/py-klammer.png\" alt=\"\" width=\"1932\" height=\"878\" srcset=\"https:\/\/www.krombusch.de\/wp-content\/uploads\/2024\/06\/py-klammer.png 1932w, https:\/\/www.krombusch.de\/wp-content\/uploads\/2024\/06\/py-klammer-300x136.png 300w, https:\/\/www.krombusch.de\/wp-content\/uploads\/2024\/06\/py-klammer-1024x465.png 1024w, https:\/\/www.krombusch.de\/wp-content\/uploads\/2024\/06\/py-klammer-768x349.png 768w, https:\/\/www.krombusch.de\/wp-content\/uploads\/2024\/06\/py-klammer-1536x698.png 1536w, https:\/\/www.krombusch.de\/wp-content\/uploads\/2024\/06\/py-klammer-1530x695.png 1530w\" sizes=\"auto, (max-width: 1932px) 100vw, 1932px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>N\u00e4chster Versuch, n\u00e4chster Fehler:<\/p>\n<p><em>command: mysql &#8211;defaults-file=\/mnt\/plesk\/plesk_migrator-4iy5ebz7jxfuotryw35m5ewk3k8nwiwh\/my_localhost_secure_auth_check.cnf &#8211;silent &#8211;skip-column-names -h localhost -P 3306 -e &#8218;SHOW VARIABLES LIKE &#8218;&#8220;&#8218;&#8220;&#8218;innodb_strict_mode'&#8220;&#8218;&#8220;&#8220; exit code: 2 stdout: stderr: mysql: unknown option &#8218;&#8211;&#8220;<\/em><\/p>\n<p>Das mysql-Programm sagt hier vordergr\u00fcndig, dass es die erste Option &#8222;-defaults-file..&#8220; nicht kennt. Laut Doku gibt es diese aber in der verwendeten MariaDB-Version. Die L\u00f6sung war, dass das im Datenbankskript <em>database_utils.py <\/em>aufgerufenen mysql-Programm nicht auf die von dem unter root laufenden Plesk-Prozess angelegte Datei\u00a0 my_localhost_secure_auth_check.cnf zugreifen konnte. (Rechte rw-,&#8212;,&#8212;).<\/p>\n<p>Ich h\u00e4tte also vor dem Aufruf noch ein chmod ins Python-Skript einbauen m\u00fcssen, habe mich aber stattdessen f\u00fcr eine sehr gro\u00dfz\u00fcgige umask beim Mount entschieden. Wer wei\u00df, was da sonst noch alles schiefgehen kann&#8230;<\/p>\n<p># umount \/mnt\/plesk<\/p>\n<p>#\u00a0<span class=\"s1\">sshfs -o <strong>umask=000<\/strong> root@hilfsserver.expample:\/var\/share_for_plesk \/mnt\/plesk<\/span><\/p>\n<p>Dadurch werden im n\u00e4chsten Versuch alle Dateien vom Migrators im tempor\u00e4ren Verzeichnis mit den Rechten 777 angelegt. Was aber nicht gef\u00e4hrlich ist, da das Verzeichnis ja nicht anderweitig freigegeben ist und auf dem Hilfsserver nichts anderes lief.<\/p>\n<p class=\"p1\">Nach ein paar Stunden war das Ganze dann aber erfreulicherweise fehlerfrei durchgelaufen.<\/p>\n<p>Beim Umstellen der DNS-Eintr\u00e4ge von der IP des Source auf die des Target sollte ggf. mal der Hotspot am Handy eingeschaltet werden, weil Router und Betriebssystem gerne IPs chachen.<\/p>\n<p>Ein letzter Stolperstein: Nach einiger Zeit konnte ich den neuen Server nur noch pingen, aber keine Dienste erreichen. Die Firewall hatte ich zu dem Zeitpunkt aber noch gar nicht aktiviert. Im Notfallsystem des Hosters war er auch per Konsole erreichbar, ebenso \u00fcber den Hotspot. L\u00f6sung: Plesk hatte sich auf dem Target durch meine ganzen Konfigurationsarbeiten wohl bel\u00e4stigt gef\u00fchlt und meine IP in die Banned-Liste aufgenommen. Meine G\u00fcte!<\/p>\n<p>Ein einfacher Umzug geht irgendwie anders&#8230; aber ganz unkomplex ist das ja nun auch nicht. Insofern keine schlechte Software, dieser Migrationsassistent.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine \u00e4ltere VM (Virtuozzo, lcx) soll auf eine neue VM (KVM) umgestellt werden. Die alte VM wird als Source, die [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1277","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/posts\/1277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1277"}],"version-history":[{"count":5,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/posts\/1277\/revisions"}],"predecessor-version":[{"id":1283,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=\/wp\/v2\/posts\/1277\/revisions\/1283"}],"wp:attachment":[{"href":"https:\/\/www.krombusch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.krombusch.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}