Bitrix dan mengemas kini MariaDB kepada versi stabil terkini

Selamat hari, Khabrovit yang dikasihi! Izinkan saya memperkenalkan diri saya, Alexander. Pentadbir sistem satu studio WEB yang kecil tetapi membanggakan. Kami benar-benar mahu segala-galanya berfungsi dengan cepat, selamat dan dengan perisian baharu. Untuk melakukan ini, kami juga menaikkan berkas nagios + PhantomJS pada komputer dalam pejabat dan setiap 30 minit kami menyemak kelajuan pemuatan halaman. Mengikut syarat perkhidmatan, kami juga memantau kemas kini 1C-Bitrix dan memasangnya dengan kerap. Dan kemudian suatu hari, selepas kemas kini seterusnya, kami melihat mesej dalam panel pentadbir yang menyatakan bahawa sejak musim panas 2019, 1C-Bitrix berhenti berfungsi dengan MySQL 5.5 dan perlu dikemas kini. Lelaki dari ISPSystem adalah kacak dan kerap mengembangkan fungsi panel, yang sangat berterima kasih kepada mereka. Tetapi kali ini ia tidak mungkin untuk mengklik segala-galanya dengan tetikus. Tetapi apa yang berlaku dan berapa banyak uban yang ada di janggut saya boleh ditemui di bawah potongan.

Terdapat hanya pilihan untuk memasang "pelayan DBMS alternatif" yang dipasang dalam bekas Docker. Sudah tentu, saya faham bahawa Docker sangat menjimatkan dengan sumber, tetapi tidak kira betapa hebatnya ia berfungsi, overhed tetap akan menjadi > 0. Dan inilah kami, seolah-olah, berjuang dalam sepersepuluh saat dan mengoptimumkan semua tapak di pintu masuk sebelum menerbitkan dan menandatangani perjanjian. Jadi bukan pilihan saya.
Ok, apa yang ada dalam dokumentasi? Sandarkan semuanya, tambahkan fail dengan pautan ke repositori MariaDB ke yum.repos.d, kemudian

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

Yum kemudiannya akan bersumpah dengan fakta bahawa seseorang mengeluarkan bungkusan tanpa pengetahuannya. Tetapi pertama - biarkan dia bersumpah, tidak mengapa. Dan kedua, jika anda melakukan pemadaman melalui yum, maka ia cuba merobohkan, bersama-sama dengan MariaDB, semua yang berkaitan dengannya oleh kebergantungan, dan ini adalah PHP dan ISPManager dan PHPmyadmin. Jadi kita akan berurusan dengan pepijat kemudian.


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

Secara umum, semuanya telah disediakan dan dimulakan. Perkara yang menarik ialah pangkalan telah diambil dan ia tidak perlu untuk memulihkannya dari tempat pembuangan. Saya menyemak tapak - ia berfungsi dan cepat. Saya pergi ke beberapa panel pentadbir untuk memastikan tiada apa-apa yang jatuh dan berhenti melanggan pengarah bahawa semuanya OK. Tidak sampai 30 minit, ternyata ia tidak OK langsung ...

Apabila saya cuba pergi ke panel pentadbir dan menambah mengedit apa-apa dalam kandungan, mesej terjatuh

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

Memandangkan kandungan di laman web ini ditambah oleh pekerja kami, pelanggan masih tidak tahu apa-apa dan masih belum mula memisahkan kami. Tetapi ia memerlukan masa, kerana maklumat di tapak perlu dikemas kini, dan ramai pelanggan mengikutinya dengan teliti.

Daripada teks ralat, kita boleh menyimpulkan bahawa Bitrix sedang cuba menambah rekod baharu pada pangkalan data, sambil menyatakan kunci utama yang sama dengan artikel yang sedang disunting. Jadi ada sebab untuk mengesyaki bahawa masalah itu berlaku di sisi Bitrix. Pergi ke tapak web mereka dan hubungi sokongan. Hampir serta-merta kita mendapat jawapan "masalah sukar. Diberikan kepada jurutera kanan - tunggu ... "

Saya terpaksa menunggu agak lama (keseluruhan dialog berlaku dari 25.06.2019/9.07.2019/10.4.6 hingga XNUMX/XNUMX/XNUMX) dan hasilnya adalah mesej "masalah ini tidak berkaitan dengan operasi Bitrix CMS, tetapi berkaitan kepada pengendalian pangkalan data itu sendiri dalam mariadb XNUMX dan, malangnya, dengan sisi tapak untuk menyelesaikan masalah ini tiada, adalah perlu untuk berhijrah ke versi MariaDB yang lebih lama.”

