Bitrix dan memperbarui MariaDB ke versi stabil terbaru

Selamat siang, warga Khabrov terkasih! Izinkan saya memperkenalkan diri, Alexander. Administrator sistem dari satu studio WEB yang kecil namun membanggakan. Kami sangat ingin semuanya bekerja dengan cepat, aman, dan dengan perangkat lunak yang segar. Untuk melakukan ini, kami bahkan memunculkan bundel nagios + PhantomJS di komputer intra-kantor dan setiap 30 menit kami memeriksa kecepatan memuat halaman. Menurut ketentuan layanan, kami juga memantau pembaruan 1C-Bitrix dan menginstalnya secara berkala. Dan suatu hari, setelah pembaruan berikutnya, kami melihat pesan di panel admin yang menyatakan bahwa sejak musim panas 2019, 1C-Bitrix berhenti bekerja dengan MySQL 5.5 dan perlu diperbarui. Orang-orang dari ISPSystem tampan dan secara teratur memperluas fungsionalitas panel, dan terima kasih khusus kepada mereka. Namun kali ini tidak mungkin untuk mengklik semuanya dengan mouse. Tapi apa yang terjadi dan berapa banyak uban yang ada di janggut saya sekarang dapat ditemukan di bawah potongan.

Yang ada hanya opsi untuk menginstal β€œserver DBMS alternatif” yang diinstal di container Docker. Tentu saja, saya memahami bahwa Docker sangat hemat dengan sumber daya, tetapi tidak peduli seberapa hebat kerjanya, overhead tetap > 0. Dan di sinilah kita seolah-olah berjuang dalam sepersepuluh detik dan mengoptimalkan semua situs di pintu masuk sebelum menerbitkan dan menandatangani perjanjian. Jadi bukan pilihanku.
Oke, apa yang ada di dokumentasinya? Cadangkan semuanya, tambahkan file dengan tautan ke repositori MariaDB ke yum.repos.d, lalu

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

Yum kemudian akan bersumpah pada kenyataan bahwa seseorang menghapus paket tersebut tanpa sepengetahuannya. Tapi pertama-tama, biarkan dia bersumpah, tidak apa-apa. Dan kedua, jika Anda melakukan penghapusan melalui yum, maka ia mencoba untuk menghancurkan, bersama dengan MariaDB, semua yang terkait dengannya berdasarkan dependensi, dan ini adalah PHP dan ISPManager dan PHPmyadmin. Jadi kita akan mengatasi bugnya nanti.


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

Secara umum, semuanya sudah diatur dan dimulai. Hal yang menyenangkan adalah pangkalan-pangkalan itu telah diambil dan tidak perlu memulihkannya dari tempat pembuangan sampah. Saya memeriksa situsnya - berfungsi dan cepat. Saya pergi ke beberapa panel admin untuk memastikan tidak ada yang jatuh dan berhenti berlangganan ke direktur bahwa semuanya baik-baik saja. Kurang dari 30 menit ternyata malah gak OK sama sekali..

Saat saya mencoba membuka panel admin dan menambahkan edit apa pun di konten, sebuah pesan muncul

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

Karena konten di situs ini ditambahkan oleh karyawan kami, klien masih tidak tahu apa-apa dan belum mulai memisahkan kami. Tapi itu hanya masalah waktu, karena informasi di situs perlu diperbarui, dan banyak klien yang memantaunya dengan cermat.

Dari teks kesalahan tersebut, kita dapat menyimpulkan bahwa Bitrix sedang mencoba menambahkan catatan baru ke database, sambil menentukan kunci utama yang sama dengan yang dimiliki artikel yang sedang diedit. Jadi ada alasan untuk mencurigai bahwa masalah terjadi di pihak Bitrix. Kunjungi situs web mereka dan hubungi dukungan. Hampir seketika kita mendapatkan jawaban β€œmasalah yang sulit. Memberikannya kepada insinyur senior - tunggu ... "

Saya harus menunggu cukup lama (keseluruhan dialog berlangsung dari 25.06.2019/9.07.2019/10.4.6 hingga XNUMX/XNUMX/XNUMX) dan hasilnya adalah pesan β€œmasalah ini tidak terkait dengan pengoperasian Bitrix CMS, tetapi terkait untuk pengoperasian database itu sendiri di mariadb XNUMX dan, sayangnya, di sisi situs masalah ini kemungkinan hilang, maka perlu untuk bermigrasi ke versi lama MariaDB.”

