Instalarea Firebird 3 pe versiunile Linux moderne: CentOS8 și Ubuntu 19

În acest articol vom descrie setul minim de acțiuni necesare pentru instalarea optimă a DBMS Firebird versiunea 3.0 pe noile distribuții Linux. CentOS 8 și Ubuntu 19 sunt selectate pentru exemple.

Pentru „livrarea” distribuției Firebird către sistemul țintă, în acest ghid, opțiunea de descărcare a arhivei tar.gz este selectată folosind un link de pe site-ul oficial al proiectului (firebirdsql.org).

Pentru cei mai nerăbdători, mergi direct în luptă:

Instalare rapidă

Editarea fișierului /etc/sysctl.confprin adăugarea liniei:

vm.max_map_count = 256000

Salvați fișierul și aplicați setarea:

sudo sysctl -p /etc/sysctl.conf

Instrucțiunile suplimentare diferă pentru CentOS 8 și Ubuntu 19, dar ССЫЛКА и КАТАЛОГ indicați un link de pe site-ul web oficial al proiectului Firebird pentru descărcarea distribuției și directorul în care distribuția va fi dezambalată în timpul procesului de descărcare.
În prezent (martie 2020), versiunea actuală este Firebird 3.0.5 (aici este legătura la versiunea pe 64 de biți).

CentOS 8

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

Instalarea efectivă a DBMS Firebird:

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

Dacă doriți să înțelegeți mai bine ce fac aceste acțiuni, citiți mai departe.

Corpul principal

Un scurt preambul

Se presupune că sistemul de operare este deja instalat într-o versiune minimă și este configurat accesul la depozitele publice sau la copiile locale ale acestora.

Se presupune că cititorul are cunoștințe de bază despre Linux și DBMS Firebird.

planificare

Pe serverul DBMS se recomandă alocarea de secțiuni separate pentru fișierele temporare (/tmp), fișiere de bază de date și copii de siguranță locale.

Cele temporare includ fișierele de blocare, fișierele de sortare, fișierele de „materializare” a tabelelor temporare globale (GTT) și tabelele de monitorizare. Fișierele pentru sortare și tabelele temporare globale se află în /tmp, fișierele mon$-table și fișierele de blocare – în /tmp/firebird.

Fișierele de sortare sunt „șterse” (unlink) imediat după creare, deci nu pot fi „văzute” în lista de directoare - doar în lista de handle de proces (marcate ca deleted):

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

În lista de pseudodirectoare /proc/…/fd/ sunt afișate legături simbolice, iar informațiile reale despre fișier sunt date de:

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

unde НОМЕР – descriptor (descriptor) al dosarului de interes.

In loc sa suni "pgrep исполняемый-файл„Puteți înlocui imediat identificatorul procesului de interes.

Fișierele temporare pot fi foarte mari, deci /tmp Este recomandat să alocați cel puțin 20-30 GB. Trebuie avut în vedere faptul că dimensiunea fișierelor de sortare depinde doar de cantitatea de date sortată în mod explicit sau implicit în cerere, iar un singur utilizator poate „crea” gigaocteți de fișiere temporare.

Secțiunea pentru fișierele bazei de date trebuie să găzduiască toate fișierele bazei de date. plus, cel puțin, o copie a celui mai mare fișier de bază de date. Este necesar să se țină cont de creșterea fișierelor de baze de date în viitor pentru câțiva ani.

Secțiunea de backup-uri locale trebuie să conțină cel puțin o arhivă de rezervă a tuturor bazelor de date plus o copie de rezervă a celei mai mari baze de date. Este de dorit ca această secțiune să conțină și spațiu pentru restaurarea celei mai mari baze de date. Ar trebui să se țină cont de creșterea numărului de copii de siguranță și a arhivelor de rezervă în viitor pentru câțiva ani.

ПредвР° рительнР° СЏ подготоваР°

Serverul DBMS Firebird 3.0 alocă și eliberează în mod dinamic memoria de sistem, ceea ce poate duce la fragmentarea acesteia. De exemplu, după ce un număr mare de utilizatori sunt deconectați de la superserver în același timp, pot apărea erori atunci când se realizează conexiuni noi.

Fragmentarea memoriei este controlată de un parametru de sistem vm.max_map_count, implicit este 64K. Se recomandă creșterea valorii sale de patru ori:

sudo sysctl vm.max_map_count=256000

