Bitrix және MariaDB соңғы тұрақты нұсқасына жаңарту

Қайырлы күн, қымбатты хабровиттер! Өзімді таныстыруға рұқсат етіңіз, Александр. Бір шағын, бірақ мақтаныш WEB-студиясының жүйелік әкімшісі. Біз барлығының жылдам, қауіпсіз және жаңа бағдарламалық жасақтамамен жұмыс істегенін қалаймыз. Мұны істеу үшін біз тіпті кеңсе ішіндегі компьютерде nagios + PhantomJS бумасын көтеріп, бетті жүктеу жылдамдығын әр 30 минут сайын тексердік. Қызмет көрсету шарттарына сәйкес біз 1C-Bitrix жаңартуларын да бақылап, оларды жүйелі түрде орнатамыз. Содан кейін бір күні, келесі жаңартудан кейін біз әкімші панелінде 2019 жылдың жазынан бастап 1C-Bitrix MySQL 5.5-пен жұмысын тоқтататынын және оны жаңарту қажет екендігі туралы хабарламаны көреміз. ISPSystem жігіттері әдемі және панельдің функционалдығын үнемі кеңейтіп отырады, бұл үшін оларға ерекше рахмет. Бірақ бұл жолы барлығын тінтуірмен басу мүмкін болмады. Бірақ не болғанын және қазір сақалымда қанша ағарған шаштар бар екенін кесудің астынан табуға болады.

Docker контейнерінде орнатылған «балама ДҚБЖ серверін» орнату мүмкіндігі ғана болды. Әрине, мен Docker ресурстарға өте үнемді екенін түсінемін, бірақ ол қаншалықты жақсы жұмыс істесе де, үстеме шығындар әлі де > 0 болады. Міне, біз оннан бір секунд ішінде соғысып, жариялап, келісімге қол қоймас бұрын кіре берістегі барлық сайттарды оңтайландырудамыз. Сондықтан менің таңдауым емес.
Жарайды, құжатта не бар? Барлығының сақтық көшірмесін жасаңыз, MariaDB репозиторийіне сілтемесі бар файлды yum.repos.d мекенжайына қосыңыз, содан кейін

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

Юм кейінірек біреу оның білместен пакеттерді алып тастағанына ант береді. Бірақ біріншіден - ант етсін, жарайды. Екіншіден, егер сіз yum арқылы жоюды жасасаңыз, онда ол MariaDB-мен бірге тәуелділіктермен байланысты барлық нәрселерді жоюға тырысады, бұл PHP және ISPManager және PHPmyadmin. Сондықтан қателермен кейінірек айналысамыз.


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

Жалпы, барлығы реттеліп, іске қосылды. Бір жақсысы, базалар жиналды және оларды үйінділерден қалпына келтірудің қажеті жоқ. Мен сайттарды тексердім - олар тез жұмыс істейді. Мен ешнәрсе түсіп қалмағанына көз жеткізу үшін бірнеше әкімші панеліне бардым және директорға бәрі жақсы деп жазылудан бас тарттым. 30 минуттан аз уақыт ішінде бұл мүлдем дұрыс емес екені белгілі болды ...

Мен әкімші панеліне өтіп, мазмұндағы кез келген нәрсені өңдеуді қосуға тырысқанда, хабарлама шығып кетті

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

Сайттағы мазмұнды біздің қызметкерлер қосқандықтан, клиенттер әлі ештеңе білмеді және бізді әлі де ажырата бастаған жоқ. Бірақ бұл уақыт мәселесі болды, өйткені сайттардағы ақпарат жаңартылуы керек және көптеген клиенттер мұны өте мұқият қадағалайды.

Қате мәтінінен біз Bitrix өңделетін мақалада бірдей бастапқы кілтті көрсете отырып, дерекқорға жаңа жазба қосуға тырысады деп қорытынды жасауға болады. Мәселен, мәселе Bitrix жағында болады деп күдіктенуге негіз бар. Олардың веб-сайтына өтіп, қолдау қызметіне хабарласыңыз. Біз бірден дерлік жауап аламыз «қиын мәселе. Аға инженерлерге беріледі - күтіңіз ... »

Маған ұзақ уақыт күтуге тура келді (барлық диалог 25.06.2019 мен 9.07.2019 аралығында өтті) және нәтиже «бұл мәселе Bitrix CMS жұмысына қатысты емес, бірақ байланысты mariadb 10.4.6-да дерекқордың жұмысына және, өкінішке орай, бұл мәселені шешу үшін сайттың жағы жоқ болғандықтан, MariaDB ескі нұсқасына көшу қажет болады.

