Bitrix at MariaDB update sa pinakabagong stable na bersyon

Magandang araw, mahal na mga residente ng Khabrovsk! Hayaan akong magpakilala, Alexander. System administrator ng isang maliit ngunit mapagmataas na WEB studio. Gusto talaga naming gumana ang lahat nang mabilis, ligtas at gamit ang pinakabagong software. Para magawa ito, nag-install pa kami ng nagios+PhantomJS bundle sa intra-office computer at suriin ang bilis ng paglo-load ng page tuwing 30 minuto. Ayon sa mga tuntunin ng serbisyo, sinusubaybayan din namin ang mga pag-update ng 1C-Bitrix at regular na ini-install ang mga ito. At pagkatapos ay isang araw, pagkatapos ng susunod na pag-update, nakakita kami ng isang mensahe sa admin panel na mula noong tag-araw ng 2019, ang 1C-Bitrix ay huminto sa pagtatrabaho sa MySQL 5.5 at kailangan naming i-update. Ang mga lalaki mula sa ISPSystem ay guwapo at regular na nagpapalawak ng pag-andar ng panel, kung saan espesyal na salamat sa kanila. Ngunit sa pagkakataong ito ay hindi posible na i-click ang lahat gamit ang mouse. Ngunit maaari mong malaman kung ano ang nangyari at kung gaano karaming mga kulay-abo na buhok ang nasa aking balbas sa ilalim ng hiwa.

Mayroon lamang opsyon na mag-install ng "alternatibong DBMS server" na naka-install sa isang lalagyan ng Docker. Siyempre, naiintindihan ko na ang Docker ay napakatipid sa mga mapagkukunan, ngunit gaano man ito kahusay, ang overhead ay magiging >0 pa rin. At dito kami ay tila nakikipaglaban sa ikasampu ng mga segundo at na-optimize ang lahat ng mga site sa pasukan bago i-publish ang mga ito at pumirma ng isang kasunduan. Kaya hindi ang aking pagpipilian.
Ok, ano ang sinasabi ng dokumentasyon? I-backup ang lahat, magdagdag ng file sa yum.repos.d na may link sa repositoryo ng MariaDB, pagkatapos

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

Sumumpa si Yum na may nagtanggal ng mga pakete nang hindi niya nalalaman. Pero una sa lahat, magmura siya, okay lang. At pangalawa, kung gagawin mo ang pagtanggal sa pamamagitan ng yum, pagkatapos ay susubukan nitong tanggalin, kasama ng MariaDB, ang lahat ng konektado dito sa pamamagitan ng dependency, at kabilang dito ang PHP at ISPManager at PHPmyadmin. Samakatuwid, haharapin natin ang pagmumura mamaya.


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

Sa pangkalahatan, ang lahat ay na-install at nagsimula. Ang maganda ay ang mga database ay kinuha at hindi na kailangang ibalik ang mga ito mula sa mga dump. Sinuri ko ang mga site - gumagana ang mga ito at mabilis. Nagpunta ako sa ilang mga lugar ng admin upang matiyak na walang nahulog at sumulat pabalik sa direktor na ang lahat ay OK. Wala pang 30 minuto ay lumabas na hindi ito OK...

Nang sinubukan kong pumunta sa admin area at magdagdag at mag-edit ng kahit ano sa content, may lumabas na mensahe

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

Dahil ang nilalaman sa site ay idinagdag ng aming sariling mga empleyado, ang mga kliyente ay wala pang alam at hindi pa sinimulan na paghiwalayin kami. Ngunit ito ay isang bagay ng oras, dahil ang impormasyon sa mga site ay kailangang ma-update, at maraming mga kliyente ang malapit na sinusubaybayan ito sa kanilang sarili.

Mula sa teksto ng error, maaari nating tapusin na sinusubukan ni Bitrix na magdagdag ng bagong entry sa database habang tinutukoy ang parehong pangunahing key na nasa artikulong na-edit. Nangangahulugan ito na may dahilan upang maghinala na ang problema ay lumitaw sa panig ng Bitrix. Pumunta kami sa kanilang website at makipag-ugnayan sa suporta. Halos agad-agad nating makuha ang sagot na β€œkomplikadong problema. Ibigay ito sa mga senior engineer - teka..."

Kinailangan naming maghintay ng mahabang panahon (naganap ang buong dialogue mula Hunyo 25.06.2019, 9.07.2019 hanggang Hulyo 10.4.6, XNUMX) at ang resulta ay ang mensahe na "ang problemang ito ay hindi nauugnay sa pagpapatakbo ng Bitrix CMS, ngunit nauugnay sa pagpapatakbo ng database mismo sa mariadb XNUMX at, sa kasamaang-palad, kasama ang On the site side, walang paraan upang malutas ang problemang ito; kakailanganin mong lumipat sa lumang bersyon ng MariaDB.

