Bitrix i actualitzant MariaDB a la darrera versió estable

Bon dia, estimats Khabrovites! Permeteu-me que em presenti, Alexander. Administrador del sistema d'un estudi WEB petit però orgullós. Volem que tot funcioni de manera ràpida, segura i amb un programari nou. Per fer-ho, fins i tot vam augmentar el paquet nagios + PhantomJS a l'ordinador de l'oficina i vam comprovar la velocitat de càrrega de la pàgina cada 30 minuts. D'acord amb les condicions del servei, també supervisem les actualitzacions d'1C-Bitrix i les instal·lem regularment. I un dia, després de la següent actualització, veiem un missatge al tauler d'administració que indica que des de l'estiu de 2019, 1C-Bitrix deixa de funcionar amb MySQL 5.5 i s'ha d'actualitzar. Els nois d'ISPSystem són guapos i amplien regularment la funcionalitat del panell, per la qual cosa els agraïm especialment. Però aquesta vegada no ha estat possible fer clic a tot amb el ratolí. Però el que va passar i quants pèls grisos hi ha ara a la meva barba es pot trobar sota el tall.

Només hi havia una opció per instal·lar un "servidor DBMS alternatiu" que està instal·lat al contenidor Docker. Per descomptat, entenc que Docker és molt frugal amb els recursos, però per molt que funcioni, la sobrecàrrega encara serà > 0. I aquí estem, per dir-ho, lluitant en dècimes de segons i optimitzant tots els llocs de l'entrada abans de publicar i signar un acord. Així que no és la meva elecció.
D'acord, què hi ha a la documentació? Feu una còpia de seguretat de tot, afegiu un fitxer amb un enllaç al repositori MariaDB a yum.repos.d i després

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

Yum posteriorment jurarà el fet que algú va treure els paquets sense el seu coneixement. Però en primer lloc, deixeu-lo jurar que està bé. I en segon lloc, si feu l'eliminació mitjançant yum, aleshores s'intenta enderrocar, juntament amb MariaDB, tot el que s'hi relaciona per dependències, i això és PHP i ISPManager i PHPmyadmin. Així que tractarem els errors més endavant.


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

En general, tot estava configurat i començat. El bo és que es van recollir les bases i no va ser necessari restaurar-les dels abocadors. Vaig comprovar els llocs: funcionen i ràpidament. Vaig anar a un parell de taulers d'administració per assegurar-me que no caigués res i vaig cancel·lar la subscripció al director que tot estava bé. En menys de 30 minuts, va resultar que ni tan sols estava bé...

Quan vaig intentar anar al tauler d'administració i afegir qualsevol edició del contingut, va caure un missatge

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

Com que el contingut del lloc és afegit pels nostres empleats, els clients encara no sabien res i encara no havien començat a desfer-nos. Però era qüestió de temps, perquè la informació dels llocs s'havia d'actualitzar, i molts clients ho segueixen molt de prop.

Del text de l'error, podem concloure que Bitrix està intentant afegir un nou registre a la base de dades, tot especificant la mateixa clau primària que tenia l'article que s'està editant. Per tant, hi ha raons per sospitar que el problema es produeix al costat de Bitrix. Aneu al seu lloc web i contacteu amb l'assistència. Gairebé immediatament obtenim la resposta "problema difícil. Donat als enginyers sèniors: espereu... "

Vaig haver d'esperar força temps (tot el diàleg va tenir lloc del 25.06.2019/9.07.2019/10.4.6 al XNUMX/XNUMX/XNUMX) i el resultat va ser el missatge "aquest problema no està relacionat amb el funcionament del CMS Bitrix, sinó que està relacionat al funcionament de la pròpia base de dades a mariadb XNUMX i, malauradament, amb un costat del lloc per resoldre aquest problema, caldrà migrar a una versió anterior de MariaDB.

