Bitrix และอัปเดต MariaDB เป็นเวอร์ชันเสถียรล่าสุด

ขอให้เป็นวันที่ดี Khabrovites ที่รัก! ให้ฉันแนะนำตัวเอง อเล็กซานเดอร์ ผู้ดูแลระบบของ WEB-studio เล็กๆ แต่ภาคภูมิใจ เราต้องการให้ทุกอย่างทำงานอย่างรวดเร็ว ปลอดภัย และด้วยซอฟต์แวร์ใหม่ ในการทำเช่นนี้ เราได้เพิ่มบันเดิล nagios + PhantomJS บนคอมพิวเตอร์ภายในสำนักงาน และทุกๆ 30 นาที เราจะตรวจสอบความเร็วในการโหลดหน้าเว็บ ตามข้อกำหนดในการให้บริการ เรายังตรวจสอบการอัปเดต 1C-Bitrix และติดตั้งเป็นประจำ และแล้ววันหนึ่ง หลังจากการอัปเดตครั้งถัดไป เราเห็นข้อความในแผงการดูแลระบบที่ระบุว่า ตั้งแต่ฤดูร้อนปี 2019 1C-Bitrix จะหยุดทำงานกับ MySQL 5.5 และจำเป็นต้องอัปเดต พวกจาก ISPSystem หล่อเหลาและขยายฟังก์ชันการทำงานของพาเนลอย่างสม่ำเสมอ ซึ่งต้องขอบคุณพวกเขาเป็นพิเศษ แต่คราวนี้มันเป็นไปไม่ได้ที่จะคลิกทุกอย่างด้วยเมาส์ แต่สิ่งที่เกิดขึ้นและจำนวนผมหงอกในเคราของฉันสามารถพบได้ภายใต้การตัด

มีเพียงตัวเลือกในการติดตั้ง "เซิร์ฟเวอร์ DBMS สำรอง" ที่ติดตั้งในคอนเทนเนอร์ 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/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

ก่อนนำเข้าฐานข้อมูล ขั้นแรกฉันตั้งรหัสผ่านรูท mysql ที่ระบุไว้ในการกำหนดค่า ISP และนำเข้าการถ่ายโอนข้อมูลฐานข้อมูล 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 เกิดข้อผิดพลาดขณะบันทึกองค์ประกอบ infoblock"
โมดูล: iblock รุ่น: ไม่ทราบ
วิธีแก้ไข: ปฏิเสธ

สำหรับตอนนี้ เห็นได้ชัดว่าเป็นไปไม่ได้ที่จะอัปเดตเป็น 10.4 🙁

ที่มา: will.com

เพิ่มความคิดเห็น