Instaliranje Firebird 3 na moderne verzije Linuxa: CentOS8 i Ubuntu 19

U ovom ćemo članku opisati minimalni skup radnji potrebnih za optimalnu instalaciju Firebird DBMS verzije 3.0 na novim distribucijama Linuxa. Za primjere su odabrani CentOS 8 i Ubuntu 19.

Za "isporuku" Firebird distribucije ciljnom sustavu, u ovom vodiču je odabrana opcija preuzimanja arhive tar.gz pomoću poveznice sa službene web stranice projekta (firebirdsql.org).

Za najnestrpljivije, krenite ravno u bitku:

Brza instalacija

Uređivanje datoteke /etc/sysctl.confdodavanjem reda:

vm.max_map_count = 256000

Spremite datoteku i primijenite postavku:

sudo sysctl -p /etc/sysctl.conf

Daljnje upute razlikuju se za CentOS 8 i Ubuntu 19, ali ССЫЛКА и КАТАЛОГ navedite poveznicu sa službene web stranice projekta Firebird za preuzimanje distribucije i direktorij u koji će se distribucija raspakirati tijekom procesa preuzimanja.
Trenutno (ožujak 2020.) trenutno izdanje je Firebird 3.0.5 (ovdje je veza na 64-bitnu verziju).

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

Stvarna instalacija Firebird DBMS-a:

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

Ako želite bolje razumjeti čemu te radnje služe, čitajte dalje.

Glavno tijelo

Kratka preambula

Pretpostavlja se da je OS već instaliran u minimalnoj verziji i da je konfiguriran pristup javnim spremištima ili njihovim lokalnim kopijama.

Pretpostavlja se da čitatelj ima osnovno znanje o Linuxu i Firebird DBMS-u.

planiranje

Na DBMS poslužitelju preporučuje se dodijeliti zasebne odjeljke za privremene datoteke (/tmp), datoteke baze podataka i lokalne sigurnosne kopije.

Privremene uključuju zaključane datoteke, datoteke za sortiranje, datoteke "materijalizacije" globalnih privremenih tablica (GTT) i tablica za praćenje. Datoteke za sortiranje i globalne privremene tablice nalaze se u /tmp, datoteke mon$-table i zaključane datoteke – u /tmp/firebird.

Razvrstavanje datoteka se "briše" (unlink) odmah nakon stvaranja, tako da se ne mogu "vidjeti" u popisu direktorija - samo u popisu ručica procesa (označenih kao deleted):

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

U popisu pseudo imenika /proc/…/fd/ prikazane su simboličke veze, a stvarne informacije o datoteci dane su putem:

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

gdje НОМЕР – deskriptor (deskriptor) datoteke od interesa.

Umjesto poziva "pgrep исполняемый-файл"Možete odmah zamijeniti identifikator procesa od interesa.

Privremene datoteke mogu biti vrlo velike, pa /tmp Preporuča se izdvojiti najmanje 20-30 GB. Treba uzeti u obzir da veličina datoteka za sortiranje ovisi samo o količini podataka eksplicitno ili implicitno sortiranih u zahtjevu, a jedan korisnik može “kreirati” gigabajte privremenih datoteka.

Odjeljak za datoteke baze podataka mora sadržavati sve datoteke baze podataka. plus, najmanje, kopija najveće datoteke baze podataka. Potrebno je uzeti u obzir rast datoteka baze podataka u budućnosti za nekoliko godina.

Odjeljak za lokalne sigurnosne kopije mora sadržavati barem jednu sigurnosnu arhivu svih baza podataka plus sigurnosnu kopiju najveće baze podataka. Poželjno je da ovaj odjeljak sadrži i prostor za vraćanje najveće baze podataka. Treba uzeti u obzir rast sigurnosnih kopija i sigurnosnih arhiva u budućnosti za nekoliko godina.

Preliminarna priprema

Firebird 3.0 DBMS poslužitelj dinamički dodjeljuje i oslobađa sistemsku memoriju, što može dovesti do njegove fragmentacije. Na primjer, nakon što se veliki broj korisnika odjednom odspoji sa superposlužitelja, mogu se pojaviti pogreške prilikom uspostavljanja novih veza.

Fragmentacijom memorije upravlja parametar sustava vm.max_map_count, zadana vrijednost je 64K. Preporuča se povećati njegovu vrijednost četiri puta:

sudo sysctl vm.max_map_count=256000

Kako bi nova vrijednost bila postavljena kada se sustav ponovno pokrene, dodajte u datoteku /etc/sysctl.conf crta:

