Bitrix болон MariaDB-г хамгийн сүүлийн үеийн тогтвортой хувилбар болгон шинэчлэх

Өдрийн мэнд, эрхэм Хабровчууд! Александр, өөрийгөө танилцуулахыг зөвшөөрнө үү. Нэг жижиг боловч бардам WEB студийн системийн администратор. Бид бүх зүйл хурдан, аюулгүй, шинэ программ хангамжаар ажиллахыг үнэхээр хүсч байна. Үүнийг хийхийн тулд бид nagios + PhantomJS багцыг оффисын компьютер дээр суулгаж, 30 минут тутамд хуудас ачаалах хурдыг шалгадаг. Үйлчилгээний нөхцлийн дагуу бид 1C-Bitrix шинэчлэлтийг хянаж, тогтмол суулгадаг. Дараа нь нэг өдөр, дараагийн шинэчлэлтийн дараа бид админ самбараас 2019 оны зунаас хойш 1C-Bitrix MySQL 5.5-тай ажиллахаа больж, шинэчлэх шаардлагатай гэсэн мессежийг харлаа. ISPSystem-ийн залуус царайлаг бөгөөд самбарын функцийг байнга өргөжүүлдэг тул тэдэнд онцгой талархаж байна. Гэхдээ энэ удаад хулганаар бүгдийг дарах боломжгүй байсан. Гэхдээ юу болсон, одоо сахал дээр хэдэн буурал байгаа нь тайралтын доороос олж болно.

Зөвхөн Docker контейнерт суулгасан "альтернатив DBMS сервер"-ийг суулгах сонголт байсан. Мэдээжийн хэрэг, Докер нөөцдөө маш хэмнэлттэй байдаг гэдгийг би ойлгож байна, гэхдээ энэ нь хичнээн сайн ажилласан ч гэсэн нэмэлт зардал > 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-р сарын 10.4.6-наас XNUMX оны XNUMX-р сарын XNUMX-ний хооронд явагдсан) үр дүн нь "энэ асуудал Bitrix CMS-ийн ажиллагаатай холбоогүй, гэхдээ холбоотой байна. mariadb XNUMX дахь мэдээллийн баазын ажиллагаатай холбоотой бөгөөд харамсалтай нь энэ асуудлыг шийдэхийн тулд сайтын тал байхгүй байгаа тул 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-ийн лиценз худалдаж авлаа!
Сайн байна уу, дэмжлэг үзүүлэх үү? Залуус аа, туслаач!
- Уучлаарай, бид DBMS-ийн эх хувилбарыг өөрчилдөг дээрэмчдийг дэмжихгүй. Хэрэв та хүсвэл докер дээр өөр сервертэй сонголт байна.
- Гэхдээ хэрэглэгчид болон мэдээллийн сан тэнд яаж очих вэ? Докер руу?
- За, чи тэднийг тийшээ гараараа чирч байна ...
- Тийм ээ! Мөн 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 root нууц үгээ тохируулж, 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

сэтгэгдэл нэмэх