Желкенді ... Мен әңгіменің басында төмендеу туралы ойладым, бірақ мұнда ақ және қарабұл төмендеу мүмкін емес. Дамптарды біріктіріп, жаңадан орнатылған серверде қайта орналастырыңыз. Анау. Мен барлық серверлерді бірден жаңартпағаным жақсы. Анау. «тек» жүз сайт (жүйке күлді :-)). Олар сондай-ақ қолдау көрсетуде: «MariaDB 10.4.6 дерекқорын пайдалану кезінде мәселені шешу үшін сізге MariaDB техникалық қолдау қызметіне хабарласу қажет, егер сұрау жасалған болса, транзакция дерекқордан жазбаны жоймайды:

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

Біз MariaDB қолдауымен байланыса бастаған сәттен бастап бірнеше сағат бойы үміт жарқырап тұрды, бірақ содан кейін мен коммерциялық пайдаланушы емес екенімді және сондықтан ешкім менің мәселемді мақсатты түрде шеше алмайтындығымды өте дұрыс хабарлаған хат алдым, бірақ бар. олардың веб-сайтында форум бар және сіз сол жерден опцияларды іздей аласыз ... Мен сізді егжей-тегжейлі айтып жалықтырмаймын. Онда опциялар жоқ.
ТУРАЛЫ! Біз ISP лицензиясын сатып алдық!
Сәлеметсіз бе, қолдау? Балалар, көмектесіңдер!
- Кешіріңіз, біз ДҚБЖ түпнұсқа нұсқаларын өзгертетін бұзақыларды қолдамаймыз. Қаласаңыз, докерде балама сервері бар опция бар.
- Бірақ пайдаланушылар мен деректер базасы ол жерге қалай жетеді? Докерге ме?
- Ал, сен оларды қолыңмен сүйреп апарасың ...
- Иә! Mysql порты өзгеретінін және барлық конфигурацияларды қайта жазу керек екенін ұмытпаңыз.
Жақсы, рахмет, мен бұл туралы ойланамын ...
Мен 10.4-ті тұтқалары бар бұзып, басқа серверлерде ешқандай проблемалар болмаған 10.2-ні орнатуды ойладым және шештім.

Процесс жаңарту процесінен айтарлықтай ерекшеленбеді. Тек репозиторийге сілтемеде 10.4-тен 10.2-ге дейін өзгерту, yum үшін кэшті қалпына келтіру және қайта жасау қажет болды. Тағы бір «ұсақ-түйек»: 10.4 жойғаннан кейін біз /var/lib/mysql-ге өтіп, барлығын сол жерден жоямыз. Бұл қадамсыз, 10.2 орнатқаннан кейін қызмет үнемі істен шығады және сіз көресіз

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

Немесе

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

Дерекқорларды импорттамас бұрын, мен алдымен ISP конфигурацияларында көрсетілген mysql түбірлік құпия сөзін орнаттым және MySQL дерекқорының демпін импорттадым. Сонымен, пайдаланушылар мен құқықтар бар болғандықтан, біз барлық пайдаланушы дерекқорларын түбірлік тіркелгімен қатарға импорттаймыз.

Дерекқор қоқысына арналған сценарий мәтіні:

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

Дерекқорларды импорттамас бұрын, оларды архивтен шығару керек. Сондықтан жай ғана пәрменді іске қосыңыз

gunzip /BACK/*.gz

Және соңғы нәрсе: қандай да бір себептермен дерекқор атауларында сызықшаларға рұқсат етіледі (егер сіз оларды ISPmanager арқылы жасасаңыз). Бірақ атауында сызықша бар дерекқорға дампты жасағанда немесе жүктеп салуға әрекеттенгенде, сұрау синтаксисі дұрыс емес екендігі туралы хабарлама аласыз.

Барлық баталарды соңына дейін оқыңыз. Үтірлер үшін кешірім сұраймын - олар қиындыққа тап болды. Егер нақты сипатталған ұсынысқа тілектер болса - жеке түрде жазыңыз, өйткені түсініктемелерде мен бір нәрсені жіберіп алудан қорқамын. Және көп ант бермеңіз - бұл менің алғашқы мақалам 🙂

UPD1:

Мен атап өтуді ұмытып кеттім: мен MariaDB нұсқасын төмендетпей мәселені шешуге тырысқанда, мен қандай да бір түрде ақпаратты жаңартуға тура келді. Ол келесідей жаңартылды: бүкіл дерекқор InnoDB-тен MyISAM-қа түрлендіріледі, infa жаңартылады, содан кейін қайтадан InooDB-ге түрлендіріледі.
UPD2:

Жаңа ғана 1C-Bitrix-тен келесі мазмұндағы хат келді:

Қайта қарау сұрауы аяқталды
"Mariadb 10.4.6 нұсқасына жаңартқаннан кейін инфоблок элементін сақтау кезінде қате орын алды"
Модуль: iblock, нұсқасы: белгісіз
Шешім: қабылданбады

Сондықтан әзірге 10.4 нұсқасына жаңарту мүмкін емес сияқты

Ақпарат көзі: www.habr.com

пікір қалдыру