Mirëdita, të dashur Habrovçanë! Lejoni të paraqitem, Aleksandër. Administrator sistemi i një studioje të vogël por krenare WEB. Ne duam shumë që gjithçka të funksionojë shpejt, sigurt dhe me soft të freskët. Për këtë, madje ngisëm në kompjuterin e brendshëm një set të nagios+PhantomJS dhe kontrollojmë çdo 30 minuta shpejtësinë e ngarkesës së faqeve. Sipas kushteve të shërbimit, ne gjithashtu ndjekim azhurnimet e 1C-Bitrix dhe i instAlojmë rregullisht. Dhe një ditë, pas një azhurnimi tjetër, shohim një mesazh në panelin e administratorit që nga vera e vitit 2019 1C-Bitrix ndalon mbështetje për MySQL 5.5 dhe duhet të azhurnohemi. Djemtë nga ISPSystem janë të shkëlqyer dhe rregullisht zgjasin funksionalitetin e panelit, për të cilin u falënderojmë veçmas. Por këtë herë nuk arritëm ta klikojmë gjithçka me mouse. Por për atë që arritëm dhe sa shumë të bardha tani në mjekrën time mund të mësoni poshtë.
I vetë kishte vetëm opsionin për të vendosur "serverin alternativ DBMS" i cili vendoset në konteiner Docker. Sigurisht, kuptoj se Docker është shumë kursimtar me burimet, por pavarësisht se sa mirë punon, overhead do të jetë gjithmonë >0. Dhe këtu ne jemi duke luftuar për ndjesa sekondash dhe optimizojmë të gjitha faqet para se t'i publikojmë dhe nënshkruajmë kontratën. Pra, nuk është opsioni im.
Ok, çfarë është shkruar në dokumentacion? Backup i gjithçkaje, shtoni në dosjen yum.repos.d një skedar me lidhjen për repozitorin MariaDB, më pas
rpm -e --nodeps MariaDB-server MariaDB-client MariaDB-commonYum më vonë do të ankohet që dikush ka fshirë/instaluar paketa pa dijeninë e tij. Por së pari — le të ankohen, nuk është ndonjë gjë e tmerrshme. Dhe së dyti, nëse bëni fshirjen përmes yum, ai përpiqet së bashku me MariaDB t'i heqë edhe të gjitha ato që janë të lidhura me të, siç janë PHP, ISPManager dhe PHPmyadmin. Prandaj, do të merremi me ankesat më vonë.
yum clean all
yum update
yum install MariaDB-server MariaDB-client MariaDB-commonNë përgjithësi, gjithçka u instalua dhe filloi të funksionojë. E bukur është që bazat u kapën dhe nuk ishte e nevojshme t'i rikthenim ato nga backupet. Kontrollova faqet - funksionojnë dhe janë të shpejta. Hyra në disa admina për të siguruar që asgjë nuk kishte rënë dhe i shkrova drejtorit që gjithçka është në rregull. Nuk kaloi as 30 minuta dhe u zbulua se fare nuk është në rregull…
Gjatë përpjekjes për të hyrë në admin dhe për të shtuar ose redaktuar çdo gjë në përmbajtje u shfaq mesazhi
MySQL Query Error: INSERT INTO b_iblock_element_property (ID, IBLOCK_ELEMENT_ID, IBLOCK_PROPERTY_ID, VALUE, VALUE_NUM) SELECT 10555, 2201, P.ID, '3607', 3607.0000 FROM b_iblock_property P WHERE ID = 184 [[1062] Duplicate entry '10555' for key 'PRIMARY']Duke qenë se përmbajtjen në faqe e shtojnë vetë punonjëset tona, klientët ende nuk dinin gjë dhe për momentin nuk kishin filluar të na çanë në pjesë. Por ishte çështje kohe sepse informacioni në faqet duhet të për atualização dhe shumë klientë e ndjekin këtë vetë dhe me kujdes.
Nga teksti i gabimit mund të përfundohet se Bitrix po përpiqet të shtojë një regjistrim të ri në bazë duke treguar të njëjtin çelës kryesor si ai i artikullit që po redaktohet. Kështu, ka arsye për të dyshuar që problemi ndodh nga ana e Bitrix. Shkoni në faqen e tyre dhe kontaktoni mbështetjes. Pothuajse menjëherë marrim përgjigjen "problemi është kompleks. E dhamë inxhinierëve të lartë — prisni..."
Kemi pritur mjaft gjatë (të gjithë dialogu ndodhi nga 25.06.2019 deri më 9.07.2019) dhe rezultati ishte mesazhi "ky problem nuk është i lidhur me funksionimin e CMS Bitrix, por lidhet me funksionimin e vetë bazës së të dhënave në mariadb 10.4.6 dhe fatkeqësisht nga ana e faqes, nuk ka mundësi për të zgjidhur këtë problem, do të duhet të kaloni në një version më të vjetër të MariaDB."
Këtu jemi… Për downgrade kam menduar qysh në fillim të historisë, por , që nuk mund të ketë asnjë downgrade. Shkarkoni dump-et dhe rregulloni përsëri në një instalim të pastër. serveri. Pra ndaj, është mirë që nuk i përmirësova të gjitha serverët njëherësh. Pra, ‘vetëm’ njëqind faqet (qeshje nervoze :-)). Po ashtu, në mbështetje më thanë: “Për të zgjidhur problemin me përdorimin e bazës MariaDB 10.4.6, do të duhet të kontaktoni mbështetje teknike të MariaDB, sepse në transaksion nuk do të kryhet fshirja e regjistrimit nga BD, nëse bëhet kërkesa:
$DB->Query("DELETE FROM ".$strTable." WHERE ID = ".$res["ID"]);
$results = $DB->Query("SELECT * FROM ".$strTable." WHERE ID = ".$res["ID"]);” Shpresat ishin se do të qëndronin për disa orë që nga fillimi i bisedës me mbështetje MariaDB, por pastaj mora një email ku më informuan me shumë korrektësi se nuk jam përdorues komerciale dhe kështu problemi im nuk do të zgjidhet me qëllim nga askush, por ka një forum në faqen e tyre dhe atje mund të provoni të kërkoni opsione ... Nuk do të lodh detailet. Atje nuk ka opsione.
O! Ne kemi një licencë të blerë për ISP!
— Alo, mbështetje? Djem, ndihmoni!
— Na vjen keq, nuk mbështesim ata të cilët ndryshojnë versionet natyrore të DBMS. Nese doni— ka një opsion me serverin alternativ në docker.
— Por si do të arrijnë përdoruesit dhe bazat atje? Në docker?
— Po, do t’i futni aty me duar...
— Po! Dhe mos harro, që porta për mysql do të ndryshojë dhe do të duhet të kalosh në të gjitha konfigurimet dhe të rishkruash.
— Ok, faleminderit, do të mendoj...
Mendova dhe vendosa ta fshij manualisht 10.4 dhe të instaloja 10.2, me të cilin nuk pata probleme në serverat e tjerë.
Procesi nuk ndryshonte shumë nga procesi i përditësimit. Duhej vetëm të ndrosh 10.4 me 10.2 në adresën e depot, të pastroni dhe të krijoni përsëri cache për yum. Edhe një “detaj i vogël”: pas fshirjes së 10.4, shkojmë në /var/lib/mysql dhe fshijmë gjithçka nga atje. Pa këtë hap, pas instalimit të 10.2, shërbimi do të vazhdojë të bie dhe do të shihni
Nuk arrita dot të lidhem me bazën e të dhënave '' Humbja e lidhjes me serverin MySQL në 'leximin e paketës fillestare të komunikimit', gabimi i sistemit: 104 "Lidhja u rivendos nga palë"Ose
Humbja e lidhjes me serverin MySQL në 'dëshirën: leximi i paketës fillestare të komunikimit', gabimi i sistemit: 104Para se të importoja bazat, fillimisht vendosa atë fjalëkalim root për mysql që ishte e shënuar në konfigurimet ISP dhe importova dump-in e bazës mysql. Dhe tani, pasi përdoruesit dhe të drejtat janë tashmë të pranishme, thjesht me llogarinë root importojmë radhazi të gjitha bazat e përdoruesve.
Teksti i skriptit për dump-in e bazave:
#!/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'Para importit të bazave duhet t’i zhbllokohemi. Prandaj thjesht ekzekutojmë komandën
gunzip /BACK/*.gzDhe e fundit: për një arsye të caktuar, në emrat e bazave (nëse krijoni përmes ISPmanager) lejohet përdorimi i ndarjeve. Por, gjatë krijimit ose përpjekjes për të ngarkuar një dump në një bazë që ka një ndarje në emrin e saj, merrni një mesazh që sintaksa e kërkesës është e gabuar.
Për ata që e përfunduan, të gjitha të mirat. Më vjen keq për ndoshta mungesën e pikëve, kjo është një problem. Nëse keni kërkesa ose sugjerime për atë që është përshkruar, shkruani në mesazhe private pasi kam frikë të mos humbas diçka në komentet. Dhe mos më kritikoni shumë — është artikulli im i parë 🙂
UPD1:
Gati harrova të përmend: ndërsa po përpiqesha të gjej një zgjidhje për problemin pa u zvogëluar MariaDB, duhej ndonjëherë të përditësoja informacionin. Përditësimi ndodhi kështu: e gjithë baza u konvertua nga InnoDB në MyISAM, u përditësua informacioni dhe pastaj u riktheu përsëri në InnoDB.
UPD2:
Sapo erdhi një email nga 1C-Bitrix me përmbajtjen e mëposhtme:
Kërkesa për përmirësim është realizuar
«Pas përditësimit të mariadb në 10.4.6, shfaqet një gabim gjatë ruajtjes së elementit të informacionit»
Moduli: iblock, versioni: nuk dihet
Zgjidhja: e refuzuar
Pra, për momentin duket se nuk mund të përmirsohet në 10.4 🙁
Burimi: habr.com
