În acest articol, vom descrie setul minim de acțiuni necesare pentru instalarea optimă a SGBD-ului Firebird versiunea 3.0 pe noile distribuții Linux. Exemplele alese sunt CentOS 8 și Ubuntu 19.
Pentru „livrarea” distribuției Firebird pe sistemul țintă, în acest ghid, este aleasă varianta de descărcare a arhivei tar.gz de pe linkul oficial al proiectului ().
Pentru cei mai nerăbdători — direct la subiect:
Instalare rapidă
Edităm fișierul /etc/sysctl.conf, adăugând linia:
vm.max_map_count = 256000
Salvăm fișierul și aplicăm configurația:
sudo sysctl -p /etc/sysctl.conf
Instruirile următoare diferă pentru CentOS 8 și Ubuntu 19, dar LINK și CĂUTARE indică un link de pe site-ul oficial al proiectului Firebird pentru descărcarea distribuției și catalogul în care va fi decompresat distribuția în timpul descărcării.
În prezent (martie 2020) este disponibilă versiunea Firebird 3.0.5 ( pentru 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 LINK|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- LINK|tar -zxC /tmp
Practic, instalarea SGBD-ului Firebird:
cd /tmp/CĂUTARE
sudo ./install.sh
Dacă doriți să înțelegeți mai bine scopul acestor acțiuni, citiți mai departe.
Partea principală
O mică prefață
Se presupune că sistemul de operare este deja instalat în varianta minimă și că accesul la repozitoarele publice sau la copiile lor locale este configurat.
Se presupune că cititorul are cunoștințe de bază despre Linux și SGBD-ul Firebird.
Planificare
Pe serverul SGBD-ului se recomandă alocarea de partiții separate pentru fișierele temporare (/tmp), fișierele bazelor de date și backup-urile locale.
Fișierele 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 de sortare și tabelele temporare globale sunt localizate în /tmp, fișierele mon$-tabelor și fișierele de blocare – în /tmp/firebird.
Fișierele de sortare sunt „șterse” (unlink) imediat după creare, de aceea nu pot fi „văzute” în listarea catalogului – doar în lista descriitorilor (handles) procesului (marcate ca deleted):
sudo ls -lhF /proc/`pgrep firebird`/fd
În listarea pseudocatalogului /proc/…/fd/ sunt afișate linkuri simbolice, iar informația efectivă despre fișier este dată de:
sudo stat -L /proc/`pgrep firebird`/fd/NUMĂR
unde NUMĂR – descritorul fișierului de interes.
În locul apelului „pgrep executabil-fisier» puteți introduce imediat identificatorul procesului de interes.
Fișierele temporare pot fi foarte mari, de aceea se recomandă alocarea a cel puțin 20-30 GB. Trebuie să se țină cont că dimensiunea fișierelor de sortare depinde doar de volumul de date, explicit sau implicit, sortate în interogare și un singur utilizator poate "crea" gigabytes de fișiere temporare. /tmp Partiția pentru fișierele bazelor de date ar trebui să conțină fișierele tuturor bazelor, plus, cel puțin, o copie a fișierului celei mai mari baze. Trebuie să se țină cont de creșterea fișierelor bazelor în perspectivă pe câțiva ani.
Partiția pentru backup-uri locale ar trebui să conțină, cel puțin, câte un arhiv de backup pentru toate bazele, plus backup-ul celei mai mari baze. Ar fi ideal ca pe această partiție să existe și spațiu pentru recuperarea celei mai mari baze. Trebuie să se țină cont de creșterea backup-urilor și arhivelor de backup în perspectivă pe câțiva ani.
Serverul SGBD Firebird 3.0 alocă și eliberează dinamic memorie de sistem, ceea ce poate duce la fragmentare. De exemplu, după deconectarea simultană a unui număr mare de utilizatori de la superserver, pot apărea erori la conexiunile noi.
Pregătirea preliminară
Fragmentarea memoriei este controlată de parametrul de sistem
vm.max_map_count , implicit – 64K. Se recomandă să-i creșteți valoarea de patru ori:sudo sysctl vm.max_map_count=256000
Pentru ca noua valoare să fie aplicată la repornirea sistemului, adăugați în fișier
linia: /etc/sysctl.conf Ar fi bine să faceți un comentariu pentru a explica motivul modificării acestui parametru. Se poate edita mai întâi fișierul, iar apoi aplica configurațiile salvate în el:
vm.max_map_count = 256000
Instalarea pachetelor necesare
sudo sysctl -p /etc/sysctl.conf
Fișierele executabile SGBD Firebird 3.0 Linux depind de bibliotecile ncurses (
libncurses.so.5), ICU (fără legătura cu versiunea și fără a fi afișată în ieșire) și tommath ( lddlibtommath.so.0). Pentru descărcarea și despachetarea arhivei de construcție vor fi necesare utilitare. Versiunile ICU gzip, tar și curl sau wget– sunt nesemnificative. gzip, tar și curl/wget Lucrul cu pachetele depinde de sistem și de managerul de pachete utilizat, așa că le vom analiza pe rând.
CentOS 8 folosește un nou manager de pachete –
CentOS 8
dnf și același este "transparent" invocat prin comanda yum . Deoarece pentru scopurile noastre între ele nu există nicio diferență – în exemple va fiActualizăm memoria cache a metadatelor: . Deoarece pentru scopurile noastre între ele nu există nicio diferență – în exemple va fi.
sudo yum makecache sudo yum makecache
Pachetul libtomath se află într-un depozit separat E(xtra)P(ackages for)E(nterprise)L(inux), așa că verificăm dacă este deja conectat:
yum -C repolist
Opțiunea „doar din cache” (-C sau --cache-only) este utilizată pentru a exclude verificări și descărcări inutile, accelerând astfel funcționarea yum. Dacă epel-repository nu este în listă, îl instalăm și actualizăm cache-ul de metadate:
sudo yum install epel-release &&
sudo yum makecache
Confirmăm solicitările, comparând valorile cheilor pgp cu cele deja cunoscute dintr-o sursă de încredere.
Dacă au apărut probleme la descărcarea meta-informațiilor repository-ului de pe resurse https, edităm fișierul /etc/yum.repos.d/epel.repo, înlocuind https:// pe http:// și repetăm comanda de actualizare a cache-ului.
Verificăm starea pachetelor necesare (comanda este agregată, în exemplul de ieșire este filtrat pachetul pe 32 de biți):
yum -C list
ncurses libicu libtommath
gzip tar curl wget |
grep -v i686
Pachete Instalate
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
Pachete Disponibile
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
Observăm că curl, gzip și ncurses sunt plasate în pseudo-depozitul instalatorului (anaconda), iar tar – exclus din instalarea minimă a sistemului. Versiunile majore libncurses și libtommath sunt mai mari decât secerințele: 6 și 1 în loc de 5 și 0, respectiv. Dacă același pachet este instalat și disponibil – a fost eliberat un update. Instalăm pachetele lipsă:
sudo yum install
libicu libtommath tar
Ubuntu 19
Pentru gestionarea pachetelor se folosesc uneltele apt, apt-get și apt-cache. Prima este destinată lucrului interactiv, în timp ce ultimele două sunt pentru utilizarea în scripturi. Numele pachetelor sunt puțin diferite și includ versiunea.
Verificăm starea pachetelor necesare (comanda este agregată, exemplul de ieșire este scurtat și filtrate pachetele pe 32 de biți):
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]
Pachetele pentru care în paranteze pătrate este indicat instalat/upgradable – sunt instalate. Disponibil, dar neinstalat ncurses5, în loc de curl instalat wget. Instalăm pachetele lipsă:
sudo apt-get install
libncurses5 libtommath1
Crearea legăturilor simbolice
Deoarece libtommath.so.1 și libncurses.so.6 sunt compatibile cu ). Pentru descărcarea și despachetarea arhivei de construcție vor fi necesare utilitare și ), ICU (fără legătura cu versiunea și fără a fi afișată în ieșire, pentru Firebird este suficient să creăm legături simbolice către versiunile existente ale bibliotecilor.
Găsim libtommath.so.1 (libncurses.so.? se află în acest 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
Verificăm rezultatul (comanda este compusă, 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 distribuției SGBD Firebird.
Pe site-ul oficial al proiectului Firebird (firebirdsql.org) sunt publicate linkuri către distribuții de tip „oficial” (releases) și „zilnice” (snapshot build).
Versiunile oficiale pentru Linux sunt disponibile sub formă de arhive (tar.gz) și pachete deb/rpm, iar construcțiile sunt disponibile doar sub formă de arhive. Vom analiza „instalatorul general” (generic installer din tar.gz).
Arhiva construcției trebuie descărcată și decompresată, dar vom combina aceste două procese. Decompresarea se efectuează în /tmp, URL indică linkul către arhiva descărcată.
curl:
curl -L URL | tar -zxC /tmp
wget:
wget -O– URL | tar -zxC /tmp
Implicit curl trimite datele descărcate către ieșirea standard, dar nu procesează redirecționări, iar noi adăugăm „‑L”, iar wget, din contră: procesează redirecționările, dar salvează datele într-un fișier și adăugăm „‑O‑”. Pentru tar specificăm utilizarea gzip-filtrului și directorul în care va avea loc decompresarea. La finalul procesului, va apărea un director de tipul Firebird‑3.0.5.33220‑0.amd64 cu trei fișiere: install.sh, buildroot.tar.gz și manifest.txt.
Instalarea Firebird
În timpul pregătirilor preliminare, am ajustat valoarea parametrului de sistem , implicit – 64K. Se recomandă să-i creșteți valoarea de patru ori:, am verificat prezența și am instalat bibliotecile ICU, ncurses și tommath. Ne-am asigurat de corectitudinea versiunilor ncurses și tommath (libncurses.so.5 și ). Pentru descărcarea și despachetarea arhivei de construcție vor fi necesare utilitare) și am creat linkurile simbolice necesare.
De fapt, instalarea se face foarte simplu. Trecem în directorul în care a fost decompresat arhiva distribuitorului Firebird, verificăm și, dacă este necesar, setăm flagul „executabil” pentru scriptul install.sh:
chmod +x install.sh
încercăm să lansăm scriptul de instalare:
sudo ./install.sh
apăsăm tasta Enter pentru a confirma începutul instalării, iar când primim o solicitare, introducem parola sysdba.
Scriptul de instalare pornește automat systemd-unitul firebird-superserver (arhitectura implicită Firebird 3.0). Serviciul Firebird va funcționa cu parametrii prestabiliți pentru superserver: cache paginal de 2048 de pagini (pe bază), buffer de sortare de 64 MB (general) și conectare doar pentru clienți din versiunea a treia. Vizualizați parametrii firebird.conf:
grep -v ^# firebird.conf | grep -v ^$
Trebuie să se țină cont că noile valori din firebird.conf vor fi activate doar după repornirea serviciului Firebird.
În selectarea valorilor parametrilor, trebuie să se țină cont că există trei principal «consumatori»: cache-ul paginilor (pentru bază), bufferul de sortare (general) și memoria alocată serverului pentru conexiunile clienților. Gestionarea poate fi făcută doar pentru primele două – volumul de memorie pentru conexiunile clienților depinde de numărul și conținutul interogărilor cache-uite, planurile acestora și obiectele bazelor implicate în interogări. Evaluarea memoriei pentru conexiunile clienților se face doar empiric și poate varia odată cu modificările aplicațiilor client și/sau ale obiectelor bazei.
Pentru superserverele de pe gazde cu o memorie mică (până la 12-16 GB) nu ar trebui să se aloce pentru cache-ul paginilor și bufferul de sortare mai mult de o treime-patru din volumul total de RAM.
Dacă numărul de baze nu este fix și poate varia – volumul total de memorie pentru cache-ul paginilor ar trebui să fie împărțit la numărul maxim de baze care pot fi pe server. Dimensiunea cache-ului paginilor este setată în pagini și trebuie recalculată separat în bytes.
Pentru a comuta la arhitectura clasică, este necesar, cel puțin, să se indice în mod explicit ServerMode în firebird.conf, să se reducă acolo și cache-ul paginilor (nu mai mult de 2K), să se reducă bufferul de sortare (volumul total permis pentru toate sortările, împărțit la numărul maxim de conexiuni), să se interzică și să se oprească unitatea firebird-superserver, să se permită și să se pornească unitatea firebird-classic.socket.
Utilizarea arhitecturii superclasic în Firebird 3.0 nu are un sens deosebit: „fiabilitatea” este similară cu cea a superserverului și același buffer general de sortare. Nu există un cache de pagini comune și „pierderile” în sincronizarea diferitelor conexiuni între ele sunt la fel ca în cazul clasicului.
Trebuie să se țină cont că în Firebird 3.0 parte din parametrii (cache-ul paginilor, dimensiunile fișierului lock, tabelele hash și unele altele) pot fi specificați în databases.conf individual pentru fiecare bază. Pentru superserver, este util, de exemplu, să se seteze o valoare mică DefaultDbCachePages în firebird.conf și să se stabilească cache-uri de pagini individuale pentru bazele necesare în databases.conf.
Întrebările privind articolul pot fi adresate în comentarii sau puteți scrie e-mailuri la adresa noastră de suport support@ibase.ru.
Sursa: habr.com