Dumating sila... Naisipan kong mag-downgrade sa umpisa ng story, pero sabi nito sa itim at putina hindi maaaring mag-downgrade. Dump dumps at muling i-deploy sa isang ganap na naka-install na server. Yung. Buti hindi ko na-update lahat ng server ng sabay-sabay. Yung. "lamang" isang daang site (kinakabahan tumawa :-)). Sinabi rin ng suporta: β€œUpang malutas ang problema kapag ginagamit ang database ng MariaDB 10.4.6, kakailanganin mong makipag-ugnayan sa teknikal na suporta ng MariaDB na hindi tatanggalin ng transaksyon ang isang tala mula sa database kung ang kahilingan ay ginawa:

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

Ang pag-asa ay kumikinang sa loob ng ilang oras mula nang magsimula akong makipag-usap sa suporta ng MariaDB, ngunit pagkatapos ay nakatanggap ako ng isang liham kung saan sinabi nila sa akin nang tama na hindi ako isang komersyal na gumagamit at samakatuwid ay walang sinuman ang sadyang malulutas ang aking problema, ngunit mayroong isang forum sa kanilang website at doon ay maaari mong subukang maghanap ng mga pagpipilian ... hindi ako magsasawa sa iyo ng mga detalye. Walang mga pagpipilian doon.
TUNGKOL SA! Bumili kami ng lisensya ng ISP!
- Hello, suporta? Guys, tulong!
β€” Paumanhin, hindi namin sinusuportahan ang mga scumbag na nagpapalit ng mga katutubong bersyon ng DBMS. Kung gusto mo, mayroong isang opsyon na may alternatibong server sa Docker.
β€” Ngunit paano makakarating doon ang mga user at database? Sa docker?
- Buweno, kinaladkad mo sila doon gamit ang iyong mga kamay...
- Oo! At huwag kalimutan na ang port para sa mysql ay magbabago at kakailanganin mong dumaan sa lahat ng mga config at muling isulat ang mga ito.
- Okay, salamat, pag-iisipan ko ...
Naisip ko ito at nagpasyang manu-manong buwagin ang 10.4 at i-install ang 10.2 kung saan walang mga problema sa ibang mga server.

Ang proseso ay hindi gaanong naiiba sa proseso ng pag-update. Kailangan ko lang baguhin ang 10.4 hanggang 10.2 sa link sa repository, i-reset at muling likhain ang cache para sa yum. Well, isa pang "maliit na bagay": pagkatapos alisin ang 10.4, pumunta sa /var/lib/mysql at tanggalin ang lahat mula doon. Kung wala ang hakbang na ito pagkatapos i-install ang 10.2, ang serbisyo ay patuloy na mag-crash at makikita mo

НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… '' Lost connection to MySQL server at 'reading initial communication packet', system error: 104 "Connection reset by peer"

O kaya

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

Bago mag-import ng mga database, itinakda ko muna ang root password para sa mysql na tinukoy sa mga config ng ISP at na-import ang mysql database dump. Kaya naman, dahil mayroon na kaming mga user at karapatan, ini-import lang namin ang lahat ng database ng user nang sunud-sunod gamit ang root account.

Teksto ng script para sa database 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'

Bago mag-import ng mga database, kailangan mong i-unzip ang mga ito. Kaya pinapatakbo lang namin ang utos

gunzip /BACK/*.gz

At panghuli: sa ilang kadahilanan, pinapayagan ang mga gitling sa pangalan ng database (kung gagawin mo ito sa pamamagitan ng ISPmanager). Ngunit kapag gumawa ka o sinubukang mag-upload ng dump sa isang database na may gitling sa pangalan nito, makakatanggap ka ng mensahe na hindi tama ang syntax ng kahilingan.

All the best sa mga nagbabasa hanggang dulo. Humihingi ako ng paumanhin para sa malamang na maling mga kuwit - ang mga ito ay isang problema. Kung mayroon kang anumang mga mungkahi tungkol sa kakanyahan ng kung ano ang inilarawan, sumulat sa isang personal na mensahe dahil natatakot ako na may makaligtaan ako sa mga komento. At huwag masyadong magmura - ito ang aking unang artikulo :)

UPD1:

Muntik kong nakalimutang banggitin: habang sinusubukan kong maghanap ng solusyon sa problema nang hindi i-downgrade ang MariaDB, kailangan kong i-update ang impormasyon. Ito ay na-update tulad nito: ang buong database ay na-convert mula sa InnoDB sa MyISAM, ang impormasyon ay na-update at pagkatapos ay na-convert pabalik sa InooDB.
UPD2:

Nakatanggap lang ako ng sulat mula sa 1C-Bitrix na may sumusunod na nilalaman:

Nakumpleto ang kahilingan para sa rebisyon
"Pagkatapos i-upgrade ang mariadb sa 10.4.6, may naganap na error kapag nagse-save ng elemento ng infoblock"
Module: iblock, bersyon: hindi alam
Solusyon: tinanggihan

Kaya tila imposibleng mag-update sa 10.4 sa ngayon πŸ™

Pinagmulan: www.habr.com

Magdagdag ng komento