Bitrix dhe përditësimi i MariaDB në versionin më të fundit të qëndrueshëm

Ditë të mbarë, të dashur Khabrovit! Më lejoni të prezantohem, Aleksandër. Administrator i sistemit të një WEB-studioje të vogël por krenare. Ne vërtet dëshirojmë që gjithçka të funksionojë shpejt, në mënyrë të sigurt dhe me softuer të ri. Për ta bërë këtë, ne madje ngritëm paketën nagios + PhantomJS në kompjuterin brenda zyrës dhe kontrollojmë shpejtësinë e ngarkimit të faqes çdo 30 minuta. Sipas kushteve të shërbimit, ne gjithashtu monitorojmë përditësimet 1C-Bitrix dhe i instalojmë ato rregullisht. Dhe pastaj një ditë, pas përditësimit të radhës, ne shohim një mesazh në panelin e administratorit se që nga vera e vitit 2019 1C-Bitrix ndalon së punuari me MySQL 5.5 dhe duhet të përditësohet. Djemtë nga ISPSystem janë të pashëm dhe rregullisht zgjerojnë funksionalitetin e panelit, për të cilin falënderim të veçantë për ta. Por këtë herë nuk ishte e mundur të klikoni gjithçka me miun. Por ajo që ndodhi dhe sa qime të thinjura janë tani në mjekrën time mund të gjendet nën prerje.

Kishte vetëm një mundësi për të instaluar një "server alternativ DBMS" që është i instaluar në kontejnerin Docker. Sigurisht, e kuptoj që Docker është shumë i kursyer me burimet, por pavarësisht sa mirë funksionon, shpenzimet e përgjithshme do të jenë akoma > 0. Dhe ja ku jemi, si të thuash, duke luftuar në të dhjetat e sekondave dhe duke optimizuar të gjitha faqet në hyrje përpara se të publikojmë dhe nënshkruajmë një marrëveshje. Pra jo zgjedhja ime.
Ok, çfarë ka në dokumentacion? Rezervoni gjithçka, shtoni një skedar me një lidhje te depoja e MariaDB në yum.repos.d, më pas

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

Yum më pas do të betohet për faktin se dikush i hoqi paketat pa dijeninë e tij. Por së pari - le të betohet, është në rregull. Dhe së dyti, nëse e bëni fshirjen përmes yum, atëherë ai përpiqet të shkatërrojë, së bashku me MariaDB, gjithçka që lidhet me të nga varësitë, dhe kjo është PHP dhe ISPManager dhe PHPmyadmin. Kështu që ne do të merremi me defektet më vonë.


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

Në përgjithësi, gjithçka u vendos dhe filloi. E bukura është se bazat u morën dhe nuk ishte e nevojshme të restauroheshin nga deponitë. Kontrollova faqet - ato funksionojnë dhe shpejt. Shkova te disa panele administratori për t'u siguruar që asgjë nuk binte dhe u abonova te drejtori që gjithçka ishte në rregull. Në më pak se 30 minuta, doli se nuk ishte aspak në rregull ...

Kur u përpoqa të shkoja te paneli i administratorit dhe të shtoja modifikime në përmbajtje, një mesazh doli

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

Meqenëse përmbajtja në faqe është shtuar nga punonjësit tanë, klientët ende nuk dinin asgjë dhe ende nuk kishin filluar të na copëtonin. Por ishte çështje kohe, sepse informacioni në faqet duhet të përditësohet dhe shumë klientë e ndjekin këtë nga afër.

Nga teksti i gabimit, mund të konkludojmë se Bitrix po përpiqet të shtojë një rekord të ri në bazën e të dhënave, duke specifikuar të njëjtin çelës primar që kishte artikulli që po redaktohet. Pra, ka arsye për të dyshuar se problemi ndodh në anën e Bitrix. Shkoni në faqen e tyre të internetit dhe kontaktoni mbështetjen. Pothuajse menjëherë marrim përgjigjen “problem i vështirë. U jepet inxhinierëve të vjetër - prisni ... "

Më duhej të prisja mjaft gjatë (i gjithë dialogu u zhvillua nga 25.06.2019 deri më 9.07.2019) dhe rezultati ishte mesazhi "ky problem nuk ka të bëjë me funksionimin e Bitrix CMS, por ka të bëjë në funksionimin e vetë bazës së të dhënave në mariadb 10.4.6 dhe, për fat të keq, me anën e faqes, ky problem për të zgjidhur mungon mundësia, do të jetë e nevojshme të migroni në versionin e vjetër të MariaDB."

