Bitrix und Aktualisierung von MariaDB auf die neueste stabile Version

Guten Tag, liebe Chabrowiten! Erlauben Sie mir, mich vorzustellen, Alexander. Systemadministrator eines kleinen, aber stolzen WEB-Studios. Wir wollen wirklich, dass alles schnell, sicher und mit frischer Software funktioniert. Zu diesem Zweck haben wir sogar das Nagios + PhantomJS-Bundle auf dem bürointernen Computer hochgefahren und alle 30 Minuten die Seitenladegeschwindigkeit überprüft. Gemäß den Nutzungsbedingungen überwachen wir auch 1C-Bitrix-Updates und installieren diese regelmäßig. Und dann, eines Tages, nach dem nächsten Update, sehen wir im Admin-Panel eine Meldung, dass 2019C-Bitrix seit Sommer 1 nicht mehr mit MySQL 5.5 funktioniert und aktualisiert werden muss. Die Jungs von ISPSystem sind gutaussehend und erweitern regelmäßig die Funktionalität des Panels, wofür ihnen ein besonderer Dank gilt. Doch dieses Mal war es nicht möglich, alles mit der Maus anzuklicken. Aber was passiert ist und wie viele graue Haare sich mittlerweile in meinem Bart befinden, können Sie unter dem Schnitt nachlesen.

Es gab lediglich die Möglichkeit, einen „alternativen DBMS-Server“ zu installieren, der im Docker-Container installiert wird. Natürlich verstehe ich, dass Docker sehr sparsam mit Ressourcen umgeht, aber egal wie gut es funktioniert, der Overhead wird immer noch > 0 sein. Und hier kämpfen wir sozusagen in Zehntelsekunden und optimieren alle Standorte am Eingang, bevor wir eine Vereinbarung veröffentlichen und unterzeichnen. Also nicht meine Wahl.
Ok, was steht in der Dokumentation? Sichern Sie alles und fügen Sie dann eine Datei mit einem Link zum MariaDB-Repository zu yum.repos.d hinzu

rpm -e --nodeps MariaDB-server MariaDB-client MariaDB-common

Yum wird anschließend beschimpfen, dass jemand die Pakete ohne sein Wissen entfernt habe. Aber erstens – lass ihn schwören, es ist in Ordnung. Und zweitens, wenn Sie das Löschen über yum durchführen, versucht es zusammen mit MariaDB alles zu zerstören, was durch Abhängigkeiten damit zusammenhängt, und das sind PHP und ISPManager und PHPmyadmin. Wir kümmern uns also später um die Fehler.


yum clean all
yum update
yum install MariaDB-server MariaDB-client MariaDB-common

Im Allgemeinen wurde alles eingerichtet und gestartet. Das Schöne ist, dass die Basen abgeholt wurden und es nicht notwendig war, sie von Mülldeponien wiederherzustellen. Ich habe die Seiten überprüft - sie funktionieren und schnell. Ich ging zu ein paar Admin-Panels, um sicherzustellen, dass nichts herunterfiel, und meldete mich beim Direktor ab, dass alles in Ordnung sei. In weniger als 30 Minuten stellte sich heraus, dass es überhaupt nicht in Ordnung war ...

Als ich versuchte, zum Admin-Bereich zu gehen und etwas im Inhalt zu bearbeiten, wurde eine Meldung angezeigt

MySQL Query Error: INSERT INTO b_iblock_element_property (ID, IBLOCK_ELEMENT_ID, IBLOCK_PROPERTY_ID, VAL UE, VALUE_NUM) SELECT 10555 ,2201 ,P.ID ,'3607' ,3607.0000 FR OM b_iblock_property P WHERE ID = 184 [[1062] Duplicate entry '10555' for key 'PRIMARY']

Da die Inhalte auf der Website von unseren Mitarbeitern hinzugefügt werden, wussten die Kunden noch nichts und hatten noch nicht begonnen, uns auseinander zu bringen. Aber es war eine Frage der Zeit, denn die Informationen auf den Seiten müssen aktualisiert werden, und viele Kunden verfolgen dies sehr genau.

Aus dem Fehlertext können wir schließen, dass Bitrix versucht, einen neuen Datensatz zur Datenbank hinzuzufügen und dabei denselben Primärschlüssel angibt, den der bearbeitete Artikel hatte. Es besteht also Grund zu der Annahme, dass das Problem auf der Seite von Bitrix auftritt. Gehen Sie auf deren Website und wenden Sie sich an den Support. Fast sofort erhalten wir die Antwort „schwieriges Problem.“ An leitende Ingenieure übergeben - warten Sie ... "

Ich musste ziemlich lange warten (der gesamte Dialog fand vom 25.06.2019 bis zum 9.07.2019 statt) und das Ergebnis war die Meldung „Dieses Problem hängt nicht mit dem Betrieb des Bitrix CMS zusammen, sondern hängt damit zusammen.“ Aufgrund des Betriebs der Datenbank selbst in MariaDB 10.4.6 und da leider eine Seite der Website zur Lösung dieses Problems fehlt, wird eine Migration auf eine ältere Version von MariaDB erforderlich sein.“