Pentru ca noua valoare să fie setată când sistemul repornește, adăugați la fișier /etc/sysctl.conf linia:

vm.max_map_count = 256000

Este recomandabil să faceți un comentariu, astfel încât motivul modificării acestui parametru să fie clar. Puteți edita mai întâi fișierul și apoi aplicați setările salvate în el:

sudo sysctl -p /etc/sysctl.conf

Instalarea pachetelor necesare

Fișierele executabile ale SGBD-ului Linux Firebird 3.0 depind de bibliotecile ncurses (libncurses.so.5), ICU (nu este legat de versiune și nu este afișat în ieșire ldd) și tomath (libtommath.so.0). Pentru a descărca și despacheta arhiva de asamblare, veți avea nevoie de utilități gzip, tar и curl sau wget. versiuni ICU, gzip, tar и curl/wget – sunt nesemnificative.

Lucrul cu pachete depinde de sistem și de managerul de pachete folosit în sistem, așa că le vom lua în considerare unul câte unul.

CentOS 8

CentOS 8 folosește un nou manager de pachete – dnf și se numește „transparent” prin comandă yum. Deoarece pentru scopurile noastre nu există nicio diferență între ele - în exemple va exista yum.

Actualizați memoria cache a metadatelor: sudo yum makecache

Pachetul libtomath este situat într-un depozit separat E(xtra)P(ackages for)E(nterprise)L(inux), așa că verificăm dacă este deja inclus:

yum -C repolist

Opțiunea „doar din cache” (-C sau --cache-only) este folosit pentru a elimina verificările și descărcările inutile, făcând yum mai rapid. Dacă nu există un depozit epel în listă, instalați-l și actualizați memoria cache a metadatelor:

sudo yum install epel-release &&
sudo yum makecache

Confirmăm solicitările, dacă este necesar, verificând valorile cheilor pgp cu cele deja cunoscute dintr-o sursă de încredere.

Dacă există probleme la încărcarea metainformațiilor din depozit din resursele https, atunci editați fișierul /etc/yum.repos.d/epel.repo, înlocuind https:// pe http:// și repetați comanda de actualizare a memoriei cache.

Verificăm starea pachetelor necesare (comanda este complicată, în exemplul de ieșire pachetul pe 32 de biți este filtrat):

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

Noi vedem asta curl, gzip и ncurses găzduit în pseudo-depozitul de instalare (anaconda) și tar – exclus din instalarea minimă a sistemului. Versiuni majore libncurses и libtommath mai mult decât este necesar: 6 și 1 în loc de 5 și, respectiv, 0. Dacă același pachet este atât instalat, cât și disponibil, a fost lansată o actualizare pentru acesta. Instalați pachetele lipsă:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Utilitarele sunt concepute pentru a gestiona pachetele apt, apt‑get и apt‑cache. Primul este conceput pentru lucru interactiv, iar ultimele două sunt concepute pentru a fi utilizate în scripturi. Numele pachetelor sunt ușor diferite și includ versiunea.

Verificăm starea pachetelor necesare (comanda este combinată, rezultatul exemplului este scurtat și pachetele pe 32 de biți sunt filtrate):

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]

Pachete pentru care indică parantezele pătrate installed/upgradable – instalat. Disponibil dar neinstalat ncurses5, în loc de curl instalat wget. Instalați pachetele lipsă:

sudo apt‑get install 
libncurses5 libtommath1

Crearea de legături simbolice

Întrucât libtommath.so.1 и libncurses.so.6 compatibil invers cu libtommath.so.0 и libncurses.so.5, atunci pentru Firebird este suficient să creați legături simbolice către versiunile existente ale bibliotecilor.

Găsim libtommath.so.1 (libncurses.so.? situat în același director):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Creăm legături simbolice.

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

Să verificăm rezultatul (comanda este complicată, exemplele de ieșire sunt scurtate):

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

Descărcarea setului de distribuție DBMS Firebird.

Site-ul web oficial al proiectului Firebird (firebirdsql.org) publică link-uri către distribuții de versiuni „oficiale” și versiuni „zilice” (build-uri instantanee).

Versiunile oficiale Linux sunt disponibile ca arhive (tar.gz) și pachete deb/rpm, dar versiunile sunt disponibile doar ca arhive. Vom lua în considerare „instalatorul generic” (instalatorul generic de la tar.gz).

Arhiva de compilare trebuie să fie descărcată și dezambalată, dar vom combina ambele procese. Despachetarea se face în /tmp,URL indică linkul către arhiva descărcabilă.

răsuci:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

În mod implicit curl trimite datele descărcate la stdout, dar nu se ocupă de redirecționări și adăugăm „‑L", dar wget, dimpotrivă: se ocupă de redirecționări, dar scrie date într-un fișier și punem "‑O‑" Pentru tar indica utilizarea gzip-filtru și directorul în care se va efectua dezambalarea. Când procesul este finalizat, va apărea un director ca acesta Firebird‑3.0.5.33220‑0.amd64 cu trei fisiere: install.sh, buildroot.tar.gz и manifest.txt.

Instalarea Firebird

În timpul pregătirii preliminare, am ajustat valoarea parametrului sistemului vm.max_map_count, a verificat disponibilitatea și a instalat bibliotecile ICU, ncurses și tommath. Asigurați-vă că versiunile de ncurses și tommath sunt corecte (libncures.so.5 и libtommath.so.0) și a creat legăturile simbolice necesare.

Instalarea propriu-zisă este foarte simplă. Accesați directorul în care a fost dezambalată arhiva de distribuție Firebird, verificați și, dacă este necesar, setați indicatorul „executable” pentru script install.sh:

chmod +x install.sh

rulați scriptul de instalare:

sudo ./install.sh

Apăsând tasta Enter confirmăm începerea instalării, iar la primirea solicitării, introducem parola sysdba.

Scriptul de instalare pornește automat systemd-unitate firebird-superserver (arhitectură Firebird 3.0 silentioasă). Serviciul Firebird va funcționa cu parametrii impliciti pentru superserver: un cache de pagini de 2048 de pagini (per bază de date), un buffer de sortare de 64 MB (partajat) și conectarea doar a clienților versiunea XNUMX. Vizualizați opțiunile firebird.conf:

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

Vă rugăm să rețineți că noile valori de la firebird.conf va fi activat numai după repornirea serviciului Firebird.

La selectarea valorilor parametrilor, trebuie avut în vedere faptul că există trei „consumatori” principali: cache-ul paginii (pentru baza de date), tamponul de sortare (partajat) și memoria alocată de server pentru conexiunile client. Puteți gestiona doar primele două - cantitatea de memorie pentru conexiunile client depinde de numărul și textul interogărilor din cache, planurile acestora și obiectele bazei de date implicate în interogări. Estimările memoriei pentru conexiunea clientului sunt făcute numai empiric și se pot schimba pe măsură ce aplicațiile client și/sau obiectele bazei de date se modifică.

Pentru un superserver pe gazde cu o cantitate mică de memorie (până la 12-16 GB), nu ar trebui să alocați mai mult de o treime sau un sfert din cantitatea totală de RAM pentru memoria cache a paginii și tamponul de sortare.

Dacă numărul de baze de date nu este fix și se poate modifica, cantitatea totală de memorie cache a paginii trebuie împărțită la numărul maxim de baze de date care pot fi pe server. Mărimea memoriei cache a paginii este specificată în pagini și trebuie convertită separat în octeți.

Pentru a trece la arhitectura clasică, trebuie, cel puțin, să specificați în mod explicit ServerMode в firebird.conf, reduceți memoria cache a paginii acolo (nu mai mult de 2K), reduceți tamponul de sortare (volumul total permis de toate tipurile împărțit la numărul maxim de conexiuni), dezactivați și opriți unitatea firebird-superserver, activați și porniți unitatea firebird-classic.socket.

Folosirea arhitecturii superclasice din Firebird 3.0 nu are prea mult sens: „fiabilitatea” este ca un superserver și același buffer de sortare general. Nu există un cache comun al paginii și „pierderile” pentru sincronizarea diferitelor conexiuni între ele sunt aceleași ca în cea clasică.

Trebuie amintit că în Firebird 3.0 unii parametri (cache-ul paginii, dimensiunile fișierelor de blocare, tabelele hash și alții) pot fi setați în databases.conf individual pentru fiecare bază de date. Pentru un superserver este util, de exemplu, să setați o valoare mică DefaultDbCachePages в firebird.conf și instalați cache-uri individuale de pagină pentru bazele de date necesare în databases.conf.

Pune întrebări despre articol în comentarii sau scrie scrisori la adresa noastră de asistență [e-mail protejat].

Sursa: www.habr.com

Adauga un comentariu