Namestitev Firebird 3 na sodobne različice Linuxa: CentOS8 in Ubuntu 19

V tem članku bomo opisali minimalni nabor dejanj, potrebnih za optimalno namestitev Firebird DBMS različice 3.0 v nove distribucije Linuxa. Za primera sta izbrana CentOS 8 in Ubuntu 19.

Za »dostavo« distribucije Firebird v ciljni sistem je v tem priročniku izbrana možnost prenosa arhiva tar.gz s povezavo z uradne spletne strani projekta (firebirdsql.org).

Za najbolj nepotrpežljive, takoj v boj:

Hitra namestitev

Urejanje datoteke /etc/sysctl.confz dodajanjem vrstice:

vm.max_map_count = 256000

Shranite datoteko in uporabite nastavitev:

sudo sysctl -p /etc/sysctl.conf

Nadaljnja navodila se razlikujejo za CentOS 8 in Ubuntu 19, vendar ССЫЛКА и КАТАЛОГ navedite povezavo z uradne spletne strani projekta Firebird za prenos distribucije in imenik, v katerega bo distribucija razpakirana med postopkom prenosa.
Trenutno (marec 2020) je trenutna izdaja Firebird 3.0.5 (tukaj je povezava na 64-bitno različico).

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

Dejanska namestitev Firebird DBMS:

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

Če želite bolje razumeti, kaj počnejo ta dejanja, berite naprej.

Glavni organ

Kratka preambula

Predpostavlja se, da je operacijski sistem že nameščen v minimalni različici in da je konfiguriran dostop do javnih skladišč ali njihovih lokalnih kopij.

Predpostavlja se, da ima bralec osnovno znanje o Linuxu in Firebird DBMS.

Načrtovanje

Na strežniku DBMS je priporočljivo dodeliti ločene razdelke za začasne datoteke (/tmp), datoteke baze podatkov in lokalne varnostne kopije.

Začasne vključujejo datoteke za zaklepanje, datoteke za razvrščanje, datoteke za »materializacijo« globalnih začasnih tabel (GTT) in tabel za spremljanje. Datoteke za razvrščanje in globalne začasne tabele se nahajajo v /tmp, datoteke mon$-table in datoteke zaklepanja – v /tmp/firebird.

Datoteke za razvrščanje so »izbrisane« (unlink) takoj po ustvarjanju, tako da jih ni mogoče "videti" v seznamu imenikov - samo v seznamu ročk procesov (označenih kot deleted):

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

V seznamu psevdo imenika /proc/…/fd/ prikazane so simbolne povezave, dejanske informacije o datoteki pa podaja:

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

če НОМЕР – deskriptor (deskriptor) datoteke, ki vas zanima.

Namesto klica "pgrep исполняемый-файл"Takoj lahko zamenjate identifikator procesa, ki vas zanima.

Začasne datoteke so lahko zelo velike, zato /tmp Priporočljivo je, da dodelite vsaj 20-30 GB. Upoštevati je treba, da je velikost sortirnih datotek odvisna samo od količine podatkov, eksplicitno ali implicitno razvrščenih v zahtevi, en sam uporabnik pa lahko »ustvari« gigabajte začasnih datotek.

Oddelek za datoteke baze podatkov mora vsebovati vse datoteke baze podatkov. ter najmanj kopijo največje datoteke zbirke podatkov. Upoštevati je treba rast podatkovnih baz v prihodnje za nekaj let.

Oddelek za lokalne varnostne kopije mora vsebovati vsaj en varnostni arhiv vseh baz podatkov in varnostno kopijo največje baze podatkov. Zaželeno je, da ta razdelek vsebuje tudi prostor za obnovitev največje baze podatkov. Upoštevati je treba večletno rast varnostnih kopij in varnostnih arhivov v prihodnosti.

Predhodna priprava

Strežnik Firebird 3.0 DBMS dinamično dodeljuje in sprošča sistemski pomnilnik, kar lahko povzroči njegovo razdrobljenost. Na primer, ko je povezava velikega števila uporabnikov z nadzornega strežnika hkrati prekinjena, lahko pride do napak pri vzpostavljanju novih povezav.

Razdrobljenost pomnilnika nadzira sistemski parameter vm.max_map_count, privzeto je 64K. Priporočljivo je povečati njegovo vrednost za štirikrat:

sudo sysctl vm.max_map_count=256000

Da bo nova vrednost nastavljena ob ponovnem zagonu sistema, dodajte v datoteko /etc/sysctl.conf vrstica:

vm.max_map_count = 256000

Priporočljivo je komentirati, da bo razlog za spremembo tega parametra jasen. Datoteko lahko najprej uredite in nato uporabite v njej shranjene nastavitve:

sudo sysctl -p /etc/sysctl.conf

Namestitev zahtevanih paketov

Izvršljive datoteke Firebird 3.0 Linux DBMS so odvisne od knjižnic ncurses (libncurses.so.5), ICU (ni vezan na različico in ni prikazan v izhodu ldd) in tommath (libtommath.so.0). Za prenos in razpakiranje arhiva sestavljanja boste potrebovali pripomočke gzip, tar и curl ali wget. različice ICU, gzip, tar и curl/wget – so nepomembne.

Delo s paketi je odvisno od sistema in od upravljalnika paketov, ki se uporablja v sistemu, zato jih bomo obravnavali enega za drugim.

8 CentOS

CentOS 8 uporablja novega upravitelja paketov – dnf in se z ukazom imenuje "transparentno". yum. Ker za naše namene med njima ni razlike - v primerih bo yum.

Posodobite predpomnilnik metapodatkov: sudo yum makecache

Paket libtomath se nahaja v ločenem repozitoriju E(xtra)P(ackages for)E(nterprise)L(inux), zato preverimo, ali je že vključen:

yum -C repolist

Možnost "samo iz predpomnilnika" (-C ali --cache-only) se uporablja za odpravo nepotrebnih preverjanj in prenosov, zaradi česar je yum hitrejši. Če na seznamu ni repozitorija epel, ga namestite in posodobite predpomnilnik metapodatkov:

sudo yum install epel-release &&
sudo yum makecache

Potrjujemo zahteve, če je potrebno, preverjamo vrednosti ključev pgp s tistimi, ki so že znane iz zaupanja vrednega vira.

Če pride do težav pri nalaganju metainformacij repozitorija iz virov https, uredite datoteko /etc/yum.repos.d/epel.repo, zamenjava https:// o http:// in ponovite ukaz za posodobitev predpomnilnika.

