Bitrix e aggiornamento di MariaDB all'ultima versione stabile

Buona giornata, cari Khabroviti! Permettimi di presentarmi, Alessandro. Amministratore di sistema di un piccolo ma fiero studio WEB. Vogliamo davvero che tutto funzioni in modo rapido, sicuro e con un nuovo software. Per fare ciò, abbiamo persino aumentato il bundle nagios + PhantomJS sul computer interno all'ufficio e ogni 30 minuti controlliamo la velocità di caricamento della pagina. Secondo i termini di servizio, monitoriamo anche gli aggiornamenti 1C-Bitrix e li installiamo regolarmente. E poi un giorno, dopo il prossimo aggiornamento, vediamo un messaggio nel pannello di amministrazione che afferma che dall'estate del 2019, 1C-Bitrix smette di funzionare con MySQL 5.5 e deve essere aggiornato. I ragazzi di ISPSystem sono belli e ampliano regolarmente le funzionalità del pannello, per cui un ringraziamento speciale a loro. Ma questa volta non è stato possibile cliccare tutto con il mouse. Ma cosa è successo e quanti capelli grigi ci sono ora nella mia barba si possono trovare sotto il taglio.

C'era solo un'opzione per installare un "server DBMS alternativo" installato nel contenitore Docker. Ovviamente, capisco che Docker sia molto parsimonioso con le risorse, ma non importa quanto funzioni bene, l'overhead sarà comunque > 0. Ed eccoci qui, per così dire, a combattere in decimi di secondo e ad ottimizzare tutti i siti all'ingresso prima di pubblicare e firmare un accordo. Quindi non è stata una mia scelta.
Ok, cosa c'è nella documentazione? Esegui il backup di tutto, aggiungi un file con un collegamento al repository MariaDB su yum.repos.d, quindi

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

Yum giurerà successivamente sul fatto che qualcuno ha rimosso i pacchi a sua insaputa. Ma prima, lascialo giurare, va bene. E in secondo luogo, se esegui la cancellazione tramite yum, allora cerca di demolire, insieme a MariaDB, tutto ciò che è correlato ad esso dalle dipendenze, e questo è PHP e ISPManager e PHPmyadmin. Quindi ci occuperemo dei bug più tardi.


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

In generale, tutto è stato impostato e avviato. La cosa bella è che le basi sono state ritirate e non è stato necessario ripristinarle dalle discariche. Ho controllato i siti: funzionano e velocemente. Sono andato a un paio di pannelli di amministrazione per assicurarmi che nulla fosse caduto e ho annullato l'iscrizione al direttore che tutto andava bene. In meno di 30 minuti, si è scoperto che non andava nemmeno bene...

Quando ho provato ad andare al pannello di amministrazione e aggiungere qualsiasi modifica nel contenuto, è caduto un messaggio

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']

Poiché il contenuto del sito viene aggiunto dai nostri dipendenti, i clienti non sapevano ancora nulla e non avevano ancora iniziato a separarci. Ma era una questione di tempo, perché le informazioni sui siti devono essere aggiornate e molti clienti lo seguono molto da vicino.

Dal testo dell'errore, possiamo concludere che Bitrix sta cercando di aggiungere un nuovo record al database, specificando la stessa chiave primaria che aveva l'articolo in modifica. Quindi c'è motivo di sospettare che il problema si verifichi dalla parte di Bitrix. Vai al loro sito Web e contatta l'assistenza. Quasi immediatamente otteniamo la risposta “problema difficile. L'ho dato agli ingegneri senior - aspetta ... "

