Bitrix und aktualisiere MariaDB auf die neueste stabile Version

Guten Tag, liebe Chabrowitscher! Darf ich mich vorstellen, Alexander? Systemadministrator eines kleinen aber stolzen WEB-Studios. Wir möchten wirklich, dass alles schnell, sicher und mit frischer Software funktioniert. Zu diesem Zweck haben sie sogar eine Reihe von Nagios + PhantomJS auf dem Bürocomputer ausgelöst und alle 30 Minuten die Ladegeschwindigkeit der Seite überprüft. Gemäß den Nutzungsbedingungen folgen wir auch den Updates von 1C-Bitrix und installieren sie regelmäßig. Und einmal, nach dem nächsten Update, wird im Admin-Bereich eine Meldung angezeigt, dass 1C-Bitrix im Sommer 2019 nicht mehr mit MySQL 5.5 funktioniert und aktualisiert werden muss. Die Jungs von ISPSystem sehen gut aus und erweitern regelmäßig die Funktionalität des Panels, wofür sie sich besonders bedanken. Diesmal war es jedoch nicht möglich, mit der Maus zu klicken. Aber was passiert ist und wie viel graues Haar jetzt in meinem Bart ist, kann unter dem Schnitt gefunden werden.

Es gab nur eine Option zum Einfügen eines „alternativen DBMS-Servers“, der in den Docker-Container gestellt wird. Natürlich verstehe ich, dass Docker sehr ressourceneffizient ist, aber egal wie cool es funktioniert, der Overhead wird immer noch> 0 sein. Und hier kämpfen wir sozusagen in Zehntelsekunden und am Eingang optimieren wir alle Websites, bevor wir einen Vertrag veröffentlichen und unterschreiben. Das ist also nicht meine Option.
Ok, was steht in der Dokumentation? Fügen Sie insgesamt eine Datei mit einem Link zum MariaDB-Repository in yum.repos.d hinzu

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

Yum wird später verfluchen, dass jemand Pakete ohne sein Wissen entfernt / installiert hat. Aber erstens - lass es schwören, das ist okay. Und zweitens, wenn Sie das Löschen über yum durchführen, versucht er, mit MariaDB alles abzureißen, was damit zusammenhängt, und das sind PHP und ISPManager und PHPmyadmin. Deshalb werden wir uns mit Kritzeleien befassen.

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

Im Allgemeinen wurde alles eingerichtet und abgewickelt. Das Schöne ist, dass die Basen abgeholt wurden und es nicht nötig war, sie von Müllkippen wiederherzustellen. Ich habe die Websites überprüft - sie funktionieren und schnell. Ich ging ein paar Admin-Seiten durch, um sicherzustellen, dass nichts abfiel, und schrieb dem Regisseur, dass alles in Ordnung sei. In weniger als 30 Minuten stellte sich heraus, dass es überhaupt nicht in Ordnung ist ...

Beim Versuch, zum Admin-Bereich zu gehen und etwas hinzuzufügen / zu bearbeiten, ist eine Nachricht im Inhalt ausgefallen

 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 unsere Mitarbeiter der Website Inhalte hinzufügen, wussten die Kunden noch nichts und hatten noch nicht begonnen, uns auseinander zu reißen. Es war jedoch eine Frage der Zeit, da die Informationen auf den Websites aktualisiert werden müssen und dies viele Kunden selbst und genau verfolgen.

Aus dem Fehlertext können wir schließen, dass Bitrix versucht, der Datenbank einen neuen Datensatz hinzuzufügen, während derselbe Primärschlüssel angegeben wird, den der bearbeitete Artikel hatte. Es besteht also Grund zu der Annahme, dass das Problem auf der Seite von Bitrix auftritt. Wir gehen zu ihrer Website und wenden uns an den Support. Fast sofort erhalten wir die Antwort „ein schwieriges Problem. Hat es leitenden Ingenieuren gegeben - warte ... "

Ich musste lange warten (der gesamte Dialog fand vom 25.06.2019 bis zum 09.07.2019 statt) und das Ergebnis war die Meldung „Dieses Problem hängt nicht mit dem Betrieb des Bitrix CMS zusammen, sondern mit dem Betrieb der Datenbank selbst in Mariadb 10.4.6 und leider mit Auf der Seite der Site fehlt dieses Problem, um die Möglichkeit zu lösen. Es ist ein Upgrade auf die alte Version von MariaDB erforderlich.