Preverimo status zahtevanih paketov (ukaz je zapleten, v primeru izhoda je 32-bitni paket 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 gostuje v psevdoskladišču namestitvenega programa (anaconda), in tar – izključeno iz minimalne namestitve sistema. Glavne različice libncurses и libtommath več kot zahtevano: 6 in 1 namesto 5 oziroma 0. Če je isti paket nameščen in na voljo, je bila zanj izdana posodobitev. Namestite manjkajoče pakete:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Pripomočki so namenjeni upravljanju paketov apt, apt‑get и apt‑cache. Prvi je zasnovan za interaktivno delo, zadnja dva pa za uporabo v skriptih. Imena paketov so nekoliko drugačna in vključujejo različico.

Preverimo status zahtevanih paketov (ukaz je združen, primer izhoda je skrajšan in 32-bitni paketi so 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, za katere označujejo oglati oklepaji installed/upgradable – nameščeno. Na voljo, vendar ni nameščen ncurses5, namesto curl nameščen wget. Namestite manjkajoče pakete:

sudo apt‑get install 
libncurses5 libtommath1

Ustvarjanje simbolnih povezav

Ker libtommath.so.1 и libncurses.so.6 nazaj združljiv z libtommath.so.0 и libncurses.so.5, potem je za Firebird dovolj, da ustvarite simbolne povezave do obstoječih različic knjižnic.

Najdi libtommath.so.1 (libncurses.so.? ki se nahaja v istem imeniku):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Ustvarjamo simbolne povezave.

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

Preverimo rezultat (ukaz je zapleten, izhodni primeri so skrajšani):

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

Prenos distribucijskega kompleta Firebird DBMS.

Uradna spletna stran projekta Firebird (firebirdsql.org) objavlja povezave do distribucij "uradnih" izdaj in "dnevnih" gradenj (gradnje posnetkov).

Uradne izdaje Linuxa so na voljo kot arhivi (tar.gz) in paketi deb/rpm, graditve pa so na voljo samo kot arhivi. Upoštevali bomo "generični namestitveni program" (generični namestitveni program iz tar.gz).

Gradbeni arhiv je treba prenesti in razpakirati, vendar bomo združili oba postopka. Razpakiranje se izvede v /tmp,URL označuje povezavo do arhiva, ki ga je mogoče prenesti.

kodri:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Privzeto curl pošlje prenesene podatke v stdout, vendar ne obravnava preusmeritev in dodamo "‑L", a wget, nasprotno: obravnava preusmeritve, vendar zapiše podatke v datoteko in postavimo "‑O‑" Za tar navedite uporabo gzip-filter in imenik, v katerega bo izvedeno razpakiranje. Ko je postopek končan, se bo prikazal podoben imenik Firebird‑3.0.5.33220‑0.amd64 s tremi datotekami: install.sh, buildroot.tar.gz и manifest.txt.

Namestitev Firebird

V predpripravah smo prilagodili vrednost sistemskega parametra vm.max_map_count, preveril razpoložljivost in namestil knjižnice ICU, ncurses in tommath. Prepričajte se, da sta različici ncurses in tommath pravilni (libncures.so.5 и libtommath.so.0) in ustvarili potrebne simbolne povezave.

Dejanska namestitev je zelo preprosta. Pojdite v imenik, kjer je bil razpakiran distribucijski arhiv Firebird, preverite in po potrebi nastavite zastavico »izvršljivo« za skript install.sh:

chmod +x install.sh

zaženite namestitveni skript:

sudo ./install.sh

S pritiskom na tipko Enter potrdimo začetek namestitve in po prejemu zahteve vnesemo geslo sysdba.

Namestitveni skript se samodejno zažene systemd-enota firebird-superserver (tiha arhitektura Firebird 3.0). Storitev Firebird bo delovala s privzetimi parametri za superstrežnik: predpomnilnik strani z 2048 stranmi (na bazo podatkov), medpomnilnik za razvrščanje 64 MB (v skupni rabi) in povezovanje samo odjemalcev različice XNUMX. Ogled možnosti firebird.conf:

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

Upoštevajte, da nove vrednosti iz firebird.conf bo aktiviran šele po ponovnem zagonu storitve Firebird.

Pri izbiri vrednosti parametrov je treba upoštevati, da obstajajo trije glavni "potrošniki": predpomnilnik strani (za bazo podatkov), medpomnilnik za razvrščanje (v skupni rabi) in pomnilnik, ki ga strežnik dodeli za povezave odjemalcev. Upravljate lahko le s prvima dvema – količina pomnilnika za povezave odjemalcev je odvisna od števila in besedila predpomnjenih poizvedb, njihovih načrtov in objektov baze podatkov, vključenih v poizvedbe. Ocene pomnilnika odjemalske povezave so narejene samo empirično in se lahko spremenijo, ko se spremenijo odjemalske aplikacije in/ali objekti baze podatkov.

Za superstrežnik na gostiteljih z majhno količino pomnilnika (do 12-16 GB) ne smete dodeliti več kot tretjine ali četrtine celotne količine RAM-a za predpomnilnik strani in medpomnilnik za razvrščanje.

Če število baz podatkov ni določeno in se lahko spreminja, je treba skupno količino pomnilnika predpomnilnika strani deliti z največjim številom baz podatkov, ki so lahko na strežniku. Velikost predpomnilnika strani je podana v straneh in jo je treba posebej pretvoriti v bajte.

Če želite preklopiti na klasično arhitekturo, morate to najmanj izrecno določiti ServerMode в firebird.conf, tam zmanjšajte predpomnilnik strani (ne več kot 2K), zmanjšajte medpomnilnik za razvrščanje (skupna dovoljena prostornina vseh vrst, deljena z največjim številom povezav), onemogočite in zaustavite enoto firebird-superserver, omogočite in zaženite enoto firebird-classic.socket.

Uporaba superklasične arhitekture v Firebird 3.0 nima veliko smisla: "zanesljivost" je kot superstrežnik in isti splošni medpomnilnik za razvrščanje. Skupnega predpomnilnika strani ni in “izgube” za medsebojno sinhronizacijo različnih povezav so enake kot pri klasičnem.

Ne smemo pozabiti, da lahko v Firebird 3.0 nekatere parametre (predpomnilnik strani, velikost zaklenjenih datotek, zgoščene tabele in nekatere druge) nastavimo v databases.conf za vsako bazo posebej. Za superstrežnik je koristno na primer nastaviti majhno vrednost DefaultDbCachePages в firebird.conf in namestite posamezne predpomnilnike strani za zahtevane zbirke podatkov databases.conf.

Zastavite vprašanja o članku v komentarjih ali pišite pisma na naš naslov za podporo [e-pošta zaščitena].

Vir: www.habr.com

Dodaj komentar