Berlayar ... Saya terfikir untuk menurunkan taraf pada permulaan cerita, tetapi di sini dalam warna hitam dan putihbahawa tidak boleh ada penurunan taraf. Gabungkan pembuangan dan atur semula pada pelayan yang baru dipasang. Itu. ada baiknya saya tidak mengemas kini semua pelayan sekaligus. Itu. "hanya" seratus tapak (ketawa gugup :-)). Mereka juga berkata sebagai sokongan: β€œUntuk menyelesaikan masalah apabila menggunakan pangkalan data MariaDB 10.4.6, anda perlu menghubungi sokongan teknikal MariaDB bahawa transaksi itu tidak akan memadamkan rekod daripada pangkalan data jika permintaan dibuat:

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

Harapan bersinar selama beberapa jam dari saat kami mula berkomunikasi dengan sokongan MariaDB, tetapi kemudian saya menerima surat di mana saya dimaklumkan dengan betul bahawa saya bukan pengguna komersial dan oleh itu tiada siapa yang sengaja menyelesaikan masalah saya, tetapi ada forum di laman web mereka dan anda boleh cuba mencari pilihan di sana … Saya tidak akan membosankan anda dengan butiran. Tiada pilihan di sana.
TENTANG! Kami telah membeli lesen untuk ISP!
Hello, sokongan? Lelaki, tolong!
- Maaf, kami tidak menyokong samseng yang menukar versi asli DBMS. Jika anda mahu, terdapat pilihan dengan pelayan alternatif dalam docker.
- Tetapi bagaimanakah pengguna dan pangkalan data akan sampai ke sana? ke buruh pelabuhan?
- Nah, anda seret mereka ke sana dengan tangan anda ...
- Ya! Dan jangan lupa bahawa port untuk mysql akan berubah dan anda perlu melalui dan menulis semula semua konfigurasi.
Ok terima kasih, saya akan fikirkannya...
Saya berfikir dan memutuskan untuk merobohkan 10.4 dengan pemegang dan memasang 10.2 yang tidak ada masalah pada pelayan lain.

Prosesnya tidak jauh berbeza dengan proses naik taraf. Hanya perlu menukar 10.4 kepada 10.2 dalam pautan ke repositori, menetapkan semula dan mencipta semula cache untuk yum. Nah, satu lagi "remeh": selepas mengeluarkan 10.4, kami pergi ke /var/lib/mysql dan padam semuanya dari sana. Tanpa langkah ini, selepas memasang 10.2, perkhidmatan akan sentiasa ranap dan anda akan melihat

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

Atau

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

Sebelum mengimport pangkalan data, saya mula-mula menetapkan kata laluan akar mysql yang ditentukan dalam konfigurasi ISP dan mengimport dump pangkalan data mysql. Oleh itu, kerana sudah ada pengguna dan hak, kami hanya mengimport semua pangkalan data pengguna berturut-turut dengan akaun akar.

Teks skrip untuk pembuangan pangkalan data:

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

Sebelum mengimport pangkalan data, anda perlu menyahzipnya. Jadi jalankan sahaja arahan itu

gunzip /BACK/*.gz

Dan perkara terakhir: atas sebab tertentu, tanda sempang dibenarkan dalam nama pangkalan data (jika anda menciptanya menggunakan ISPmanager). Tetapi apabila mencipta atau cuba memuat naik dump ke pangkalan data yang mempunyai tanda sempang dalam nama, anda mendapat mesej bahawa sintaks pertanyaan tidak betul.

Bacalah sampai habis segala keberkatan. Saya memohon maaf atas kemungkinan besar koma tidak dijarakkan - mereka menghadapi masalah. Jika ada keinginan untuk cadangan pada dasarnya diterangkan - tulis secara peribadi kerana dalam komen saya takut terlepas sesuatu. Dan jangan terlalu banyak bersumpah - ini adalah artikel pertama saya πŸ™‚

UPD1:

Saya hampir terlupa untuk menyebut: semasa saya cuba mencari penyelesaian kepada masalah tersebut tanpa menurunkan taraf MariaDB, saya terpaksa mengemas kini maklumat tersebut. Ia telah dikemas kini seperti ini: keseluruhan pangkalan data ditukar daripada InnoDB kepada MyISAM, infa dikemas kini dan kemudian ditukar kembali kepada InooDB.
UPD2:

Baru sahaja menerima surat daripada 1C-Bitrix dengan kandungan berikut:

Permintaan semakan selesai
"Selepas mengemas kini mariadb kepada 10.4.6, ralat berlaku semasa menyimpan elemen sekatan maklumat"
Modul: iblock, versi: tidak diketahui
Penyelesaian: ditolak

Jadi buat masa ini, nampaknya mustahil untuk mengemas kini ke 10.4 πŸ™

Sumber: www.habr.com

Tambah komen