Εγκατάσταση του Firebird 3 σε σύγχρονες εκδόσεις του Linux: CentOS8 και Ubuntu 19

Σε αυτό το άρθρο θα περιγράψουμε το ελάχιστο σύνολο ενεργειών που απαιτούνται για τη βέλτιστη εγκατάσταση του Firebird DBMS έκδοσης 3.0 σε νέες διανομές Linux. Το CentOS 8 και το Ubuntu 19 επιλέγονται για παραδείγματα.

Για να "παραδοθεί" η διανομή Firebird στο σύστημα προορισμού, σε αυτόν τον οδηγό, επιλέγεται η επιλογή λήψης του αρχείου tar.gz χρησιμοποιώντας έναν σύνδεσμο από τον επίσημο ιστότοπο του έργου (firebirdsql.org).

Για τους πιο ανυπόμονους, πηγαίνετε κατευθείαν στη μάχη:

Γρήγορη εγκατάσταση

Επεξεργασία του αρχείου /etc/sysctl.confπροσθέτοντας τη γραμμή:

vm.max_map_count = 256000

Αποθηκεύστε το αρχείο και εφαρμόστε τη ρύθμιση:

sudo sysctl -p /etc/sysctl.conf

Οι περαιτέρω οδηγίες διαφέρουν για το CentOS 8 και το Ubuntu 19, αλλά ССЫЛКА и КАТАЛОГ υποδείξτε έναν σύνδεσμο από τον επίσημο ιστότοπο του έργου Firebird για τη λήψη της διανομής και τον κατάλογο στον οποίο θα αποσυσκευαστεί η διανομή κατά τη διαδικασία λήψης.
Επί του παρόντος (Μάρτιος 2020) η τρέχουσα έκδοση είναι Firebird 3.0.5 (εδώ είναι ο σύνδεσμος στην έκδοση 64-bit).

8 CentOS

sudo yum -y install epel-release
sudo yum -y makecache
sudo yum -y install libicu libtommath tar
ln -s libncurses.so.5 
/usr/lib64/libncurses.so.5
ln -s libtommath.so.1 
/usr/lib64/libtommath.so.0
curl -L ССЫЛКА|tar -zxC /tmp

Ubuntu 19

sudo apt-get -y install libncurses5 libtommath1
ln -s libtommath.so.1 
/usr/lib/x86_64-linux-gnu/libtommath.so.0
wget -O- ССЫЛКА|tar -zxC /tmp

Η πραγματική εγκατάσταση του Firebird DBMS:

cd /tmp/КАТАЛОГ
sudo ./install.sh

Εάν θέλετε να κατανοήσετε καλύτερα τι κάνουν αυτές οι ενέργειες, διαβάστε παρακάτω.

Κύριο σώμα

Ένα σύντομο προοίμιο

Υποτίθεται ότι το λειτουργικό σύστημα είναι ήδη εγκατεστημένο σε ελάχιστη έκδοση και έχει ρυθμιστεί η πρόσβαση στα δημόσια αποθετήρια ή στα τοπικά τους αντίγραφα.

Υποτίθεται ότι ο αναγνώστης έχει βασικές γνώσεις Linux και Firebird DBMS.

Σχεδιασμός

Στον διακομιστή DBMS συνιστάται να εκχωρήσετε ξεχωριστές ενότητες για προσωρινά αρχεία (/tmp), αρχεία βάσης δεδομένων και τοπικά αντίγραφα ασφαλείας.

Τα προσωρινά περιλαμβάνουν αρχεία κλειδώματος, αρχεία ταξινόμησης, αρχεία «υλοποίησης» καθολικών προσωρινών πινάκων (GTT) και πίνακες παρακολούθησης. Τα αρχεία για ταξινόμηση και καθολικούς προσωρινούς πίνακες βρίσκονται στο /tmp, αρχεία mon$-table και lock-files – in /tmp/firebird.