Gesegelt ... Ich habe am Anfang der Geschichte über ein Downgrade nachgedacht, aber hier in Schwarz-Weißdass es kein Downgrade geben kann. Dumps zusammenführen und auf einem frisch installierten Server erneut bereitstellen. Diese. Es ist gut, dass ich nicht alle Server auf einmal aktualisiert habe. Diese. „nur“ hundert Seiten (nervöses Lachen :-)). Sie sagten auch zur Unterstützung: „Um das Problem bei der Verwendung der MariaDB 10.4.6-Datenbank zu lösen, müssen Sie sich an den technischen Support von MariaDB wenden, damit die Transaktion keinen Datensatz aus der Datenbank löscht, wenn eine Anfrage gestellt wird:

$DB->Query("DELETE FROM ".$strTable." WHERE ID = ".$res["ID"]);
$results = $DB->Query("SELECT * FROM ".$strTable." WHERE ID = ".$res["ID"]);”

Von dem Moment an, als wir begannen, mit dem MariaDB-Support zu kommunizieren, keimte für ein paar Stunden Hoffnung auf, doch dann erhielt ich einen Brief, in dem mir äußerst korrekt mitgeteilt wurde, dass ich kein kommerzieller Benutzer sei und daher niemand mein Problem gezielt lösen würde, aber es gibt ein Problem Ein Forum auf ihrer Website und Sie können versuchen, dort nach Optionen zu suchen … Ich werde Sie nicht mit Details langweilen. Da gibt es keine Optionen.
UM! Wir haben eine Lizenz für ISP erworben!
Hallo, Support? Leute, helft!
- Leider unterstützen wir keine Kriminellen, die native Versionen des DBMS ändern. Wenn Sie möchten, gibt es im Docker eine Option mit einem alternativen Server.
- Aber wie kommen Benutzer und Datenbanken dorthin? Zum Docker?
- Nun, du ziehst sie mit deinen Händen dorthin ...
- Ja! Und vergessen Sie nicht, dass sich der Port für MySQL ändert und Sie alle Konfigurationen durchgehen und neu schreiben müssen.
Ok, danke, ich werde darüber nachdenken...
Ich dachte nach und beschloss, 10.4 mit Griffen abzureißen und 10.2 zu installieren, mit dem es auf anderen Servern keine Probleme gab.

Der Prozess unterschied sich nicht wesentlich vom Upgrade-Prozess. Es war lediglich erforderlich, im Link zum Repository 10.4 auf 10.2 zu ändern, den Cache für yum zurückzusetzen und neu zu erstellen. Nun, noch eine „Kleinigkeit“: Nachdem wir 10.4 entfernt haben, gehen wir zu /var/lib/mysql und löschen alles von dort. Ohne diesen Schritt stürzt der Dienst nach der Installation von 10.2 ständig ab und Sie werden es sehen

Не удалось подключиться к базе данных '' Lost connection to MySQL server at 'reading initial communication packet', system error: 104 "Connection reset by peer"

Oder

Lost connection to MySQL server at 'handshake: reading inital communication packet', system error: 104

Vor dem Import der Datenbanken habe ich zunächst das MySQL-Root-Passwort festgelegt, das in den ISP-Konfigurationen angegeben wurde, und den MySQL-Datenbank-Dump importiert. Nun, da ja bereits Benutzer und Rechte vorhanden sind, importieren wir einfach alle Benutzerdatenbanken nacheinander mit dem Root-Konto.

Skripttext für Datenbank-Dump:

#!/bin/bash
echo 'show databases' | mysql -u root --password="ПаРоЛь_РУТА" --skip-column-names | grep -v information_schema | xargs -I {} -t bash -c 'mysqldump -u root --password="ПаРоЛь_РУТА" {} | gzip > /BACK/back-$(hostname)-{}-$(date +%Y-%m-%d-%H.%M.%S).sql.gz'

Bevor Sie Datenbanken importieren, müssen Sie diese entpacken. Führen Sie also einfach den Befehl aus

gunzip /BACK/*.gz

Und das Letzte: Aus irgendeinem Grund sind Bindestriche in Datenbanknamen erlaubt (wenn Sie sie mit ISPmanager erstellen). Wenn Sie jedoch einen Dump erstellen oder versuchen, ihn in eine Datenbank hochzuladen, deren Name einen Bindestrich enthält, erhalten Sie eine Meldung, dass die Abfragesyntax falsch ist.

Lesen Sie alle Segnungen bis zum Ende durch. Ich entschuldige mich für die höchstwahrscheinlich nicht getrennten Kommas – sie sind in Schwierigkeiten. Wenn Wünsche zu einem im Wesentlichen beschriebenen Vorschlag vorhanden sind, schreiben Sie uns persönlich, da ich Angst habe, in den Kommentaren etwas zu verpassen. Und fluche nicht zu viel – das ist mein erster Artikel 🙂

UPD1:

Ich hätte fast vergessen zu erwähnen: Während ich versuchte, eine Lösung für das Problem zu finden, ohne MariaDB herunterzustufen, musste ich die Informationen irgendwie aktualisieren. Es wurde wie folgt aktualisiert: Die gesamte Datenbank wird von InnoDB nach MyISAM konvertiert, infa wird aktualisiert und dann zurück in InooDB konvertiert.
UPD2:

Ich habe gerade einen Brief von 1C-Bitrix mit folgendem Inhalt erhalten:

Überarbeitungsanfrage abgeschlossen
„Nach dem Update von Mariadb auf 10.4.6 ist beim Speichern des Infoblock-Elements ein Fehler aufgetreten.“
Modul: iblock, Version: unbekannt
Lösung: abgelehnt

Ein Update auf 10.4 ist also vorerst offenbar nicht möglich 🙁

Source: habr.com

Kommentar hinzufügen