Sie sind angekommen ... Ich habe am Anfang der Geschichte über das Downgrade nachgedacht, aber hier wird in Schwarzweiß gesagt, dass es kein Downgrade geben kann. Führen Sie Dumps zusammen und stellen Sie sie erneut auf einem sauber installierten Server bereit. Das heißt, Es ist gut, dass ich nicht alle Server gleichzeitig aktualisiert habe. Das heißt, "Nur" hundert Seiten (ein nervöses Lachen :-)). Sie sagten auch im Support: „Um das Problem bei Verwendung der MariaDB 10.4.6-Datenbank zu lösen, müssen Sie sich an den technischen Support von MariaDB wenden, damit die Transaktion den Datensatz nicht aus der Datenbank löscht, wenn die Anforderung gestellt wird:

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

Nadezhda hatte sich seit Beginn der Kommunikation mit dem MariaDB-Support ein paar Stunden lang erwärmt, aber dann kam ein Brief, in dem sie mir richtig sagten, dass ich kein kommerzieller Benutzer sei und daher niemand mein Problem absichtlich lösen würde, aber es gab ein Forum auf ihrer Website und Sie könnten versuchen, dort nach Optionen zu suchen ... Ich werde die Details nicht langweilen. Es gibt dort keine Optionen.
Oh! Wir haben eine Lizenz für ISP gekauft!
- Hallo, Unterstützung? Leute, hilf!
- Die Drecksäcke, die die native Version des DBMS ändern, werden leider nicht unterstützt. Möchten Sie - es gibt eine Option mit einem alternativen Server im Docker.
- 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 ändern wird und Sie alle Konfigurationen durchgehen und neu schreiben müssen.
- Ok, danke, ich werde denken ...
Ich dachte und beschloss, 10.4 mit Stiften abzureißen und 10.2 zu setzen, mit dem es auf anderen Servern keine Probleme gab.

Der Prozess unterschied sich nicht sehr vom Update-Prozess. Nur im Link zum Repository musste 10.4 in 10.2 geändert, der Cache für yum zurückgesetzt und neu erstellt werden. Nun noch eine Kleinigkeit: Gehen Sie nach dem Entfernen von 10.4 zu / var / lib / mysql und löschen Sie alles von dort. Ohne diesen Schritt wird der Dienst nach der Installation von 10.2 ständig unterbrochen und Sie werden 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 Importieren der Datenbanken habe ich zunächst das Root-Passwort für MySQL festgelegt, das in den ISP-Konfigurationen registriert wurde, und den MySQL-Datenbank-Dump importiert. Nun, da es bereits Benutzer und Rechte gibt, importieren wir einfach alle Benutzerbasen hintereinander mit dem Root-Konto.

Skripttext für Datenbankspeicherauszug:

 #!/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' 

Vor dem Importieren von Datenbanken müssen Sie diese entpacken. Führen Sie einfach den Befehl aus

 gunzip /BACK/*.gz 

Und das letzte: Aus irgendeinem Grund sind Bindestriche im Namen der Datenbanken zulässig (wenn Sie über ISPmanager erstellen). Wenn Sie jedoch den Speicherauszug erstellen oder versuchen, ihn mit einem Bindestrich im Namen in die Datenbank zu füllen, wird die Meldung angezeigt, dass die Abfragesyntax falsch ist.

Lesen Sie bis zum Ende aller Segnungen. Ich entschuldige mich für die wahrscheinlich nicht gesetzten Kommas - Probleme mit ihnen. Wenn es Wünsche / Vorschläge zum Wesen des Beschriebenen gibt, schreiben Sie eine persönliche Nachricht, weil ich Angst habe, etwas in den Kommentaren zu verpassen. Und schwöre nicht viel - das ist mein erster Artikel :-)

UPD1:

Fast hätte ich 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 in MyISAM konvertiert, die Informationen werden aktualisiert und anschließend wieder in InooDB konvertiert.
UPD2:

Von 1C-Bitrix ist gerade ein Brief mit folgendem Inhalt eingetroffen:
Revisionsantrag umgesetzt
"Nach dem Update von mariadb auf 10.4.6 ist beim Speichern des Infoblock-Elements ein Fehler aufgetreten."
Modul: iblock, Version: nicht bekannt
Lösung: Abgelehnt
Während es anscheinend unmöglich ist, auf 10.4 zu aktualisieren :-(

Source: https://habr.com/ru/post/de459795/


All Articles