Τα αρχεία ταξινόμησης "διαγράφονται" (unlink) αμέσως μετά τη δημιουργία, ώστε να μην μπορούν να «φανούν» στη λίστα καταλόγου - μόνο στη λίστα χειρισμών διεργασίας (επισημαίνεται ως deleted):

sudo ls -lhF /proc/`pgrep firebird`/fd

Στη λίστα ψευδοκαταλόγου /proc/…/fd/ εμφανίζονται συμβολικοί σύνδεσμοι και οι πραγματικές πληροφορίες για το αρχείο δίνονται από:

sudo stat -L /proc/`pgrep firebird`/fd/НОМЕР

όπου НОМЕР – περιγραφέας (περιγραφέας) του αρχείου ενδιαφέροντος.

Αντί να καλέσετε "pgrep исполняемый-файл«Μπορείτε να αντικαταστήσετε αμέσως το αναγνωριστικό της διαδικασίας ενδιαφέροντος.

Τα προσωρινά αρχεία μπορεί να είναι πολύ μεγάλα /tmp Συνιστάται να διαθέσετε τουλάχιστον 20-30 GB. Θα πρέπει να ληφθεί υπόψη ότι το μέγεθος των αρχείων ταξινόμησης εξαρτάται μόνο από την ποσότητα των δεδομένων που ταξινομούνται ρητά ή έμμεσα στο αίτημα και ένας μεμονωμένος χρήστης μπορεί να «δημιουργήσει» gigabyte προσωρινών αρχείων.

Η ενότητα για τα αρχεία βάσης δεδομένων πρέπει να φιλοξενεί όλα τα αρχεία βάσης δεδομένων. συν, τουλάχιστον, ένα αντίγραφο του μεγαλύτερου αρχείου βάσης δεδομένων. Είναι απαραίτητο να ληφθεί υπόψη η ανάπτυξη των αρχείων βάσης δεδομένων στο μέλλον για αρκετά χρόνια.

Η ενότητα τοπικών αντιγράφων ασφαλείας πρέπει να περιέχει τουλάχιστον ένα εφεδρικό αρχείο όλων των βάσεων δεδομένων συν ένα αντίγραφο ασφαλείας της μεγαλύτερης βάσης δεδομένων. Είναι επιθυμητό αυτή η ενότητα να περιέχει επίσης χώρο για την επαναφορά της μεγαλύτερης βάσης δεδομένων. Θα πρέπει να ληφθεί υπόψη η ανάπτυξη των αντιγράφων ασφαλείας και των αρχείων αντιγράφων ασφαλείας στο μέλλον για αρκετά χρόνια.

Προκαταρκτική προετοιμασία

Ο διακομιστής Firebird 3.0 DBMS εκχωρεί δυναμικά και ελευθερώνει τη μνήμη του συστήματος, γεγονός που μπορεί να οδηγήσει στον κατακερματισμό της. Για παράδειγμα, μετά την ταυτόχρονη αποσύνδεση μεγάλου αριθμού χρηστών από τον superserver, ενδέχεται να προκύψουν σφάλματα κατά τη δημιουργία νέων συνδέσεων.

Ο κατακερματισμός της μνήμης ελέγχεται από μια παράμετρο συστήματος vm.max_map_count, η προεπιλογή είναι 64K. Συνιστάται να αυξήσετε την τιμή του κατά τέσσερις φορές:

sudo sysctl vm.max_map_count=256000

Για να οριστεί η νέα τιμή κατά την επανεκκίνηση του συστήματος, προσθέστε το στο αρχείο /etc/sysctl.conf γραμμή:

vm.max_map_count = 256000

Συνιστάται να κάνετε ένα σχόλιο ώστε να είναι ξεκάθαρος ο λόγος αλλαγής αυτής της παραμέτρου. Μπορείτε πρώτα να επεξεργαστείτε το αρχείο και στη συνέχεια να εφαρμόσετε τις ρυθμίσεις που είναι αποθηκευμένες σε αυτό:

