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

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

Za 'dostavo' distribucije Firebird na ciljni sistem je v tem priročniku izbrana možnost prenosa tar.gz arhiva prek povezave z uradne spletne strani projekta (firebirdsql.org).

Za najbolj nestrpne — takoj v akcijo:

Hitro nameščanje

Uređujemo fajl /etc/sysctl.conf, dodajte vrstico:

vm.max_map_count = 256000

Shranjujemo datoteko in uporabimo nastavitev:

sudo sysctl -p /etc/sysctl.conf

Druge navodila se razlikujejo za CentOS 8 in Ubuntu 19, vendar POVEZAVA in KATALOG pomenijo povezavo z uradne spletne strani projekta Firebird za prenos distribucije in katalog, v katerega bo distribucija razpakirana v procesu prenosa.
Trenutno (marec 2020) je aktualna različica Firebird 3.0.5 (tukaj je povezava na 64-bitno različico).

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 POVEZAVA|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- POVEZAVA|tar -zxC /tmp

Zdaj opravimo namestitev DBMS Firebird:

cd /tmp/KATALOG
sudo ./install.sh

Če želite bolje razumeti, zakaj so ti postopki potrebni – berite naprej.

Glavni del

Majhna uvodna beseda

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

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

Načrtovanje

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

Med začasne datoteke spadajo lock-datoteke, datoteke sortiranja, datoteke 'materializacije' globalnih začasnih tabel (GTT) in tabel monitoringa. Datoteke sortiranja in globalne začasne tabele se nahajajo v /tmp, datoteke mon$-tabel in lock-datoteke – v /tmp/firebird.

Datoteke sortiranja se 'izbrišejo' (unlink) takoj po ustvarjanju, zato jih ni mogoče 'videti' v seznamu kataloga – le v seznamu descriptorjev (handles) procesa (označene kot deleted):

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

V seznamu psevdokataloga /proc/…/fd/ se prikažejo simbolične povezave, dejanske informacije o datoteki pa daje:

sudo stat -L /proc/`pgrep firebird`/fd/ŠTEVILO

kjer ŠTEVILO – deskriptor (descriptor) zanimive datoteke.

Namesto klica 'pgrep izvršni-datoteka' lahko takoj vstavite identifikator interesnega procesa.

Začasni datoteki so lahko zelo veliki, zato je /tmp priporočljivo dodeliti vsaj 20-30 GB. Upoštevati je treba, da velikost sortiranih datotek temelji le na obsegu podatkov, ki jih v poizvedbi izrecno ali tiho sortiramo, in en sam uporabnik lahko 'ustvari' gigabajte začasnih datotek.

Razdelek za datoteke baz podatkov mora vsebovati datoteke vseh baz, poleg tega pa vsaj eno kopijo datoteke največje baze. Upoštevati je treba rast datotek baz v perspektivi več let naprej.

Razdelek lokalnih varnostnih kopij mora vsebovati vsaj en arhiv varnostnih kopij vseh baz, poleg varnostne kopije največje baze. Želeno je, da ima ta razdelek tudi prostor za obnovitev največje baze. Upoštevati je treba rast varnostnih kopij in arhivov varnostnih kopij v perspektivi več let naprej.

Predhodna priprava

Strežnik DBMS Firebird 3.0 dinamično dodeljuje in sprošča sistemski pomnilnik, kar lahko privede do njegove fragmentacije. Na primer, po hkratnem odklopu velikega števila uporabnikov od superserverja se lahko pojavijo napake pri novih povezavah.

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

sudo sysctl vm.max_map_count=256000

Da se nova vrednost nastavi ob ponovnem zagonu sistema, dodamo v datoteko /etc/sysctl.conf vrstico:

vm.max_map_count = 256000

Priporočljivo je dodati komentar, da bo razumljiv razlog spremembe tega parametra. Lahko najprej uredite datoteko, nato pa uporabite nastavitve, shranjene v njej:

sudo sysctl -p /etc/sysctl.conf

Namestitev potrebnih paketov

Izvedljive datoteke DBMS Firebird 3.0 Linux so odvisne od knjižnic ncurses (libncurses.so.5), ICU (brez povezave na različico in brez prikaza v izhodu ldd) in tommath (libtommath.so.0). Za prenos in razpakiranje arhiva zbirke bodo potrebna orodja gzip, tar in curl ili wget. Različice ICU, gzip, tar in curl/wget so nepomembne.

