Bitrix dan perbarui MariaDB ke versi stabil terbaru

Selamat siang, Khabrovchia terkasih! Biarkan saya memperkenalkan diri, Alexander. Administrator sistem dari satu WEB-studio kecil tapi bangga. Kami benar-benar ingin semuanya bekerja dengan cepat, aman dan dengan perangkat lunak baru. Untuk melakukan ini, mereka bahkan mengangkat banyak nagios + PhantomJS di komputer kantor dan memeriksa kecepatan pemuatan halaman setiap 30 menit. Menurut ketentuan layanan, kami juga mengikuti pembaruan 1C-Bitrix dan menginstalnya secara teratur. Dan sekali, setelah pembaruan berikutnya, kita melihat pesan di panel admin yang menyatakan bahwa pada musim panas 2019 1C-Bitrix berhenti bekerja dengan MySQL 5.5 dan perlu diperbarui. Orang-orang dari ISPSystem ganteng dan secara teratur memperluas fungsi panel, yang khusus terima kasih kepada mereka. Tapi kali ini tidak mungkin untuk mengklik semua mouse. Tetapi apa yang terjadi dan seberapa banyak rambut uban di janggutku dapat ditemukan di bawah luka.

Hanya ada opsi untuk meletakkan "server DBMS alternatif" yang dimasukkan ke dalam wadah Docker. Tentu saja, saya mengerti bahwa Docker sangat hemat sumber daya, tetapi tidak peduli seberapa keren kerjanya, biaya overhead akan tetap> 0. Dan di sini kita berjuang, seolah-olah, dalam sepersepuluh detik, dan di pintu masuk kita mengoptimalkan semua situs sebelum menerbitkan dan menandatangani kontrak. Jadi ini bukan pilihan saya.
Ok, apa yang tertulis di dokumentasi? Total cadangan, tambahkan file dengan tautan ke repositori MariaDB di yum.repos.d, lalu

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

Yum nantinya akan mengutuk bahwa seseorang menghapus / menginstal paket tanpa sepengetahuannya. Tapi pertama-tama - sumpahlah, tidak apa-apa. Dan kedua, jika Anda melakukan penghapusan melalui yum, maka ia mencoba untuk menghancurkan, bersama dengan MariaDB, segala sesuatu yang terkait dengannya, dan ini adalah PHP dan ISPManager dan PHPmyadmin. Karena itu, kita akan berurusan dengan coretan.

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

Secara umum, semuanya sudah diatur dan berakhir. Yang menyenangkan adalah bahwa pangkalan diambil dan tidak perlu mengembalikannya dari tempat pembuangan. Saya memeriksa situs - mereka bekerja dan cepat. Saya pergi ke beberapa halaman admin untuk memastikan bahwa tidak ada yang jatuh dan menulis kepada direktur bahwa semuanya baik-baik saja. Dalam waktu kurang dari 30 menit ternyata sama sekali tidak apa-apa ...

Saat mencoba masuk ke panel admin dan menambahkan / mengedit apa pun, sebuah pesan jatuh di konten

 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 karyawan kami menambahkan konten ke situs, klien masih tidak tahu apa-apa dan belum mulai membuat kami terpisah. Tapi itu masalah waktu karena informasi di situs perlu diperbarui dan ini adalah apa yang banyak pelanggan ikuti sendiri dan erat.

Dari teks kesalahan, kita dapat menyimpulkan bahwa Bitrix sedang mencoba untuk menambahkan catatan baru ke database sambil menunjukkan kunci utama yang sama dengan artikel yang diedit. Jadi ada alasan untuk curiga bahwa masalah muncul di sisi Bitrix. Kami pergi ke situs web mereka dan beralih ke dukungan. Hampir segera kami mendapatkan jawaban "masalah yang sulit. Berikan ke insinyur senior - tunggu ... "

Saya harus menunggu lama (seluruh dialog berlangsung dari 06/25/2019 hingga 07/09/2019) dan hasilnya adalah pesan β€œmasalah ini tidak terkait dengan pengoperasian CMS Bitrix, tetapi untuk pengoperasian basis data itu sendiri dalam mariadb 10.4.6 dan sayangnya dengan sisi situs masalah ini untuk menyelesaikan kemungkinan hilang itu akan diperlukan untuk meningkatkan ke versi lama MariaDB.

Mereka tiba ... Saya berpikir tentang downgrade di awal cerita, tetapi di sini dikatakan hitam dan putih bahwa tidak ada downgrade. Gabungkan dump dan gunakan lagi di server yang diinstal dengan rapi. Yaitu itu baik bahwa saya tidak memperbarui semua server sekaligus. Yaitu "Hanya" seratus situs (tawa gugup :-)). Mereka juga mengatakan dalam dukungan: "Untuk menyelesaikan masalah ketika menggunakan database MariaDB 10.4.6, Anda harus 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 telah memanas selama beberapa jam sejak dimulainya komunikasi dengan dukungan MariaDB, tetapi kemudian sebuah surat datang di mana mereka dengan benar mengatakan kepada saya bahwa saya bukan pengguna komersial dan oleh karena itu tidak ada yang akan dengan sengaja memecahkan masalah saya, tetapi ada forum di situs web mereka dan Anda dapat mencoba mencari opsi di sana ... Saya tidak akan menanggung detailnya. Tidak ada opsi di sana.
Oh! Kami memiliki lisensi yang dibeli untuk ISP!
- Halo, dukungan? Kawan, tolong!
- Maaf, kami tidak mendukung sampah yang mengubah versi asli DBMS. Apakah Anda mau - ada opsi dengan server alternatif di buruh pelabuhan.
- Tetapi bagaimana pengguna dan basis data sampai di sana? Ke buruh pelabuhan?
- Nah, Anda seret mereka ke sana dengan tangan Anda ...
- Ya! Dan jangan lupa bahwa port untuk mysql akan berubah dan Anda harus melalui semua konfigurasi dan menulis ulang.
- Ok, terima kasih, saya akan berpikir ...
Saya berpikir dan memutuskan untuk menghancurkan 10.4 dengan pena dan menempatkan 10.2 yang tidak ada masalah pada server lain.

Prosesnya tidak jauh berbeda dengan proses pembaruan. Hanya perlu di tautan ke repositori untuk mengubah 10.4 menjadi 10.2, mengatur ulang dan membuat ulang cache untuk yum. Nah, satu lagi "trifle": setelah menghapus 10.4, pergi ke / var / lib / mysql dan hapus semuanya dari sana. Tanpa langkah ini, setelah menginstal 10.2, layanan akan terus-menerus jatuh 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 mengimpor basis data, saya pertama-tama mengatur kata sandi root untuk mysql yang telah terdaftar di konfigurasi ISP dan mengimpor dump basis data mysql. Jadi, karena sudah ada pengguna dan hak, kami cukup mengimpor semua basis pengguna secara berturut-turut dengan akun root.

Teks skrip untuk dump basis 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 mengimpor basis data, Anda perlu unzip. Jadi jalankan saja perintahnya

 gunzip /BACK/*.gz 

Dan yang terakhir: untuk beberapa alasan, tanda hubung diizinkan atas nama database (jika Anda buat melalui ISPmanager). Tetapi ketika membuat atau mencoba untuk mengisi dump ke dalam database dengan tanda hubung di namanya, Anda mendapatkan pesan bahwa sintaks kueri salah.

Bacalah sampai akhir dari semua berkat. Saya minta maaf untuk koma yang kemungkinan besar tidak ditempatkan - masalah dengan mereka. Jika ada keinginan / saran pada esensi dari apa yang dijelaskan - tulis dalam pesan pribadi karena saya takut ketinggalan sesuatu di komentar. Dan jangan bersumpah banyak - ini adalah artikel pertama saya :-)

UPD1:

Saya hampir lupa menyebutkan: ketika saya mencoba mencari solusi untuk masalah tanpa menurunkan versi MariaDB, saya harus memperbarui info. Itu diperbarui sebagai berikut: seluruh database dikonversi dari InnoDB ke MyISAM, info diperbarui, dan kemudian dikonversi kembali ke InooDB.
UPD2:

Sebuah surat baru saja tiba dari 1C-Bitrix dengan konten berikut:
Aplikasi untuk revisi diterapkan
β€œSetelah memperbarui mariadb ke 10.4.6, terjadi kesalahan saat menyimpan elemen blok info”
Modul: iblock, versi: tidak dikenal
Solusi: Ditolak
Jadi sementara itu tampaknya tidak mungkin untuk memperbarui ke 10.4 :-(

Source: https://habr.com/ru/post/id459795/


All Articles