sudo sysctl -p /etc/sysctl.conf

Εγκατάσταση απαιτούμενων πακέτων

Τα εκτελέσιμα αρχεία του Firebird 3.0 Linux DBMS εξαρτώνται από τις βιβλιοθήκες ncurses (libncurses.so.5), ΜΕΘ (δεν συνδέεται με την έκδοση και δεν εμφανίζεται στην έξοδο ldd) και tommath (libtommath.so.0). Για να πραγματοποιήσετε λήψη και αποσυσκευασία του αρχείου συναρμολόγησης, θα χρειαστείτε βοηθητικά προγράμματα gzip, tar и curl ή wget. εκδόσεις ΜΕΘ, gzip, tar и curl/wget – είναι ασήμαντα.

Η εργασία με πακέτα εξαρτάται από το σύστημα και από τον διαχειριστή πακέτων που χρησιμοποιείται στο σύστημα, επομένως θα τα εξετάσουμε ένα προς ένα.

8 CentOS

Το CentOS 8 χρησιμοποιεί έναν νέο διαχειριστή πακέτων – dnf και λέγεται «διαφανώς» με εντολή yum. Δεδομένου ότι για τους σκοπούς μας δεν υπάρχει διαφορά μεταξύ τους - στα παραδείγματα θα υπάρχουν yum.

Ενημερώστε την κρυφή μνήμη μεταδεδομένων: sudo yum makecache

Το πακέτο libtomath βρίσκεται σε ξεχωριστό αποθετήριο E(xtra)P(ackages for)E(nterprise)L(inux), επομένως ελέγχουμε ότι περιλαμβάνεται ήδη:

yum -C repolist

Επιλογή "μόνο από κρυφή μνήμη" (-C ή --cache-only) χρησιμοποιείται για την εξάλειψη των περιττών ελέγχων και λήψεων, κάνοντας το yum πιο γρήγορο. Εάν δεν υπάρχει αποθετήριο epel στη λίστα, εγκαταστήστε το και ενημερώστε την προσωρινή μνήμη μεταδεδομένων:

sudo yum install epel-release &&
sudo yum makecache

Επιβεβαιώνουμε αιτήματα, εάν είναι απαραίτητο, ελέγχοντας τις τιμές των κλειδιών pgp με εκείνες που είναι ήδη γνωστές από μια αξιόπιστη πηγή.

Εάν υπάρχουν προβλήματα με τη φόρτωση μεταπληροφοριών του αποθετηρίου από πόρους https, επεξεργαστείτε το αρχείο /etc/yum.repos.d/epel.repo, αντικαθιστώντας https:// επί http:// και επαναλάβετε την εντολή ενημέρωσης προσωρινής μνήμης.

Ελέγχουμε την κατάσταση των απαιτούμενων πακέτων (η εντολή είναι πολύπλοκη, στην έξοδο του παραδείγματος το πακέτο 32 bit φιλτράρεται):

yum -C list 
ncurses libicu libtommath 
gzip tar curl wget |
grep -v i686
Installed Packages
curl.x86_64 7.61.1-11.el8 @anaconda
gzip.x86_64 1.9-9.el8 @anaconda
ncurses.x86_64 6.1-7.20180224.el8 @anaconda
Available Packages
libicu.x86_64 60.3-1.el8 BaseOS
libtommath.x86_64 1.1.0-1.el8 epel
tar.x86_64 2:1.30-4.el8 BaseOS
wget.x86_64 1.19.5-8.el8_1.1 AppStream