vm.max_map_count = 256000

Preporučljivo je dati komentar kako bi razlog promjene ovog parametra bio jasan. Prvo možete urediti datoteku, a zatim primijeniti postavke spremljene u njoj:

sudo sysctl -p /etc/sysctl.conf

Instaliranje potrebnih paketa

Izvršne datoteke Firebird 3.0 Linux DBMS ovise o ncurses bibliotekama (libncurses.so.5), ICU (nije vezan uz verziju i ne prikazuje se u izlazu ldd) i tommath (libtommath.so.0). Za preuzimanje i raspakiranje arhive sklopa trebat će vam uslužni programi gzip, tar и curl ili wget. ICU verzije, gzip, tar и curl/wget – su beznačajne.

Rad s paketima ovisi o sustavu i o upravitelju paketima koji se koristi u sustavu, pa ćemo ih razmotriti jedan po jedan.

8 CentOS

CentOS 8 koristi novi upravitelj paketa – dnf a naredbom se naziva “transparentno”. yum. Budući da za naše potrebe nema razlike između njih - u primjerima će je biti yum.

Ažurirajte predmemoriju metapodataka: sudo yum makecache

Paket libtomath nalazi se u posebnom repozitoriju E(xtra)P(ackages for)E(nterprise)L(inux), pa provjeravamo da je već uključen:

yum -C repolist

Opcija "samo iz predmemorije" (-C ili --cache-only) koristi se za uklanjanje nepotrebnih provjera i preuzimanja, čineći yum bržim. Ako na popisu nema epel repozitorija, instalirajte ga i ažurirajte predmemoriju metapodataka:

sudo yum install epel-release &&
sudo yum makecache

Potvrđujemo zahtjeve, ako je potrebno, provjeravajući vrijednosti pgp ključeva s onima koji su već poznati iz pouzdanog izvora.

Ako postoje problemi s učitavanjem metainformacija repozitorija iz https resursa, uredite datoteku /etc/yum.repos.d/epel.repo, zamjena https:// na http:// i ponovite naredbu za ažuriranje predmemorije.

Provjeravamo status potrebnih paketa (naredba je komplicirana, u izlaznom primjeru 32-bitni paket je filtriran):

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

To vidimo curl, gzip и ncurses smješteno u pseudo-repozitoriju programa za instalaciju (anaconda), i tar – isključeno iz minimalne instalacije sustava. Glavne verzije libncurses и libtommath više od potrebnog: 6 i 1 umjesto 5 odnosno 0. Ako je isti paket i instaliran i dostupan, za njega je izdano ažuriranje. Instalirajte pakete koji nedostaju:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Pomoćni programi dizajnirani su za upravljanje paketima apt, apt‑get и apt‑cache. Prvi je dizajniran za interaktivni rad, a posljednja dva su dizajnirana za korištenje u skriptama. Nazivi paketa malo su drugačiji i uključuju verziju.

Provjeravamo status potrebnih paketa (naredba se kombinira, primjer izlaza se skraćuje, a 32-bitni paketi se filtriraju):

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]

Paketi za koje označavaju uglate zagrade installed/upgradable – instalirano. Dostupan ali nije instaliran ncurses5umjesto curl instaliran wget. Instalirajte pakete koji nedostaju:

sudo apt‑get install 
libncurses5 libtommath1

Stvaranje simboličkih veza

Od libtommath.so.1 и libncurses.so.6 unatrag kompatibilan sa libtommath.so.0 и libncurses.so.5, tada je za Firebird dovoljno stvoriti simboličke veze na postojeće verzije biblioteka.

Nalazimo libtommath.so.1 (libncurses.so.? nalazi se u istom direktoriju):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Mi stvaramo simboličke veze.

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

Provjerimo rezultat (naredba je komplicirana, izlazni primjeri su skraćeni):

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

Preuzimanje Firebird DBMS distribucijskog kompleta.

Službeno web mjesto projekta Firebird (firebirdsql.org) objavljuje poveznice na distribucije "službenih" izdanja i "dnevnih" verzija (snapshot builds).

Službena izdanja Linuxa dostupna su kao arhive (tar.gz) i deb/rpm paketi, ali međugradnje su dostupne samo kao arhive. Razmotrit ćemo "generički instalater" (generički instalater iz tar.gz).

Arhivu za izgradnju treba preuzeti i raspakirati, ali mi ćemo kombinirati oba procesa. Raspakiranje se vrši u /tmp,URL označava vezu na arhivu za preuzimanje.

