In dit artikel beschrijven we de minimale set acties die nodig zijn voor een optimale installatie van de Firebird databaseversie 3.0 op nieuwe Linux-distributies. Voor de voorbeelden zijn CentOS 8 en Ubuntu 19 geselecteerd.
Voor de "levering" van de Firebird-distributie naar het doelsysteem, kiezen we in deze gids voor de optie om het tar.gz-archief te downloaden via de link van de officiële projectwebsite ().
Voor de ongeduldigen - laten we meteen aan de slag gaan:
Snelle installatie
Bewerk het bestand /etc/sysctl.conf, voeg de regel toe:
vm.max_map_count = 256000
Sla het bestand op en pas de instelling toe:
sudo sysctl -p /etc/sysctl.conf
De verdere instructies verschillen voor CentOS 8 en Ubuntu 19, maar LINK en CATALOGUS verwijzen naar de link van de officiële Firebird-website voor het downloaden van de distributie en de catalogus waarin de distributie tijdens het downloaden wordt uitgepakt.
Op dit moment (maart 2020) is de release Firebird 3.0.5 actueel ( voor de 64-bits versie).
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 LINK|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- LINK|tar -zxC /tmp
Eigenlijk de installatie van de Firebird database:
cd /tmp/CATALOGUS
sudo ./install.sh
Als je beter wilt begrijpen wat deze acties betekenen - lees verder.
Hoofdgedeelte
Een kleine inleiding
Er wordt aangenomen dat het besturingssysteem al minimaal is geïnstalleerd en dat er toegang is ingesteld tot openbare repositories of hun lokale kopieën.
Er wordt aangenomen dat de lezer basiskennis heeft van Linux en de Firebird database.
Planning
Op de database server wordt aanbevolen aparte partities toe te wijzen voor tijdelijke bestanden (/tmp), databasebestanden en lokale back-ups.
Tot de tijdelijke bestanden behoren lock-bestanden, sorteerbestanden, en bestanden voor de "materialisatie" van globale tijdelijke tabellen (GTT) en monitoringtabellen. Sorteerbestanden en globale tijdelijke tabellen bevinden zich in /tmp, de mon$-tabellen en lock-bestanden bevinden zich in /tmp/firebird.
De sorteertabellen worden "verwijderd" (unlink) onmiddellijk na creatie, waardoor ze niet "zichtbaar" zijn in de directory-lijst – enkel in de deskriptorenlijst (handles) van het proces (gemarkeerd als deleted):
sudo ls -lhF /proc/`pgrep firebird`/fd
In de lijst van de pseudocatalogus /proc/…/fd/ worden symbolische links weergegeven, en echte informatie over het bestand geeft:
sudo stat -L /proc/`pgrep firebird`/fd/NUMMER
waar NUMMER het descriptor (handle) van het betreffende bestand is.
In plaats van het aanroepen van "pgrep uitvoerbaar-bestand» je kunt direct het identificatienummer van het gewenste proces invoegen.
Tijdelijke bestanden kunnen zeer groot zijn, daarom is het aan te raden om /tmp minimaal 20-30 GB toe te wijzen. Houd er rekening mee dat de grootte van sorteerbestanden alleen afhankelijk is van de hoeveelheid gegevens die expliciet of impliciet in de query worden gesorteerd en een enkele gebruiker kan 'gigabytes' aan tijdelijke bestanden 'creëren'.
De partitie voor databasebestanden moet de bestanden van alle databases kunnen bevatten, plus ten minste een kopie van het bestand van de grootste database. Houd rekening met de groei van databasebestanden over een periode van enkele jaren.
De partitie voor lokale back-ups moet minimaal één archief met back-ups van alle databases bevatten, plus de back-up van de grootste database. Het is wenselijk dat er op deze partitie ook ruimte is voor het herstellen van de grootste database. Houd rekening met de groei van back-ups en archieven van back-ups over een periode van enkele jaren.
Voorbereiding
De Firebird 3.0 database server wijst dynamisch systeemgeheugen toe en geeft dit weer vrij, wat kan leiden tot fragmentatie. Bijvoorbeeld na het gelijktijdig loskoppelen van een groot aantal gebruikers van de superserver, kunnen er fouten optreden bij nieuwe verbindingen.
De fragmentatie van geheugen wordt gecontroleerd door de systeemparameter vm.max_map_count, standaard is dit 64K. Het is aan te raden om de waarde viervoudig te verhogen:
sudo sysctl vm.max_map_count=256000
Om de nieuwe waarde bij het opnieuw opstarten van het systeem in te stellen, voegen we de regel toe aan het bestand /etc/sysctl.conf de regel:
vm.max_map_count = 256000
Het is wenselijk om een opmerking te maken, zodat de reden voor de wijziging van deze parameter duidelijk is. Je kunt het bestand eerst bewerken en vervolgens de instellingen opslaan:
sudo sysctl -p /etc/sysctl.conf
Installeren van de benodigde pakketten
De uitvoerbare bestanden van Firebird 3.0 Linux zijn afhankelijk van de bibliotheken ncurses (libncurses.so.5), ICU (zonder versiebinding en zonder deze weer te geven in de uitvoer zou ldd) en tommath (libtommath.so.0). Voor het downloaden en uitpakken van het archief van de build zijn de utiliteiten gzip, tar en curl of wget. De versies van ICU zijn niet essentieel. gzip, tar en curl/wget Het werken met pakketten hangt af van het systeem en de gebruikte pakketbeheerder, dus we zullen deze een voor een bekijken.
CentOS 8 gebruikt een nieuwe pakketbeheerder -
CentOS 8
dnf en deze wordt ook 'transparant' aangeroepen met het commando yum . Aangezien er voor onze doeleinden geen verschil tussen hen is, zullen we in de voorbeeldenDe metadata-cache bijwerken: . Aangezien er voor onze doeleinden geen verschil tussen hen is, zullen we in de voorbeelden.
sudo yum makecache sudo yum makecache
Het libtomath-pakket bevindt zich in een aparte E(xtra)P(ackages for)E(nterprise)L(inux) repository, dus laten we controleren of deze al is ingeschakeld:
yum -C repolist
De optie 'alleen uit cache' (-C of --cache-only) wordt gebruikt om onnodige controles en downloads uit te sluiten, waardoor yum sneller werkt. Als de epel-repository niet in de lijst staat, installeren we deze en vernieuwen de metadata-cache:
sudo yum install epel-release &&
sudo yum makecache
Bevestig de verzoeken, indien nodig, door de waarden van de pgp-sleutels te vergelijken met die uit een vertrouwde bron.
Als er problemen zijn bij het downloaden van de metadata van de repository van https-bronnen, bewerken we het bestand /etc/yum.repos.d/epel.repo, door te vervangen https:// en een werkende opdracht krijgen. http:// en herhalen we de opdracht om de cache bij te werken.
We controleren de status van de benodigde pakketten (de opdracht is samengevoegd, in het voorbeeld is het 32-bits pakket eruit gefilterd):
yum -C list
ncurses libicu libtommath
gzip tar curl wget |
grep -v i686
Geïnstalleerde pakketten
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
Beschikbare pakketten
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
We zien dat curl, gzip en ncurses zijn geplaatst in de pseudo-repository van de installer (anaconda), terwijl tar is uitgesloten van een minimale systeemeis. Hoofdversies libncurses en libtommath zijn hoger dan vereist: 6 en 1 in plaats van 5 en 0, respectievelijk. Als hetzelfde pakket zowel geïnstalleerd als beschikbaar is, is er een update voor beschikbaar. Installeer de ontbrekende pakketten:
sudo yum install
libicu libtommath tar
Ubuntu 19
Voor pakketbeheer zijn er verschillende hulpmiddelen: apt, apt-get en apt-cache. De eerste is bedoeld voor interactief gebruik, terwijl de laatste twee zijn ontworpen voor gebruik in scripts. De pakketnamen zijn iets anders en bevatten de versie.
We controleren de status van de benodigde pakketten (de opdracht is samengevoegd, het voorbeeld is verkort en de 32-bits pakketten zijn eruit gefilterd):
apt list libncurses? libicu?? libtommath?
gzip tar curl wget |
grep -v i386
curl 7.65.3-1
gzip 1.10-0 [upgradeerbaar…]
libicu63 63.2-2 [geïnstalleerd]
libncurses5 6.1
libncurses6 6.1 [geïnstalleerd, automatisch]
libtommath1 1.1.0
tar 1.30 [geïnstalleerd]
wget 1.20.3 [geïnstalleerd]
Pakketten waarvoor in vierkante haken staat geïnstalleerd/upgradeerbaar zijn geïnstalleerd. Beschikbaar, maar niet geïnstalleerd ncurses5, in plaats van curl geïnstalleerd wget. Installeer de ontbrekende pakketten:
sudo apt-get install
libncurses5 libtommath1
Maak symbolische links aan
Aangezien libtommath.so.1 en libncurses.so.6 achterwaarts compatibel zijn met libtommath.so.0 en libncurses.so.5, is het voor Firebird voldoende om symbolische links naar de aanwezige versies van de bibliotheken te maken.
Zoek libtommath.so.1 (libncurses.so.? zijn te vinden in dezelfde map):
find /usr -name libtommath.so.1
CentOS:
/usr/lib64/libtommath.so.1
Ubuntu:
/usr/lib/x86_64-linux-gnu/libtommath.so.1
Maak symbolische links aan.
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
Controleer het resultaat (de opdracht is samengevoegd, voorbeeld uitvoer is verkort):
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
Het downloaden van de Firebird DBMS-distributie.
Op de officiële website van het Firebird-project (firebirdsql.org) worden links gepubliceerd naar de distributies van 'officiële' versies (releases) en 'dagelijkse' builds (snapshot build).
Officiële releases voor Linux zijn beschikbaar als archieven (tar.gz) en deb/rpm-pakketten, terwijl builds alleen als archieven beschikbaar zijn. We zullen de 'generieke installer' (generic installer uit tar.gz) bekijken.
Het archief van de build moet worden gedownload en uitgepakt, maar we combineren beide processen. Het uitpakken gebeurt in /tmp,waar URL de link naar het te downloaden archief aanduidt.
curl:
curl -L URL | tar -zxC /tmp
wget:
wget -O– URL | tar -zxC /tmp
Standaard curl stuurt de gedownloade gegevens naar de standaard uitvoer, maar verwerkt geen omleidingen en we voegen "‑L", en wget, daarentegen: verwerkt omleidingen, maar schrijft gegevens naar een bestand en we plaatsen "‑O‑". Voor tar geven we het gebruik van op gzip-filter en de map aan waaruit wordt uitgepakt. Na voltooiing van het proces verschijnt er een map met de naam Firebird‑3.0.5.33220‑0.amd64 met drie bestanden: install.sh, buildroot.tar.gz en manifest.txt.
Installatie van Firebird
Tijdens de voorbereidende stappen hebben we de systeemparameterwaarde aangepast, vm.max_map_countgecontroleerd of we de ICU-, ncurses- en tommath-bibliotheken hadden en deze geïnstalleerd. We hebben de versies van ncurses en tommath gecontroleerd (libncures.so.5 en libtommath.so.0) en de nodige symlinks gemaakt.
De installatie zelf is heel eenvoudig. We gaan naar de map waar het archief van de Firebird-distributie is uitgepakt, controleren het en als het nodig is, stellen we de 'uitvoerbare' vlag in voor het script install.sh:
chmod +x install.sh
en voeren het installatie-script uit:
sudo ./install.sh
door op de Enter-toets te drukken bevestigen we het begin van de installatie en bij het ontvangen van de prompt voeren we het sysdba-wachtwoord in.
Het installatie-script start automatisch systemd-eenheid firebird-superserver (stille architectuur van Firebird 3.0). De Firebird-service zal werken met standaardparameters voor de superserver: een pagina-cache van 2048 pagina's (per database), een sorteerbuffer van 64 MB (totaal) en alleen verbindingen van clients van de derde versie. Bekijk de parameters firebird.conf:
grep -v ^# firebird.conf | grep -v ^$
Houd er rekening mee dat nieuwe waarden van firebird.conf pas geactiveerd zullen worden na een herstart van de Firebird-service.
Bij het selecteren van parameterwaardes moet rekening worden gehouden met de drie belangrijkste 'consumenten': pagina-cache (voor database), sorteerbuffer (totaal) en geheugen dat door de server is toegewezen voor clientverbindingen. Alleen de eerste twee kunnen worden beheerd – de hoeveelheid geheugen voor clientverbindingen hangt af van het aantal en de inhoud van gecachte verzoeken, hun plannen en de database-objecten die in de verzoeken worden gebruikt. De schatting van het geheugen voor clientverbindingen gebeurt alleen empirisch en kan veranderen bij wijzigingen in clienttoepassingen en/of database-objecten.
Voor superservers op hosts met een klein geheugenvolume (tot 12-16 GB) moet niet meer dan een derde tot een vierde van het totale RAM worden toegewezen voor de pagina-cache en de sorteerbuffer.
Als het aantal databases niet vastligt en kan veranderen, moet de totale hoeveelheid geheugen van de pagina-cache worden verdeeld over het maximale aantal databases dat op de server kan zijn. De grootte van de pagina-cache wordt in pagina's ingesteld en moet apart naar bytes worden omgerekend.
Om over te schakelen naar de classic-architectuur is het minimaal noodzakelijk om ServerMode in firebird.conf, daar de pagina-cache te verlagen (niet meer dan 2K), de sorteerbuffer te verkleinen (de totale toegestane hoeveelheid van alle sorteringen, gedeeld door het maximale aantal verbindingen), het eenheid te verbieden en te stoppen firebird-superserver, het eenheid toe te staan en te starten firebird-classic.socket.
Het gebruik van de superclassic-architectuur in Firebird 3.0 heeft weinig zin: 'betrouwbaarheid' – zoals de superserver en dezelfde gezamenlijke sorteerbuffer. Er is geen gemeenschappelijke pagina-cache en de 'verliezen' bij het synchroniseren van verschillende verbindingen zijn even hoog als bij classic.
Het moet worden herinnerd dat in Firebird 3.0 sommige parameters (pagina-cache, grootte van het lock-bestand, hash-tabellen en enkele andere) kunnen worden ingesteld in databases.conf individueel voor elke database. Voor de superserver is het nuttig, bijvoorbeeld, om een kleine waarde in te stellen voor DefaultDbCachePages in firebird.conf en individuele pagina-caches instellen voor de benodigde databases in databases.conf.
Vragen over het artikel kun je in de reacties stellen of je kunt e-mailen naar ons ondersteuningadres support@ibase.ru.
Bron: habr.com