Το βλέπουμε αυτό curl, gzip и ncurses φιλοξενείται στο ψευδο-αποθήκη εγκαταστάτη (anaconda), και tar – εξαιρούνται από την ελάχιστη εγκατάσταση συστήματος. Σημαντικές εκδόσεις libncurses и libtommath περισσότερο από το απαιτούμενο: 6 και 1 αντί για 5 και 0, αντίστοιχα. Εάν το ίδιο πακέτο είναι εγκατεστημένο και διαθέσιμο, έχει κυκλοφορήσει μια ενημερωμένη έκδοση για αυτό. Εγκαταστήστε τα πακέτα που λείπουν:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Τα βοηθητικά προγράμματα έχουν σχεδιαστεί για τη διαχείριση πακέτων apt, apt‑get и apt‑cache. Το πρώτο έχει σχεδιαστεί για διαδραστική εργασία και τα δύο τελευταία έχουν σχεδιαστεί για χρήση σε σενάρια. Τα ονόματα των πακέτων είναι ελαφρώς διαφορετικά και περιλαμβάνουν την έκδοση.

Ελέγχουμε την κατάσταση των απαιτούμενων πακέτων (η εντολή συνδυάζεται, η έξοδος του παραδείγματος συντομεύεται και τα πακέτα 32 bit φιλτράρονται):

apt list libncurses? libicu?? libtommath? 
gzip tar curl wget |
grep -v i386
curl 7.65.3-1
gzip 1.10-0 [upgradable…]
libicu63 63.2-2 [installed]
libncurses5 6.1
libncurses6 6.1 [installed,automatic]
libtommath1 1.1.0
tar 1.30 [installed]
wget 1.20.3 [installed]

Πακέτα για τα οποία υποδεικνύονται οι αγκύλες installed/upgradable – εγκατεστημένο. Διαθέσιμο αλλά δεν έχει εγκατασταθεί ncurses5, αντί curl εγκατεστημένο wget. Εγκαταστήστε τα πακέτα που λείπουν:

sudo apt‑get install 
libncurses5 libtommath1

Δημιουργία συμβολικών συνδέσμων

Από libtommath.so.1 и libncurses.so.6 προς τα πίσω συμβατό με libtommath.so.0 и libncurses.so.5, τότε για το Firebird αρκεί η δημιουργία συμβολικών συνδέσμων με τις υπάρχουσες εκδόσεις των βιβλιοθηκών.

Βρίσκουμε libtommath.so.1 (libncurses.so.? που βρίσκεται στον ίδιο κατάλογο):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

/usr/lib/x86_64-linux-gnu/libtommath.so.1

Δημιουργούμε συμβολικούς συνδέσμους.

CentOS:

sudo ln -s libtommath.so.1 
/usr/lib64/libtommath.so.0
sudo ln -s libncurses.so.6 
/usr/lib64/libncurses.so.5

Ubuntu:

sudo ln -s libtommath.so.1 
/usr/lib/x86_64-linux-gnu/libtommath.so.0

Ας ελέγξουμε το αποτέλεσμα (η εντολή είναι περίπλοκη, τα παραδείγματα εξόδου συντομεύονται):

ls -lhF 
$(dirname `find /usr -name libtommath.so.1`) |
grep "lib(ncurses|tommath).so."

CentOS:

libncurses.so.5 -> libncurses.so.6*
libncurses.so.6 -> libncurses.so.6.1*
libncurses.so.6.1*
libtommath.so.0 -> libtommath.so.1*
libtommath.so.1 -> libtommath.so.1.1.0*
libtommath.so.1.1.0*

Ubuntu:

libncurses.so.5 -> libncurses.so.5.9
libncurses.so.5.9
libncurses.so.6 -> libncurses.so.6.1
libncurses.so.6.1
libtommath.so.0 -> libtommath.so.1
libtommath.so.1 -> libtommath.so.1.1.0
libtommath.so.1.1.0

Λήψη του κιτ διανομής Firebird DBMS.

Ο επίσημος ιστότοπος του έργου Firebird (firebirdsql.org) δημοσιεύει συνδέσμους προς διανομές «επίσημων» εκδόσεων και «ημερήσιων» εκδόσεων (κατασκευές στιγμιότυπου).

Οι επίσημες εκδόσεις Linux είναι διαθέσιμες ως αρχεία (tar.gz) και πακέτα deb/rpm, αλλά οι εκδόσεις διατίθενται μόνο ως αρχεία. Θα εξετάσουμε το "γενικό πρόγραμμα εγκατάστασης" (γενικό πρόγραμμα εγκατάστασης από το tar.gz).

Το αρχείο κατασκευής πρέπει να ληφθεί και να αποσυσκευαστεί, αλλά θα συνδυάσουμε και τις δύο διαδικασίες. Η αποσυσκευασία γίνεται σε /tmp,Η διεύθυνση URL υποδηλώνει τον σύνδεσμο προς το αρχείο με δυνατότητα λήψης.

μπούκλα:

curl -L URL | tar -zxC /tmp

βάζω:

wget -O– URL | tar -zxC /tmp

Από προεπιλογή curl στέλνει τα ληφθέντα δεδομένα στο stdout αλλά δεν χειρίζεται ανακατευθύνσεις και προσθέτουμε "‑L", αλλά wget, αντίθετα: χειρίζεται ανακατευθύνσεις, αλλά γράφει δεδομένα σε ένα αρχείο και βάζουμε "‑O‑" Για tar υποδεικνύουν χρήση gzip-φίλτρο και τον κατάλογο στον οποίο θα γίνει η αποσυσκευασία. Όταν ολοκληρωθεί η διαδικασία, θα εμφανιστεί ένας κατάλογος όπως αυτός Firebird‑3.0.5.33220‑0.amd64 με τρία αρχεία: install.sh, buildroot.tar.gz и manifest.txt.

Εγκατάσταση Firebird

Κατά την προκαταρκτική προετοιμασία, προσαρμόσαμε την τιμή της παραμέτρου συστήματος vm.max_map_count, έλεγξε για διαθεσιμότητα και εγκατέστησε τις βιβλιοθήκες ΜΕΘ, ncurses και tommath. Βεβαιωθείτε ότι οι εκδόσεις των ncurses και tommath είναι σωστές (libncures.so.5 и libtommath.so.0) και δημιούργησε τους απαραίτητους συμβολικούς συνδέσμους.

Η πραγματική εγκατάσταση είναι πολύ απλή. Μεταβείτε στον κατάλογο όπου αποσυσκευάστηκε το αρχείο διανομής του Firebird, ελέγξτε και, εάν χρειάζεται, ορίστε τη σημαία "εκτελέσιμα" για το σενάριο install.sh:

chmod +x install.sh

εκτελέστε το σενάριο εγκατάστασης:

sudo ./install.sh

Πατώντας το πλήκτρο Enter επιβεβαιώνουμε την έναρξη της εγκατάστασης και με τη λήψη του αιτήματος εισάγουμε τον κωδικό πρόσβασης sysdba.

Το σενάριο εγκατάστασης ξεκινά αυτόματα systemd-μονάδα firebird-superserver (σιωπηλή αρχιτεκτονική Firebird 3.0). Η υπηρεσία Firebird θα λειτουργεί με τις προεπιλεγμένες παραμέτρους για τον superserver: μια προσωρινή μνήμη σελίδων 2048 σελίδων (ανά βάση δεδομένων), μια προσωρινή μνήμη ταξινόμησης 64 MB (κοινόχρηστη) και τη σύνδεση μόνο με πελάτες έκδοσης XNUMX. Προβολή επιλογών firebird.conf:

grep -v ^# firebird.conf | grep -v ^$

Σημειώστε ότι οι νέες τιμές από firebird.conf θα ενεργοποιηθεί μόνο μετά την επανεκκίνηση της υπηρεσίας Firebird.