kovrča:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Po defaultu curl šalje preuzete podatke na stdout, ali ne obrađuje preusmjeravanja i dodajemo "‑L", a wget, naprotiv: obrađuje preusmjeravanja, ali zapisuje podatke u datoteku i stavljamo "‑O‑" Za tar naznačiti upotrebu gzip-filter i direktorij u koji će se izvršiti raspakiranje. Kada se proces završi, pojavit će se ovakav direktorij Firebird‑3.0.5.33220‑0.amd64 sa tri datoteke: install.sh, buildroot.tar.gz и manifest.txt.

Instalacija Firebird-a

Tijekom preliminarne pripreme prilagodili smo vrijednost parametra sustava vm.max_map_count, provjerio dostupnost i instalirao ICU, ncurses i tommath knjižnice. Provjerite jesu li verzije ncurses i tommath ispravne (libncures.so.5 и libtommath.so.0) i stvorio potrebne simboličke veze.

Stvarna instalacija je vrlo jednostavna. Idite u direktorij gdje je arhiva distribucije Firebirda raspakirana, provjerite i, ako je potrebno, postavite oznaku "izvršne" skripte install.sh:

chmod +x install.sh

pokrenite instalacijsku skriptu:

sudo ./install.sh

Pritiskom na tipku Enter potvrđujemo početak instalacije, a po primitku zahtjeva upisujemo sysdba lozinku.

Automatski se pokreće instalacijska skripta systemd-jedinica firebird-superserver (tiha Firebird 3.0 arhitektura). Usluga Firebird radit će sa zadanim parametrima za superposlužitelj: predmemorija stranica od 2048 stranica (po bazi podataka), međuspremnik za sortiranje od 64 MB (dijeljeno) i povezivanje samo klijenata verzije XNUMX. Prikaži opcije firebird.conf:

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

Imajte na umu da su nove vrijednosti iz firebird.conf će se aktivirati tek nakon ponovnog pokretanja usluge Firebird.

Prilikom odabira vrijednosti parametara treba uzeti u obzir da postoje tri glavna "potrošača": predmemorija stranice (za bazu podataka), međuspremnik za sortiranje (dijeljeni) i memorija koju poslužitelj dodjeljuje za klijentske veze. Možete upravljati samo prva dva - količina memorije za klijentske veze ovisi o broju i tekstu predmemoriranih upita, njihovim planovima i objektima baze podataka uključenim u upite. Procjene memorije veze klijenta rade se samo empirijski i mogu se promijeniti kako se mijenjaju klijentske aplikacije i/ili objekti baze podataka.

Za superposlužitelj na hostovima s malom količinom memorije (do 12-16 GB), ne biste trebali dodijeliti više od trećine ili četvrtine ukupne količine RAM-a za predmemoriju stranica i međuspremnik za sortiranje.

Ako broj baza podataka nije fiksan i može se mijenjati, ukupnu količinu predmemorije stranice treba podijeliti s maksimalnim brojem baza podataka koje mogu biti na poslužitelju. Veličina predmemorije stranice navedena je u stranicama i mora se zasebno pretvoriti u bajtove.

Da biste se prebacili na klasičnu arhitekturu, morate, barem, izričito navesti ServerMode в firebird.conf, smanjite predmemoriju stranice tamo (ne više od 2K), smanjite međuspremnik sortiranja (ukupno dopušteni volumen svih vrsta podijeljen s maksimalnim brojem veza), onemogućite i zaustavite jedinicu firebird-superserver, omogućite i pokrenite jedinicu firebird-classic.socket.

Korištenje superklasične arhitekture u Firebirdu 3.0 nema previše smisla: "pouzdanost" je poput superposlužitelja i istog općeg međuspremnika za sortiranje. Nema zajedničke predmemorije stranica i “gubici” za sinkronizaciju različitih međusobnih veza su isti kao i kod klasične.

Treba imati na umu da se u Firebirdu 3.0 neki parametri (predmemorija stranica, veličine zaključanih datoteka, hash tablice i neki drugi) mogu postaviti u databases.conf zasebno za svaku bazu podataka. Za superserver je korisno, na primjer, postaviti malu vrijednost DefaultDbCachePages в firebird.conf i instalirajte pojedinačne predmemorije stranica za potrebne baze podataka databases.conf.

Postavite pitanja o članku u komentarima ili pišite pisma na našu adresu podrške [e-pošta zaštićena].

Izvor: www.habr.com

Dodajte komentar