Navegat... Vaig pensar en baixar de categoria al principi de la història, però aquí en blanc i negreque no hi pot haver cap rebaixa. Combina abocaments i torna a desplegar en un servidor recentment instal·lat. Aquells. és bo que no hagi actualitzat tots els servidors alhora. Aquells. "només" un centenar de llocs (riu nerviosa :-)). També van dir en suport: "Per resoldre el problema quan utilitzeu la base de dades MariaDB 10.4.6, haureu de contactar amb l'assistència tècnica de MariaDB perquè la transacció no suprimirà un registre de la base de dades si es fa una sol·licitud:

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

L'esperança va brillar durant un parell d'hores des del moment en què vam començar a comunicar-nos amb el suport de MariaDB, però aleshores vaig rebre una carta en la qual m'informava molt correctament que no era un usuari comercial i, per tant, ningú resoldria el meu problema a propòsit, però hi ha un fòrum al seu lloc web i pots provar de buscar-hi opcions... No t'avorriré amb detalls. No hi ha opcions allà.
SOBRE! Hem comprat una llicència per a ISP!
Hola, suport? Nois, ajuda!
- Ho sentim, no admetem els matones que canvien les versions natives del SGBD. Si voleu, hi ha una opció amb un servidor alternatiu a Docker.
- Però com arribaran els usuaris i les bases de dades? Per acoblar?
- Bé, els arrossegueu allà amb les mans...
- Sí! I no oblideu que el port de mysql canviarà i haureu de revisar i reescriure totes les configuracions.
D'acord, gràcies, m'ho pensaré...
Vaig pensar i vaig decidir enderrocar la 10.4 amb nanses i instal·lar la 10.2 amb la qual no hi havia problemes en altres servidors.

El procés no era gaire diferent del procés d'actualització. Només calia canviar 10.4 a 10.2 a l'enllaç al repositori, restablir i tornar a crear la memòria cau per yum. Bé, una mica més: després d'eliminar la 10.4, anem a /var/lib/mysql i suprimim tot d'allà. Sense aquest pas, després d'instal·lar la 10.2, el servei es bloquejarà constantment i ho veureu

Не удалось подключиться к базе данных '' 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

Abans d'importar les bases de dades, primer vaig establir la contrasenya d'arrel mysql que s'especificava a les configuracions de l'ISP i vaig importar l'abocament de la base de dades mysql. Bé, doncs, com que ja hi ha usuaris i drets, simplement importem totes les bases de dades d'usuaris seguides amb el compte root.

Text de l'script per a l'abocament de la base de dades:

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

Abans d'importar bases de dades, cal descomprimir-les. Així que només executeu l'ordre

gunzip /BACK/*.gz

I l'últim: per alguna raó, els guions estan permesos als noms de bases de dades (si els creeu amb ISPmanager). Però quan es crea o s'intenta carregar un bolcat a una base de dades que té un guionet al nom, rebrà un missatge que la sintaxi de la consulta és incorrecta.

Llegiu fins al final de totes les benediccions. Demano disculpes per les comes més probables no espaiades: tenen problemes. Si hi ha desitjos per a una proposta essencialment descrita, escriu-hi en un personal perquè als comentaris tinc por de perdre'm alguna cosa. I no jureu massa: aquest és el meu primer article 🙂

UPD1:

Gairebé m'oblido d'esmentar: mentre intentava trobar una solució al problema sense baixar la versió anterior de MariaDB, vaig haver d'actualitzar la informació d'alguna manera. Es va actualitzar així: tota la base de dades es converteix d'InnoDB a MyISAM, infa s'actualitza i després es torna a convertir a InooDB.
UPD2:

Acabo de rebre una carta d'1C-Bitrix amb el següent contingut:

Sol·licitud de revisió completada
"Després d'actualitzar mariadb a 10.4.6, s'ha produït un error en desar l'element infoblock"
Mòdul: iblock, versió: desconeguda
Solució: rebutjat

Així que de moment, sembla que és impossible actualitzar a 10.4 🙁

Font: www.habr.com

Afegeix comentari