Berlayar... Aku sempat berpikir untuk downgrade di awal cerita, tapi di sini dalam warna hitam dan putihbahwa tidak boleh ada penurunan peringkat. Gabungkan dump dan terapkan ulang pada server yang baru diinstal. Itu. ada baiknya saya tidak mengupdate semua server sekaligus. Itu. β€œhanya” seratus situs (terkekeh gugup :-)). Mereka juga mengatakan dalam dukungannya: β€œUntuk mengatasi masalah saat menggunakan database MariaDB 10.4.6, Anda perlu menghubungi dukungan teknis MariaDB bahwa transaksi tidak akan menghapus catatan dari database 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 sejak kami mulai berkomunikasi dengan dukungan MariaDB, tetapi kemudian saya menerima surat di mana saya diberitahu dengan sangat tepat bahwa saya bukan pengguna komersial dan oleh karena itu tidak ada yang dengan sengaja menyelesaikan masalah saya, tetapi ada sebuah forum di situs web mereka dan Anda dapat mencoba mencari opsi di sana … Saya tidak akan membuat Anda bosan dengan detailnya. Tidak ada pilihan di sana.
TENTANG! Kami telah membeli lisensi untuk ISP!
Halo, dukungan? Teman-teman, tolong!
- Maaf, kami tidak mendukung preman yang mengubah versi asli DBMS. Jika mau, ada opsi dengan server alternatif di buruh pelabuhan.
- Tapi bagaimana pengguna dan database bisa mencapainya? Untuk buruh pelabuhan?
- Nah, kamu menyeretnya ke sana dengan tanganmu ...
- Ya! Dan jangan lupa bahwa port untuk mysql akan berubah dan Anda harus melalui dan menulis ulang semua konfigurasi.
Oke terima kasih, saya akan memikirkannya...
Saya berpikir dan memutuskan untuk menghancurkan 10.4 dengan pegangan dan menginstal 10.2 yang tidak ada masalah di server lain.

Prosesnya pun tidak jauh berbeda dengan proses upgrade. Hanya saja perlu mengubah 10.4 menjadi 10.2 di tautan ke repositori, mengatur ulang dan membuat ulang cache untuk yum. Nah, satu lagi β€œhal sepele”: setelah menghapus 10.4, kita pergi ke /var/lib/mysql dan menghapus semuanya dari sana. Tanpa langkah ini, setelah menginstal 10.2, layanan akan terus-menerus mogok dan Anda akan melihatnya

НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… '' 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 mengimpor database, saya terlebih dahulu menetapkan kata sandi root mysql yang ditentukan dalam konfigurasi ISP dan mengimpor dump database mysql. Nah, karena sudah ada user dan haknya, kita tinggal import semua database user yang satu baris dengan akun root.

Teks skrip untuk dump database:

#!/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 mengimpor database, Anda perlu mengekstraknya. Jadi jalankan saja perintahnya

gunzip /BACK/*.gz

Dan hal terakhir: untuk beberapa alasan, tanda hubung diperbolehkan dalam nama database (jika Anda membuatnya menggunakan ISPmanager). Namun saat membuat atau mencoba mengunggah dump ke database yang memiliki tanda hubung di namanya, Anda mendapatkan pesan bahwa sintaks kueri salah.

Baca sampai akhir semua berkah. Saya minta maaf atas kemungkinan besar koma yang tidak diberi spasi - koma tersebut dalam masalah. Jika ada keinginan untuk proposal yang pada dasarnya dijelaskan - tulis secara pribadi karena di komentar saya takut ketinggalan sesuatu. Dan jangan terlalu banyak bersumpah - ini artikel pertama saya πŸ™‚

UPD1:

Saya hampir lupa menyebutkan: ketika saya mencoba mencari solusi untuk masalah ini tanpa menurunkan versi MariaDB, saya harus memperbarui infonya. Telah diperbarui seperti ini: seluruh database dikonversi dari InnoDB ke MyISAM, INFA diperbarui dan kemudian dikonversi kembali ke InooDB.
UPD2:

Baru saja menerima surat dari 1C-Bitrix dengan isi sebagai berikut:

Permintaan revisi selesai
"Setelah memperbarui mariadb ke 10.4.6, terjadi kesalahan saat menyimpan elemen infoblock"
Modul: iblock, versi: tidak diketahui
Solusi: ditolak

Jadi untuk saat ini sepertinya belum bisa diupdate ke 10.4 πŸ™

Sumber: www.habr.com

Tambah komentar