Ho dovuto attendere parecchio tempo (l'intero dialogo è avvenuto dal 25.06.2019/9.07.2019/10.4.6 al XNUMX/XNUMX/XNUMX) e il risultato è stato il messaggio “questo problema non è legato al funzionamento del CMS Bitrix, ma è legato al funzionamento del database stesso in mariadb XNUMX e, purtroppo, con il lato del sito che manca la possibilità di risolvere questo problema, sarà necessario migrare alla vecchia versione di MariaDB.”

Navigato ... ho pensato al downgrade all'inizio della storia, ma qui in bianco e neroche non ci può essere downgrade. Unisci dump e ridistribuisci su un server appena installato. Quelli. è positivo che non abbia aggiornato tutti i server contemporaneamente. Quelli. “solo” un centinaio di siti (risatina nervosa :-)). Hanno anche detto a supporto: "Per risolvere il problema quando si utilizza il database MariaDB 10.4.6, sarà necessario contattare il supporto tecnico MariaDB che la transazione non eliminerà un record dal database se viene effettuata una richiesta:

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

La speranza è balenata per un paio d'ore dal momento in cui abbiamo iniziato a comunicare con il supporto di MariaDB, ma poi ho ricevuto una lettera in cui ero informato in modo estremamente corretto che non ero un utente commerciale e quindi nessuno avrebbe risolto di proposito il mio problema, ma c'è un forum sul loro sito Web e puoi provare a cercare le opzioni lì ... non ti annoierò con i dettagli. Non ci sono opzioni lì.
DI! Abbiamo acquistato una licenza per ISP!
Ciao, supporto? Ragazzi, aiuto!
- Siamo spiacenti, non supportiamo teppisti che modificano le versioni native del DBMS. Se vuoi, c'è un'opzione con un server alternativo nella finestra mobile.
- Ma come ci arriveranno utenti e database? Al docker?
- Beh, li trascini lì con le mani ...
- SÌ! E non dimenticare che la porta per mysql cambierà e dovrai riscrivere tutte le configurazioni.
Ok grazie ci penserò...
Ho pensato e deciso di demolire 10.4 con handle e installare 10.2 con cui non ci sono stati problemi su altri server.

Il processo non era molto diverso dal processo di aggiornamento. Solo era necessario modificare da 10.4 a 10.2 nel collegamento al repository, ripristinare e ricreare la cache per yum. Bene, un'altra "sciocchezza": dopo aver rimosso 10.4, andiamo in /var/lib/mysql ed eliminiamo tutto da lì. Senza questo passaggio, dopo aver installato 10.2, il servizio si bloccherà costantemente e vedrai

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

O

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

Prima di importare i database, ho prima impostato la password di root mysql specificata nelle configurazioni dell'ISP e ho importato il dump del database mysql. Bene, allora, poiché ci sono già utenti e diritti, importiamo semplicemente tutti i database degli utenti di seguito con l'account root.

Testo dello script per il dump del database:

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

Prima di importare i database, è necessario decomprimerli. Quindi basta eseguire il comando

gunzip /BACK/*.gz

E l'ultima cosa: per qualche motivo, i trattini sono consentiti nei nomi dei database (se li crei utilizzando ISPmanager). Tuttavia, quando si crea o si tenta di caricare un dump in un database con un trattino nel nome, si riceve un messaggio che indica che la sintassi della query non è corretta.

Leggi fino alla fine di tutte le benedizioni. Mi scuso per le virgole molto probabilmente non spaziate: sono nei guai. Se ci sono desideri per una proposta essenzialmente descritta, scrivi in ​​\uXNUMXb\uXNUMXbpersonale perché nei commenti ho paura di perdere qualcosa. E non giurare troppo: questo è il mio primo articolo 🙂

UPD1:

Quasi dimenticavo di menzionare: mentre cercavo di trovare una soluzione al problema senza effettuare il downgrade di MariaDB, ho dovuto in qualche modo aggiornare le informazioni. È stato aggiornato in questo modo: l'intero database viene convertito da InnoDB a MyISAM, infa viene aggiornato e quindi riconvertito in InooDB.
UPD2:

Ho appena ricevuto una lettera da 1C-Bitrix con il seguente contenuto:

Richiesta di revisione completata
"Dopo aver aggiornato mariadb alla 10.4.6, si è verificato un errore durante il salvataggio dell'elemento infoblock"
Modulo: iblock, versione: sconosciuta
Soluzione: respinta

Quindi per ora, a quanto pare, è impossibile aggiornare alla 10.4 🙁

Fonte: habr.com

Aggiungi un commento