Lundroi ... Mendova për uljen në fillim të tregimit, por këtu bardh e zise nuk mund të ketë ulje. Bashkoni deponitë dhe vendoseni në një server të sapo instaluar. Ato. është mirë që nuk i përditësova të gjithë serverët menjëherë. Ato. "vetëm" njëqind faqe (qeshje nervore :-)). Ata gjithashtu thanë në mbështetje: "Për të zgjidhur problemin kur përdorni bazën e të dhënave MariaDB 10.4.6, do t'ju duhet të kontaktoni mbështetjen teknike të MariaDB se transaksioni nuk do të fshijë një regjistrim nga baza e të dhënave nëse bëhet një kërkesë:

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

Shpresa shkëlqeu për disa orë nga momenti kur filluam të komunikonim me mbështetjen e MariaDB, por më pas mora një letër në të cilën u informova jashtëzakonisht saktë se nuk isha përdorues komercial dhe për këtë arsye askush nuk do ta zgjidhte qëllimisht problemin tim, por ka një forum në faqen e tyre të internetit dhe mund të përpiqeni të kërkoni opsione atje ... Unë nuk do t'ju mërzit me detaje. Nuk ka opsione atje.
RRETH! Ne kemi blerë një licencë për ISP!
Përshëndetje, mbështetje? Djema, ndihmoni!
- Na vjen keq, ne nuk i mbështesim banditë që ndryshojnë versionet origjinale të DBMS. Nëse dëshironi, ekziston një opsion me një server alternativ në docker.
- Por si do të arrijnë përdoruesit dhe bazat e të dhënave? Për doker?
- Epo, ju i tërhiqni atje me duar ...
- Po! Dhe mos harroni se porti për mysql do të ndryshojë dhe do t'ju duhet të kaloni dhe të rishkruani të gjitha konfigurimet.
Ok faleminderit, do ta mendoj...
Mendova dhe vendosa të prish 10.4 me doreza dhe të instaloj 10.2 me të cilin nuk kishte probleme në serverët e tjerë.

Procesi nuk ishte shumë i ndryshëm nga procesi i përmirësimit. Vetëm ishte e nevojshme të ndryshoni 10.4 në 10.2 në lidhjen me depon, rivendosni dhe rikrijoni cache për yum. Epo, një "gjakësi" tjetër: pasi të hiqni 10.4, shkojmë te /var/lib/mysql dhe fshijmë gjithçka nga atje. Pa këtë hap, pas instalimit të 10.2, shërbimi do të rrëzohet vazhdimisht dhe do të shihni

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

ose

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

Përpara se të importoja bazat e të dhënave, fillimisht vendosa fjalëkalimin rrënjë mysql që ishte specifikuar në konfigurimet e ISP-së dhe importova skedarin e bazës së të dhënave mysql. Epo, atëherë, meqenëse tashmë ka përdorues dhe të drejta, ne thjesht importojmë të gjitha bazat e të dhënave të përdoruesve në një rresht me llogarinë rrënjë.

Teksti i skriptit për depozitimin e bazës së të dhënave:

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

Përpara se të importoni bazat e të dhënave, duhet t'i zhbllokoni ato. Pra, thjesht ekzekutoni komandën

gunzip /BACK/*.gz

Dhe gjëja e fundit: për ndonjë arsye, vizat lejohen në emrat e bazës së të dhënave (nëse i krijoni duke përdorur ISPmanager). Por kur krijoni ose përpiqeni të ngarkoni një hale në një bazë të dhënash që ka një vizë në emër, ju merrni një mesazh që sintaksa e pyetjes është e pasaktë.

Lexoni deri në fund të gjitha bekimet. Kërkoj falje për presjet me shumë gjasa që nuk janë ndarë - ata janë në telashe. Nëse ka dëshira për një propozim të përshkruar në thelb - shkruani në një personal sepse në komente kam frikë të humbas diçka. Dhe mos u beto shumë - ky është artikulli im i parë 🙂

UPD1:

Gati harrova të përmend: ndërsa po përpiqesha të gjeja një zgjidhje për problemin pa e reduktuar statusin e MariaDB, më duhej të përditësoja disi informacionin. Ajo u përditësua kështu: e gjithë baza e të dhënave konvertohet nga InnoDB në MyISAM, infa përditësohet dhe më pas konvertohet përsëri në InooDB.
UPD2:

Sapo mora një letër nga 1C-Bitrix me përmbajtjen e mëposhtme:

Kërkesa për rishikim u përfundua
"Pas përditësimit të mariadb në 10.4.6, ndodhi një gabim gjatë ruajtjes së elementit infoblock"
Moduli: iblock, versioni: i panjohur
Zgjidhja: refuzohet

Pra, për momentin, me sa duket është e pamundur të përditësohet në 10.4 🙁

Burimi: www.habr.com

Shto një koment