Delo s paketi je odvisno od sistema in od uporabljenega upravljalnika paketov v sistemu, zato jih bomo preučili zaporedno.

CentOS 8

CentOS 8 uporablja novega upravljalnika paketov – dnf in se 'prozorni' kliče z ukazom yum. Ker med njimi ni razlike za naše potrebe, bodo v primerih uporabljeni yum.

Posodobitev predpomnilnika metapodatkov: sudo yum makecache

Paket libtomath se nahaja v posebni E(xtra)P(ackages for)E(nterprise)L(inux) repozitoriju, zato preverimo, ali je že povezan:

yum -C repolist

Možnost 'samo iz predpomnilnika' (-C ili --cache-only) se uporablja za izključitev nepotrebnih pregledov in nalaganj, kar pospeši delovanje yum. Če v seznamu ni epel-repozitorija – ga namestimo in posodobimo predpomnilnik metapodatkov:

sudo yum install epel-release &&
sudo yum makecache

Potrdimo poizvedbe, pri čemer po potrebi preverimo vrednosti pgp-ključe s tistimi, ki jih že poznamo iz zaupanja vrednih virov.

Če pride do težav pri nalaganju metainformacij repozitorija z https-virov, uredimo datoteko /etc/yum.repos.d/epel.repo, pri čemer zamenjamo https:// na http:// in ponovimo ukaz za posodobitev predpomnilnika.

Preverimo stanje potrebnih paketov (ukaz je sestavljen, v primeru izhoda je filtriran 32-bitni paket):

yum -C list 
ncurses libicu libtommath 
gzip tar curl wget |
grep -v i686
Naloženi paketi
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
Razpoložljivi paketi
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, da curl, gzip in ncurses so nameščeni v psevdorepozitoriju namestitvenega programa (anaconda), medtem ko je tar izključen iz minimalne namestitve sistema. Glavne različice libncurses in libtommath so večje, kot je potrebno: 6 in 1 namesto 5 in 0, ustrezno. Če je ist paket nameščen in razpoložljiv – je bilo izdano nadomestilo. Namestimo manjkajoče pakete:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Za upravljanje s paketi so namenjeni pripomočki apt, apt‑get in apt‑cache. Prvi je namenjen interaktivnemu delu, preostala dva pa za uporabo v skriptah. Imena paketov so nekoliko drugačna in vključujejo različico.