Κατά την επιλογή των τιμών των παραμέτρων, θα πρέπει να ληφθεί υπόψη ότι υπάρχουν τρεις κύριοι «καταναλωτές»: η προσωρινή μνήμη σελίδας (για τη βάση δεδομένων), η προσωρινή μνήμη ταξινόμησης (κοινόχρηστη) και η μνήμη που εκχωρείται από τον διακομιστή για συνδέσεις πελάτη. Μπορείτε να διαχειριστείτε μόνο τα δύο πρώτα - η ποσότητα της μνήμης για τις συνδέσεις πελάτη εξαρτάται από τον αριθμό και το κείμενο των ερωτημάτων που έχουν αποθηκευτεί στην προσωρινή μνήμη, τα σχέδιά τους και τα αντικείμενα βάσης δεδομένων που εμπλέκονται στα ερωτήματα. Οι εκτιμήσεις της μνήμης σύνδεσης πελάτη γίνονται μόνο εμπειρικά και ενδέχεται να αλλάξουν καθώς αλλάζουν οι εφαρμογές πελάτη και/ή τα αντικείμενα της βάσης δεδομένων.

Για έναν superserver σε κεντρικούς υπολογιστές με μικρή ποσότητα μνήμης (έως 12-16 GB), δεν θα πρέπει να διαθέσετε περισσότερο από το ένα τρίτο ή το ένα τέταρτο της συνολικής ποσότητας μνήμης RAM για την προσωρινή μνήμη σελίδων και την προσωρινή μνήμη ταξινόμησης.

Εάν ο αριθμός των βάσεων δεδομένων δεν είναι σταθερός και μπορεί να αλλάξει, η συνολική ποσότητα της προσωρινής μνήμης σελίδων πρέπει να διαιρεθεί με τον μέγιστο αριθμό βάσεων δεδομένων που μπορεί να υπάρχουν στον διακομιστή. Το μέγεθος της προσωρινής μνήμης σελίδας καθορίζεται σε σελίδες και πρέπει να μετατραπεί χωριστά σε byte.

Για να μεταβείτε στην κλασική αρχιτεκτονική, πρέπει, τουλάχιστον, να καθορίσετε ρητά ServerMode в firebird.conf, μειώστε την προσωρινή μνήμη της σελίδας εκεί (όχι περισσότερο από 2K), μειώστε το buffer ταξινόμησης (ο συνολικός επιτρεπόμενος όγκος όλων των ειδών διαιρεμένος με τον μέγιστο αριθμό συνδέσεων), απενεργοποιήστε και σταματήστε τη μονάδα firebird-superserver, ενεργοποιήστε και ξεκινήστε τη μονάδα firebird-classic.socket.

Η χρήση της υπερκλασικής αρχιτεκτονικής στο Firebird 3.0 δεν έχει πολύ νόημα: η "αξιοπιστία" μοιάζει με έναν superserver και το ίδιο γενικό buffer ταξινόμησης. Δεν υπάρχει κοινή προσωρινή μνήμη σελίδων και οι «απώλειες» για το συγχρονισμό διαφορετικών συνδέσεων μεταξύ τους είναι οι ίδιες όπως στην κλασική.

Θα πρέπει να θυμόμαστε ότι στο Firebird 3.0 ορισμένες παράμετροι (προσωρινή μνήμη σελίδων, μεγέθη αρχείων κλειδώματος, πίνακες κατακερματισμού και ορισμένες άλλες) μπορούν να ρυθμιστούν σε databases.conf ξεχωριστά για κάθε βάση δεδομένων. Για έναν superserver είναι χρήσιμο, για παράδειγμα, να ορίσετε μια μικρή τιμή DefaultDbCachePages в firebird.conf και εγκαταστήστε μεμονωμένες κρυφές μνήμες σελίδων για τις απαιτούμενες βάσεις δεδομένων databases.conf.

Κάντε ερωτήσεις σχετικά με το άρθρο στα σχόλια ή γράψτε επιστολές στη διεύθυνση υποστήριξής μας [προστασία μέσω email].

Πηγή: www.habr.com

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