Î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 (
Pentru cei mai nerăbdători, mergi direct în luptă:
Instalare rapidă
Editarea fișierului /etc/sysctl.conf
prin 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 (
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