Preverimo stanje potrebnih paketov (ukaz je sestavljen, izhodni primer 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 je v quadratih navedeno installed/upgradable – so nameščeni. Na voljo, vendar niso nameščeni ncurses5, namesto curl je nameščen wget. Namestimo manjkajoče pakete:

sudo apt‑get install 
libncurses5 libtommath1

Ustvarjanje simbolnih povezav

Ker libtommath.so.1 in libncurses.so.6 so nazaj združljivi z libtommath.so.0 in libncurses.so.5, zato za Firebird zadostuje, da ustvarite simbolne povezave na obstoječe različice knjižnic.

Najdemo libtommath.so.1 (libncurses.so.? se nahajajo 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 sestavljen, primer izhoda je skrajšan):

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

Zagon distiribucije SDB Firebird.

Na uradni spletni strani projekta Firebird (firebirdsql.org) so objavljene povezave do "uradnih" izdaj (releases) in "dnevnih" gradiv (snapshot build).

Uradne izdaje za Linux so na voljo v obliki arhivov (tar.gz) in paketov deb/rpm, gradnje pa so na voljo le v obliki arhivov. Občudovali bomo "splošni namestitveni program" (generic installer iz tar.gz).

Arhiv gradnje je potrebno prenesti in razpakirati, vendar bomo oba procesa združili. Razpakiranje se izvede v /tmp, URL označuje povezavo do prenosnega arhiva.

curl:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Privzeto curl pošilja prenosne podatke na standardni izhod, vendar ne obdeluje preusmeritev, zato dodamo "‑L", nasprotno pa: obdeluje preusmeritve, vendar shranjuje podatke v datoteko in dodamo " wget‑O‑". Zadoločimo uporabo tar -filtra in mapo, kamor bo razpakiranje izvršeno. Ko je proces končan, se bo pojavila mapa v obliki gzipFirebird‑3.0.5.33220‑0.amd64 s tremi datotekami: install.sh buildroot.tar.gz, manifest.txt in Namestitev Firebird.

V procesu predhodne priprave smo prilagodili vrednost sistemskega parametra

, preverili prisotnost in namestili knjižnice ICU, ncurses in tommath. Preverili smo pravilnost različic ncurses in tommath ( vm.max_map_countlibncures.so.5) in ustvarili potrebne simlinke. in libtommath.so.0Prava namestitev je zelo preprosta. Pojdite v mapo, v katero je bil razpakiran arhiv distribucije Firebird, preverite in po potrebi nastavite zastavico "izvršljiv" skripta

chmod +x install.sh buildroot.tar.gz:

zažene namestitveni skript:

sudo ./install.sh

s pritiskom na tipko Enter potrdite začetek namestitve, ob pozivu pa vnesite geslo sysdba.

Namestitveni skript samodejno zažene

systemd -enotafirebird-superserver (privzeta arhitektura Firebird 3.0). Storitev Firebird bo delovala s privzetimi parametri za superserver: predpomnilnik strani s 2048 stranmi (na bazo), predpomnilnik za razvrščanje s 64 MB (skupni) in povezavo samo na stranke tretje različice. Ogled parametrov firebird.conf grep -v ^# firebird.conf | grep -v ^$:

Treba je upoštevati, da bodo nove vrednosti iz

aktivirane šele po ponovnem zagonu storitve Firebird. grep -v ^# firebird.conf | grep -v ^$ bodo aktivirani samo nakon ponovnog pokretanja usluge Firebird.

Pri izbiri vrednosti parametrov je treba upoštevati, da obstajajo trije glavni "potrošniki": predpomnilnik strani (za bazo), predpomnilnik razvrščanja (skupni) in pomnilnik, dodeljen strežniku za odjemalske povezave. Upravljati je mogoče le prve dva – obseg pomnilnika odjemalskih povezav je odvisen od števila in besedila predpomnjenih poizvedb, njihovih načrtov in objektov baze, vključenih v poizvedbe. Ocenjevanje pomnilnika odjemalskih povezav se izvaja le empirično in se lahko spreminja ob spremembi odjemalskih aplikacij in/ali objektov baze.

Za superstrežnike na gostiteljih z majhnim obsegom pomnilnika (do 12-16 GB) ne bi smeli dodeliti za predpomnilnik strani in predpomnilnik razvrščanja več kot tretjine do četrtine celotnega obsega RAM-a.

Če število baz ni fiksno in se lahko spreminja – skupni obseg pomnilnika predpomnilnika strani je treba deliti z največjim številom baz, ki so lahko na strežniku. Velikost predpomnilnika strani je določena v straneh in jo je treba posebej preračunati v bite.

Za preklop na arhitekturo klasika je potrebno najmanj izrecno navesti ServerMode u grep -v ^# firebird.conf | grep -v ^$, zmanjšati tam tudi predpomnilnik strani (ne več kot 2K), zmanjšati predpomnilnik razvrščanja (skupni dovoljeni obseg vseh razvrščanj, deljen z največjim številom povezav), prepovedati in ustaviti enoto (privzeta arhitektura Firebird 3.0). Storitev Firebird bo delovala s privzetimi parametri za superserver: predpomnilnik strani s 2048 stranmi (na bazo), predpomnilnik za razvrščanje s 64 MB (skupni) in povezavo samo na stranke tretje različice. Ogled parametrov, dovoliti in zagnati enoto firebird-classic.socket.

Uporaba arhitekture superklasik v Firebirdu 3.0 nima posebnega smisla: "zanesljivost" – kot pri superstrežniku in enak skupni predpomnilnik razvrščanja. Ni skupnega predpomnilnika strani in "izgube" pri sinhronizaciji različnih povezav so enake kot pri klasiku.

Treba je spomniti, da je v Firebirdu 3.0 del parametrov (predpomnilnik strani, velikosti lokalnih datotek, hash-tabele in nekateri drugi) mogoče določiti v databases.conf posamezno za vsako bazo. Za superstrežnik je koristno, na primer, določiti majhno vrednost DefaultDbCachePages u grep -v ^# firebird.conf | grep -v ^$ in nastaviti individualne predpomnilnike strani potrebnim bazam v databases.conf.

Vprašanja v zvezi s člankom lahko postavite v komentarjih ali pišete na naš naslov za podporo support@ibase.ru.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster