Το Bitrix και το MariaDB ενημερώνονται στην πιο πρόσφατη σταθερή έκδοση

Καλημέρα, αγαπητοί κάτοικοι του Khabrovsk! Επιτρέψτε μου να συστηθώ, Αλέξανδρε. Διαχειριστής συστήματος ενός μικρού αλλά περήφανου στούντιο WEB. Θέλουμε πραγματικά τα πάντα να λειτουργούν γρήγορα, με ασφάλεια και με το πιο πρόσφατο λογισμικό. Για να γίνει αυτό, εγκαταστήσαμε ακόμη και το πακέτο nagios+PhantomJS στον υπολογιστή εντός γραφείου και ελέγχουμε την ταχύτητα φόρτωσης της σελίδας κάθε 30 λεπτά. Σύμφωνα με τους όρους παροχής υπηρεσιών, παρακολουθούμε επίσης τις ενημερώσεις 1C-Bitrix και τις εγκαθιστούμε τακτικά. Και μια μέρα, μετά την επόμενη ενημέρωση, βλέπουμε ένα μήνυμα στον πίνακα διαχείρισης ότι από το καλοκαίρι του 2019, το 1C-Bitrix σταματά να λειτουργεί με την MySQL 5.5 και πρέπει να ενημερώσουμε. Τα παιδιά από το ISPSystem είναι όμορφοι και επεκτείνουν τακτικά τη λειτουργικότητα του πίνακα, για το οποίο τους ευχαριστούμε ιδιαίτερα. Αλλά αυτή τη φορά δεν ήταν δυνατό να κάνετε κλικ σε όλα με το ποντίκι. Αλλά μπορείτε να μάθετε τι συνέβη και πόσες γκρίζες τρίχες υπάρχουν τώρα στα γένια μου κάτω από το κόψιμο.

Υπήρχε μόνο μια επιλογή εγκατάστασης ενός "εναλλακτικού διακομιστή DBMS" που είναι εγκατεστημένος σε ένα κοντέινερ Docker. Φυσικά, καταλαβαίνω ότι το Docker είναι πολύ φειδωλό με τους πόρους, αλλά ανεξάρτητα από το πόσο καλά λειτουργεί, τα γενικά έξοδα θα εξακολουθούν να είναι >0. Και εδώ φαίνεται να παλεύουμε σε δέκατα του δευτερολέπτου και να βελτιστοποιούμε όλους τους ιστότοπους στην είσοδο πριν τις δημοσιεύσουμε και υπογράψουμε συμφωνία. Οπότε όχι η επιλογή μου.
Εντάξει, τι λέει η τεκμηρίωση; Δημιουργήστε αντίγραφα ασφαλείας όλων, προσθέστε ένα αρχείο στο yum.repos.d με έναν σύνδεσμο στο αποθετήριο MariaDB και, στη συνέχεια,

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

Ο Yum θα ορκιστεί στη συνέχεια ότι κάποιος διέγραψε τα πακέτα εν αγνοία του. Αλλά πρώτα απ 'όλα, αφήστε τον να ορκιστεί, δεν πειράζει. Και δεύτερον, αν κάνετε τη διαγραφή μέσω 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) και το αποτέλεσμα ήταν το μήνυμα "αυτό το πρόβλημα δεν σχετίζεται με τη λειτουργία του 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. Αν θέλετε, υπάρχει μια επιλογή με εναλλακτικό διακομιστή στο Docker.
— Πώς όμως θα φτάσουν εκεί οι χρήστες και οι βάσεις δεδομένων; Για λιμενεργάτης;
- Λοιπόν, τους σέρνετε εκεί με τα χέρια σας...
- Ναί! Και μην ξεχνάτε ότι η θύρα για το 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

Πριν από την εισαγωγή των βάσεων δεδομένων, όρισα πρώτα τον κωδικό πρόσβασης root για τη mysql που καθορίστηκε στις ρυθμίσεις παραμέτρων του ISP και εισήγαγα την ένδειξη απόδειξης της βάσης δεδομένων mysql. Λοιπόν, αφού έχουμε ήδη χρήστες και δικαιώματα, απλώς εισάγουμε όλες τις βάσεις δεδομένων χρηστών στη σειρά χρησιμοποιώντας τον λογαριασμό root.

Κείμενο σεναρίου για ένδειξη απόρριψης βάσης δεδομένων:

#!/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, οι πληροφορίες ενημερώνονται και στη συνέχεια μετατρέπονται ξανά σε InooDB.
UPD2:

Μόλις έλαβα μια επιστολή από την 1C-Bitrix με το ακόλουθο περιεχόμενο:

Το αίτημα για αναθεώρηση ολοκληρώθηκε
"Μετά την αναβάθμιση του mariadb στην 10.4.6, παρουσιάστηκε σφάλμα κατά την αποθήκευση ενός στοιχείου μπλοκ πληροφοριών"
Ενότητα: iblock, έκδοση: άγνωστη
Λύση: απορρίφθηκε

Επομένως, είναι προφανώς αδύνατο να ενημερώσετε το 10.4 προς το παρόν 🙁

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο