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

U ovom članku ćemo opisati minimalni skup koraka potrebnih za optimalnu instalaciju Firebird DBMS verzije 3.0 na novim Linux distribucijama. CentOS 8 i Ubuntu 19 odabrani su kao primjeri.

Da biste "isporučili" Firebird distribuciju ciljnom sistemu, u ovom vodiču je opcija preuzimanja tar.gz arhive sa linka sa službene web stranice projekta (firebirdsql.org).

Za najnestrpljivije - odmah u bitku:

Brza instalacija

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

vm.max_map_count = 256000

Sačuvajte fajl i primenite postavku:

sudo sysctl -p /etc/sysctl.conf

Dalja uputstva se razlikuju za CentOS 8 i Ubuntu 19, ali ССЫЛКА и КАТАЛОГ označava vezu sa zvanične stranice Firebird projekta za preuzimanje distribucije i direktorijum u koji će se distribucija raspakovati tokom preuzimanja.
Trenutno (mart 2020.) relevantno je izdanje Firebird 3.0.5 (ovde je veza za 64-bitnu verziju).

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

Stvarna instalacija Firebird DBMS-a:

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

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

Glavni dio

Mala 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 čitalac ima osnovno znanje o Linuxu i Firebird DBMS-u.

Planiranje

Na DBMS serveru preporučuje se dodijeliti zasebne sekcije za privremene datoteke (/tmp), datoteke baze podataka i lokalne sigurnosne kopije.

Privremene uključuju datoteke za zaključavanje, datoteke za sortiranje, "materijalizacijske" datoteke globalnih privremenih tabela (GTT) i tablice za praćenje. Sortiranje i globalne privremene tabelarne datoteke se nalaze u /tmp, mon$-table fajlovi i lock-fajlovi - u /tmp/firebird.

Sortiraj fajlove se "brišu" (unlink) odmah nakon kreiranja, tako da se ne mogu "vidjeti" u listi direktorija - samo u listi rukohvata procesa (označenih kao deleted):

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

U listi pseudo-direktorija /proc/…/fd/ prikazane su simbolične veze, a stvarne informacije o datoteci su date:

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

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

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

Privremeni fajlovi mogu biti veoma veliki, pa za /tmp preporučljivo je dodijeliti najmanje 20-30 GB. Imajte na umu da veličina datoteka za sortiranje ovisi samo o količini podataka koji su eksplicitno ili implicitno sortirani u zahtjevu, a jedan korisnik može "kreirati" gigabajte privremenih datoteka.

Odjeljak za datoteke baze podataka mora sadržavati datoteke svih baza podataka. plus barem kopija najveće datoteke baze podataka. Potrebno je uzeti u obzir rast datoteka baze podataka u budućnosti za nekoliko godina unaprijed.

Lokalni odjeljak sigurnosne kopije mora sadržavati najmanje jednu arhivu sigurnosne kopije svih baza podataka plus sigurnosnu kopiju najveće baze podataka. Poželjno je da ova sekcija ima i mjesto za vraćanje najveće baze podataka. Treba uzeti u obzir rast rezervnih kopija i arhiva rezervnih kopija u budućnosti za nekoliko godina.

Preliminarna priprema

Firebird 3.0 DBMS server dinamički dodeljuje i oslobađa sistemsku memoriju, što može dovesti do njene fragmentacije. Na primjer, nakon što se veliki broj korisnika istovremeno isključi sa superservera, može doći do grešaka prilikom novih povezivanja.

Fragmentaciju memorije kontrolira sistemski parametar vm.max_map_count, default je 64K. Preporučuje se učetvorostručiti njegovu vrijednost:

sudo sysctl vm.max_map_count=256000

Da biste postavili novu vrijednost kada se sistem ponovo pokrene, dodajte u datoteku /etc/sysctl.conf linija:

vm.max_map_count = 256000

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

sudo sysctl -p /etc/sysctl.conf

Instaliranje potrebnih paketa

Firebird 3.0 Linux DBMS izvršne datoteke zavise od ncurses biblioteka (libncurses.so.5), ICU (bez reference na verziju i bez prikaza u izlazu ldd) i tommath (libtommath.so.0). Uslužni programi su potrebni za preuzimanje i raspakivanje arhive sklopa gzip, tar и curl ili wget. verzije intenzivne nege, gzip, tar и curl/wget - su beznačajni.

Rad sa paketima zavisi od sistema i od menadžera paketa koji se koristi u sistemu, pa ćemo ih razmatrati jedan po jedan.

CentOS 8

CentOS 8 koristi novi upravitelj paketa − dnf i "transparentno" se poziva na komandu yum. Pošto za naše potrebe nema razlike između njih - u primjerima će biti yum.

Ažurirajte keš metapodataka: sudo yum makecache

Libtomath paket je u zasebnom E(xtra)P(ackages for)E(nterprise)L(inux) spremištu, pa provjerite da li je već uključen:

yum -C repolist

Samo opcija keširanja (-C ili --cache-only) se koristi za uklanjanje nepotrebnih provjera i preuzimanja, čime yum radi brže. Ako na listi nema epel spremišta, instalirajte ga i ažurirajte keš metapodataka:

sudo yum install epel-release &&
sudo yum makecache

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

Ako postoje problemi prilikom učitavanja meta-informacija spremišta sa https-resursa, uredite datoteku /etc/yum.repos.d/epel.repo, zamjena https:// na http:// i ponovite naredbu za ažuriranje keša.

Provjerite status potrebnih paketa (naredba je složena, u izlazu primjera 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

Vidimo to curl, gzip и ncurses postavljeno u pseudo-spremište instalatera (anaconda), i tar – Isključeno iz minimalne instalacije sistema. Glavne verzije libncurses и libtommath više nego što je potrebno: 6 i 1 umjesto 5 i 0, respektivno. Ako je isti paket instaliran i dostupan, za njega je objavljena nadogradnja. Instalirajte pakete koji nedostaju:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Uslužni programi za upravljanje paketima apt, apt‑get и apt‑cache. Prvi je dizajniran za interaktivni rad, a posljednja dva su za korištenje u skriptama. Nazivi paketa se malo razlikuju i uključuju verziju.

Provjerite status potrebnih paketa (komanda je presavijena, izlaz uzorka je skraćen i 32-bitni paketi su filtrirani):

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 sa uglastim zagradama installed/upgradable – instaliran. Dostupan ali nije instaliran ncurses5umjesto curl instaliran wget. Instalirajte pakete koji nedostaju:

sudo apt‑get install 
libncurses5 libtommath1

Kreiranje simboličnih veza

Od libtommath.so.1 и libncurses.so.6 unatrag kompatibilan sa libtommath.so.0 и libncurses.so.5, tada je za Firebird dovoljno kreirati simbolične veze do dostupnih verzija biblioteka.

Mi 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

Kreiramo simbolične 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

Provjeravamo rezultat (naredba je složena, primjeri izlaza 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

Učitavanje distributivnog kompleta Firebird DBMS-a.

Službena web stranica Firebird projekta (firebirdsql.org) objavljuje linkove ka distribucijama "zvaničnih" izdanja i "dnevnih" buildova (snimka build).

Zvanična izdanja za Linux su dostupna kao arhive (tar.gz) i deb/rpm paketi, dok su verzije dostupne samo kao arhive. Razmotrićemo "generalni instalater" (generički instalater sa tar.gz).

Arhivu sklopa treba preuzeti i raspakovati, ali ćemo kombinovati oba ova procesa. Raspakivanje je obavljeno u /tmp, URL označava vezu do preuzete arhive.

curl:

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, pa dodajemo "‑L", a wget, naprotiv: obrađuje preusmjeravanja, ali upisuje podatke u datoteku i stavljamo "‑O‑". Za tar navesti upotrebu gzip-filter i direktorij u koji će se izvršiti raspakivanje. Po završetku procesa, pojavit će se direktorij obrasca Firebird‑3.0.5.33220‑0.amd64 sa tri fajla: install.sh, buildroot.tar.gz и manifest.txt.

Instalacija Firebird-a

U toku preliminarne pripreme izvršili smo korekciju vrijednosti sistemskog parametra vm.max_map_count, provjerio i instalirao ICU, ncurses i tommath biblioteke. Provjerite jesu li verzije ncurses i tommath ispravne (libncures.so.5 и libtommath.so.0) i kreirali potrebne simbolične veze.

Prava instalacija je vrlo jednostavna. Idite na direktorij u kojem je raspakirana arhiva Firebird distribucije, provjerite i, ako je potrebno, postavite oznaku “executable” za skriptu install.sh:

chmod +x install.sh

pokrenite instalacijsku skriptu:

sudo ./install.sh

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

Instalaciona skripta se automatski pokreće systemd-jedinica firebird-superserver (podrazumevana Firebird 3.0 arhitektura). Firebird servis će raditi sa zadanim postavkama za superserver: 2048 keš stranica (po bazi), 64 MB bafera za sortiranje (dijeljeno) i konekcija samo za klijente verzije XNUMX. Prikaži postavke 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 Firebird servisa.

Prilikom odabira vrijednosti parametara treba uzeti u obzir da postoje tri glavna „potrošača“: keš stranica (za bazu podataka), bafer za sortiranje (dijeljeni) i memorija koju server dodijeli za klijentske veze. Možete upravljati samo prva dva - količina memorije za klijentske veze ovisi o broju i tekstu keširanih zahtjeva, njihovim planovima i objektima baze podataka koji su uključeni u zahtjeve. Memorijska procjena klijentskih veza radi se samo empirijski i može se promijeniti kada se klijentske aplikacije i/ili objekti baze podataka promijene.

Za superserver na hostovima s malom količinom memorije (do 12-16 GB), ne biste trebali dodijeliti više od trećine do četvrtine ukupne RAM memorije za keš stranice i bafer za sortiranje.

Ako broj baza nije fiksan i može se mijenjati, ukupnu količinu keš memorije stranica treba podijeliti s maksimalnim brojem baza koje mogu biti na serveru. Veličina keš memorije stranice navedena je u stranicama i mora se posebno konvertirati u bajtove.

Da biste se prebacili na klasičnu arhitekturu, morate barem eksplicitno specificirati ServerMode в firebird.conf, smanjite predmemoriju stranica na istom mjestu (ne više od 2K), smanjite međuspremnik za sortiranje (ukupni dozvoljeni volumen svih vrsta podijeljen sa maksimalnim brojem veza), onemogućite i zaustavite jedinicu firebird-superserver, omogućite i pokrenite jedinicu firebird-classic.socket.

Upotreba superklasične arhitekture u Firebirdu 3.0 nema mnogo smisla: "pouzdanost" je kao superserver i isti bafer za sortiranje. Ne postoji zajednička predmemorija stranica i „gubici“ za sinhronizaciju različitih veza međusobno su isti kao u klasičnom.

Treba imati na umu da se u Firebirdu 3.0 neki od parametara (keš memorija stranica, veličine zaključanih datoteka, hash tablice i neki drugi) mogu postaviti u databases.conf pojedinačno za svaku bazu. 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 napišite pisma na našu adresu podrške [email zaštićen].

izvor: www.habr.com

Dodajte komentar