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 ().
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 ( 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
