Bitrix və MariaDB-nin ən son stabil versiyaya yenilənməsi

Gününüz xeyir, əziz Xabrovitlər! İcazə verin özümü təqdim edim, Aleksandr. Kiçik, lakin qürurlu bir WEB-studiyasının sistem administratoru. Biz həqiqətən hər şeyin tez, təhlükəsiz və təzə proqram təminatı ilə işləməsini istəyirik. Bunu etmək üçün hətta ofisdaxili kompüterdə nagios + PhantomJS paketini qaldırdıq və hər 30 dəqiqədən bir səhifə yükləmə sürətini yoxlayırıq. Xidmət şərtlərinə uyğun olaraq, biz 1C-Bitrix yeniləmələrinə də nəzarət edirik və onları müntəzəm olaraq quraşdırırıq. Və sonra bir gün, növbəti yeniləmədən sonra, admin panelində 2019-cu ilin yayından etibarən 1C-Bitrix-in MySQL 5.5 ilə işləməyi dayandırdığını və yeniləməyə ehtiyac olduğunu bildirən bir mesaj görürük. ISPSystem-dən olan uşaqlar yaraşıqlıdırlar və müntəzəm olaraq panelin funksionallığını genişləndirirlər, bunun üçün onlara xüsusi təşəkkür edirik. Amma bu dəfə siçanla hər şeyi sıxmaq mümkün olmadı. Amma nə baş verdiyini və indi saqqalımda nə qədər ağarmış tüklərin olduğunu kəsik altında tapmaq olar.

Docker konteynerində quraşdırılmış "alternativ DBMS serveri" quraşdırmaq üçün yalnız bir seçim var idi. Əlbəttə, mən başa düşürəm ki, Docker resurslara çox qənaətcildir, lakin nə qədər böyük işləsə də, əlavə xərc yenə də > 0 olacaq. Və burada, sanki, saniyənin onda birində vuruşuruq və dərc etmədən və müqavilə imzalamadan əvvəl girişdəki bütün saytları optimallaşdırırıq. Yəni mənim seçimim deyil.
Yaxşı, sənədlərdə nə var? Hər şeyi ehtiyat nüsxəsini çıxarın, MariaDB repozitoriyasına keçidi olan faylı yum.repos.d ünvanına əlavə edin, sonra

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

Yum sonradan kiminsə onun xəbəri olmadan paketləri çıxardığına and içəcək. Amma birinci - qoy söysün, eybi yoxdur. İkincisi, yum vasitəsilə silməni etsəniz, o, MariaDB ilə birlikdə asılılıqlarla bağlı olan hər şeyi sökməyə çalışır və bu, PHP və ISPManager və PHPmyadmin-dir. Beləliklə, səhvlərlə daha sonra məşğul olacağıq.


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

Ümumiyyətlə, hər şey quruldu və başladı. Yaxşısı budur ki, bazalar götürülüb və onları zibilliklərdən bərpa etmək lazım deyildi. Saytları yoxladım - onlar işləyir və tezdir. Heç bir şeyin düşmədiyinə əmin olmaq üçün bir neçə admin panelinə getdim və direktora hər şeyin qaydasında olduğunu bildirməkdən imtina etdim. 30 dəqiqədən az bir müddətdə məlum oldu ki, heç də yaxşı deyil ...

Mən admin panelinə daxil olub məzmunda hər hansı redaktə əlavə etmək istəyəndə mesaj düşdü

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

Saytdakı məzmun işçilərimiz tərəfindən əlavə edildiyi üçün müştərilər hələ heç nə bilmirdilər və hələ bizi parçalamağa başlamamışdılar. Amma bu zaman məsələsi idi, çünki saytlardakı məlumatların yenilənməsi lazımdır və bir çox müştərilər bunu çox diqqətlə izləyir.

Səhv mətnindən belə nəticəyə gələ bilərik ki, Bitrix redaktə edilən məqalənin eyni əsas açarını göstərərək verilənlər bazasına yeni bir qeyd əlavə etməyə çalışır. Beləliklə, problemin Bitrix tərəfində baş verdiyindən şübhələnmək üçün əsas var. Onların veb saytına gedin və dəstək xidməti ilə əlaqə saxlayın. Demək olar ki, dərhal “çətin problem” cavabını alırıq. Böyük mühəndislərə verilir - gözləyin ... "

Mən kifayət qədər uzun müddət gözləməli oldum (bütün dialoq 25.06.2019-dan 9.07.2019-a qədər baş verdi) və nəticədə "bu problem Bitrix CMS-nin işləməsi ilə əlaqəli deyil, lakin əlaqəlidir. mariadb 10.4.6-da verilənlər bazasının özünün işləməsinə və təəssüf ki, saytın bu problemi həll etmək imkanı olmadığı üçün MariaDB-nin köhnə versiyasına keçmək lazım gələcək.

Sailed ... Hekayənin əvvəlində aşağı səviyyəyə düşməyi düşündüm, amma burada ağ və qaraki, heç bir geriləmə ola bilməz. Dumpları birləşdirin və təzə quraşdırılmış serverdə yenidən yerləşdirin. Bunlar. yaxşı ki, bütün serverləri birdən yeniləməmişəm. Bunlar. "yalnız" yüz sayt (əsəbi gülüş :-)). Onlar həmçinin dəstək olaraq dedilər: “MariaDB 10.4.6 verilənlər bazasından istifadə edərkən problemi həll etmək üçün MariaDB texniki dəstəyi ilə əlaqə saxlamalısınız ki, sorğu verildiyi təqdirdə əməliyyat verilənlər bazasından qeydi silməyəcək:

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

MariaDB dəstəyi ilə ünsiyyət qurmağa başladığımız andan bir neçə saat ümid parıldadı, lakin sonra kommersiya istifadəçisi olmadığım və buna görə də heç kimin problemimi məqsədyönlü şəkildə həll etməyəcəyim barədə son dərəcə düzgün məlumat aldığım bir məktub aldım, amma var onların veb saytında bir forum var və orada variantları axtarmağa cəhd edə bilərsiniz ... Mən sizi təfərrüatlarla sıxmayacağam. Orada heç bir seçim yoxdur.
HAQQINDA! Biz ISP üçün lisenziya almışıq!
Salam, dəstək? Uşaqlar, kömək edin!
- Bağışlayın, biz DBMS-nin yerli versiyalarını dəyişən quldurları dəstəkləmirik. İstəyirsinizsə, docker-də alternativ server olan bir seçim var.
- Bəs istifadəçilər və verilənlər bazası ora necə çatacaq? Dokerə?
- Yaxşı, onları əllərinizlə sürükləyirsiniz ...
- Bəli! Və unutmayın ki, mysql üçün port dəyişəcək və siz bütün konfiqurasiyaları keçib yenidən yazmalı olacaqsınız.
Yaxşı, təşəkkür edirəm, bu barədə düşünəcəyəm ...
Fikirləşdim və qərar verdim ki, 10.4-ü tutacaqları ilə söküb, digər serverlərdə heç bir problem olmayan 10.2-ni quraşdırım.

Proses təkmilləşdirmə prosesindən çox da fərqlənmirdi. Yalnız depoya keçiddə 10.4-dən 10.2-yə dəyişdirmək, yum üçün keşi sıfırlamaq və yenidən yaratmaq lazım idi. Yaxşı, daha bir "xırdalıq": 10.4-ü çıxardıqdan sonra /var/lib/mysql-ə gedirik və oradan hər şeyi silirik. Bu addım olmadan, 10.2-ni quraşdırdıqdan sonra xidmət davamlı olaraq çökəcək və görəcəksiniz

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

Və ya

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

Verilənlər bazalarını idxal etməzdən əvvəl mən ilk olaraq ISP konfiqurasiyalarında göstərilən mysql kök parolunu təyin etdim və mysql verilənlər bazası zibilini idxal etdim. Yaxşı, onda artıq istifadəçilər və hüquqlar olduğundan, biz sadəcə olaraq bütün istifadəçi verilənlər bazalarını kök hesabı ilə ard-arda idxal edirik.

Verilənlər bazası dump üçün skript mətni:

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

Verilənlər bazalarını idxal etməzdən əvvəl onları çıxarmaq lazımdır. Beləliklə, sadəcə əmri yerinə yetirin

gunzip /BACK/*.gz

Və son şey: nədənsə verilənlər bazası adlarında defislərə icazə verilir (əgər siz onları ISPmanager-dən istifadə edərək yaradırsınızsa). Lakin adında defis işarəsi olan verilənlər bazasına zibil yaratdıqda və ya yükləməyə çalışarkən sorğu sintaksisinin səhv olduğu barədə mesaj alırsınız.

Bütün nemətləri sonuna qədər oxuyun. Çox güman ki, aralıq verilməmiş vergüllərə görə üzr istəyirəm - onların problemi var. Əsasən təsvir olunan bir təklif üçün arzularınız varsa - şəxsi yazın, çünki şərhlərdə bir şeyi əldən verməkdən qorxuram. Və çox söyüş söyməyin - bu mənim ilk məqaləmdir 🙂

UPD1:

Demək olar ki, qeyd etməyi unutdum: MariaDB-ni endirmədən problemin həllini tapmağa çalışarkən, məlumatı birtəhər yeniləməli oldum. Bu belə yeniləndi: bütün verilənlər bazası InnoDB-dən MyISAM-a çevrilir, infa yenilənir və sonra yenidən InooDB-yə çevrilir.
UPD2:

İndicə 1C-Bitrix-dən aşağıdakı məzmunlu məktub aldım:

Təftiş sorğusu tamamlandı
"Mariadb-ı 10.4.6-ya yenilədikdən sonra infoblok elementini saxlayarkən xəta baş verdi"
Modul: iblock, versiya: naməlum
Həll yolu: rədd edildi

Deməli, hələ ki, 10.4-ə yeniləmək mümkün deyil 🙁

Mənbə: www.habr.com

Добавить комментарий