Hoe Firebird 3.0 en 4.0 op Linux te installeren
door Vasily Sidorov, 24 aug 2022
In dit artikel beschrijven we de installatie van Firebird versies 3 en 4 op de populaire Linux-versies: CentOS 7, Oracle Linux 7/8, Debian 9/10, Ubuntu18/20 en OpenSUSE15.0.
Om de Firebird-distributie voor Linux te verkrijgen, gebruik je het tar-archief van de officiële Firebird-website:
- Firebird 4: https://firebirdsql.org/en/firebird-4-0/
- Firebird 3: https://firebirdsql.org/en/firebird-3-0/
We gaan ervan uit dat de installatie wordt uitgevoerd met root of met sudoer, en dat de Linux-computer toegang heeft tot internet.
Houd er rekening mee dat sommige opdrachten invoer van de gebruiker vereisen. Houd er ook rekening mee dat regels die eindigen met een puntkomma (;) betekenen dat de opdracht als een regel-opdracht kan worden uitgevoerd.
We raden ook aan om de Release Notes te lezen voor de versie van Firebird die je wilt installeren.
Vereisten
De systeembibliotheekvereisten voor 4.0.1 en 3.0 zijn hetzelfde geworden: statische koppeling voor ncurses5 en tommath0 en dynamisch voor ICU.
Afhankelijk van de distributie is ncurses5 een systeembibliotheek (RH7/Debian) of beschikbaar als pakket voor achterwaartse compatibiliteit (RH8/Debian).
Bibliotheek tommath zal versie 0 of versie 1 hebben (ze zijn binair compatibel). Als er geen tommath0 is, maken we een symlink.
Andere benodigde systeemhulpmiddelen zijn tar en curl.
We installeren deze pakketten expliciet, zodat de pakketbeheerder ze als handmatig beheerd markeert en ze niet automatisch verwijdert.
Snelle installatie
1. Geef het maximale aantal maps op.
Deze stap is optioneel, maar sterk aanbevolen voor productiesystemen:
Open het bestand /etc/sysctl.conf en voeg de volgende regel toe:
vm.max_map_count = 256000
pas dit vervolgens toe
sysctl -p /etc/sysctl.conf
2. Installeer de benodigde repository voor libtommath
Voor CentOS 7
yum install epel-release;
Voor CentOS 8
dnf install epel-release;
Voor Oracle Linux 7
yum install oracle-epel-release-el7;
Voor Oracle Linux 8
dnf install oracle-epel-release-el8;
Voor andere distributies moeten de benodigde pakketten beschikbaar zijn in de hoofdrepository’s.
3. Installeer pakketten en hulpmiddelen
CentOS 7 / Oracle Linux 7
yum makecache;
yum install ncurses libicu libtommath;
yum install curl tar;
CentOS 8 / Oracle Linux 8
dnf makecache;
dnf install ncurses-compat-libs libicu libtommath;
dnf install curl tar;
Debian 9/10, Ubuntu 18/20
apt-get install libncurses5 libtommath1;
apt-get install curl tar;
Open SUSE 15
zypper install libncurses5 libtommath1;
zypper install curl tar;
De versie van ICU kan variëren:
Debian 9
apt-get install libicu57
Debian 10
apt-get install libicu63
Ubuntu 18
apt-get install libicu60
Ubuntu 20
apt-get install libicu66
OpenSUSE 15.0
zypper install libicu60_2
In de distributies die libtommath1 hebben (alle bovenstaande behalve CentOS7 en Oracle Linux 7) is het noodzakelijk om een symlink libtommath.so.0 te maken:
TM=libtommath.so;
for LIB in `find /lib* /usr/lib* -name ${TM}.1`;
do ln -s ${TM}.1 `dirname ${LIB}`/${TM}.0;
done;
unset TM;
Het installatiescript van Firebird 4.0.1 en hoger kan automatisch een symlink maken, maar voor Firebird 3 moet dit handmatig worden gedaan.
4. Download en installeer Firebird
Na de installatie van de benodigde hulpmiddelen en bibliotheken kunnen we doorgaan met het downloaden, uitpakken en uitvoeren van het installatiepakket.
We gaan ervan uit dat DOWNLOADLINK een link is van www.firebirdsql.org om de benodigde Firebird te downloaden.
curl -L DOWNLOADLINK | tar -zxC /tmp
cd /tmp/FIREBIRD_folder
sudo ./install.sh
Hier is DOWNLOADLINK - link naar tar.gz, en FIREBIRD_folder - Firebird-versie.build-0.architectuur
waar de distributie zal worden uitgepakt door de opdracht tar -zxC /tmp
Dat is alles wat nodig is voor de snelle installatie van Firebird 3 of 4 op Linux.
Optioneel kun je de optimale configuratiebestanden (firebird.conf en databases.conf) genereren met Firebird Configuration Calculator.
Meer details over Firebird-installatie
Voor degenen die de Firebird-installatie beter willen configureren, geven we een gedetailleerde uitleg van bovenstaande stappen.
Configuratie van vm.max_map_count
Firebird vanaf versie 3 gebruikt effectief de architectuur SuperServer met intensieve dynamische geheugentoewijzing. Bij hoge belasting en hoge frequentie van verbindingen en verbrekingen kan de engine de limieten voor geheugenfragmentatie op Linux bereiken, wat wordt weergegeven als fout 11 (ENOMEM) of fout 12 (munmap) in firebird.log.
De limiet voor geheugenfragmentatie wordt beheerd door de parameter vm.max_map_count, die standaard de waarde 65536 heeft.
Om deze instelling na het herstarten van de server te behouden, voeg je de volgende regel toe aan /etc/sysctl.conf
vm.max_map_count = 256000
Om dit toe te passen, herstart je de server of voer je de opdracht uit:
sudo sysctl -p /etc/sysctl.conf
Planning van schijfruimte
Over het algemeen raden we aan om 3 afzonderlijke partities op de server met Firebird-database toe te wijzen: voor tijdelijke bestanden, voor databases en voor lokale back-ups.
Partitie voor tijdelijke bestanden
De belangrijkste tijdelijke bestanden zijn lock-bestanden, sorteerbestanden, bestanden voor globale tijdelijke tabellen en blobs, en bestanden met monitoringgegevens.
Standaard bevinden sorteerbestanden en bestanden met gegevens voor globale tijdelijke tabellen zich op Linux in /tmp, en bestanden voor mon$ gegevens en lock-tabellen in /tmp/firebird.
Hoe bepaal je de juiste grootte voor de partitie met tijdelijke bestanden?
Potentieel kunnen sorteer- en blob-bestanden vrij groot zijn, dus een praktische aanbeveling is om een partitie voor tijdelijke bestanden te hebben voor het productiesysteem met een redelijk aantal gebruikers van ongeveer 30-40Gb. Om de juiste grootte nauwkeuriger te bepalen, raden we aan om de werkelijke grootte van tijdelijke bestanden in de gaten te houden.
Het kleine probleem bij dergelijke monitoring is dat sorteerbestanden onmiddellijk na het maken worden ontkoppeld, dus het is niet mogelijk om ze te zien met de gebruikelijke “ls”-opdracht. Om ze te bekijken, moeten we de handles voor het proces controleren (en ze worden gemarkeerd als verwijderd) met de volgende opdracht:
sudo ls -lhF /proc/`pgrep firebird`/fd
Als resultaat van deze opdracht zien we de inhoud van de pseudo-map /proc/…/fd/
Om informatie over het specifieke bestand in deze map te zien, moet je de opdracht gebruiken:
sudo stat -L /proc/`pgrep firebird`/fd/NNNNN
waarbij NNNNN de descriptor van het bestand is.
Je kunt deze opdracht gebruiken voor SuperServer- en SuperClassic-architecturen, wanneer de engine als één proces draait. Natuurlijk is het in plaats van pgrep firebird mogelijk om het handlenummer van het Firebird-proces op te geven.
Partitie voor databasebestanden
De partitie voor databasebestanden moet groot genoeg zijn om alle databasebestanden op te slaan plus vrije ruimte gelijk aan de grootte van de grootste database, plus reserve voor groei voor de komende 2-3 jaar.
Partitie voor lokale back-ups
Als minimum moet de partitie voor lokale back-ups groot genoeg zijn om alle lokale back-ups plus de back-up van de grootste database op te slaan.
Ook raden we aan om op de partitie met back-ups extra vrije ruimte te hebben, gelijk aan de grootte van de grootste database, om herstelbewerkingen uit te voeren.
Meer lezen over back-ups
Maak gebruiker firebird aan (optioneel)
Het installatiescript maakt, als deze niet bestaat, een gebruiker en groep met de naam “firebird” aan om alle activiteiten van Firebird met deze gebruiker uit te voeren (dit is een best practice voor Linux-systemen).
Het betekent ook dat databasebestanden en mappen waar databases en back-ups zich bevinden eigendom of machtigingen voor deze gebruiker moeten hebben.
Soms is het zinvol om gebruiker en groep “firebird” vóór de installatie aan te maken:
groupadd firebird &&
useradd -M -b /opt -s /sbin/nologin \
-g firebird -u UID firebird
Voor gebruiker firebird maken we geen thuismap aan (schakelaar -M), we geven alleen de basismap op (-b).
Shell nologin met schakelaar -s voorkomt standaard login op de server.
Installeer benodigde pakketten
Firebird 3.0 en 4.0 zijn afhankelijk van bibliotheken ncurses (libncurses.so.5), ICU (zonder koppeling naar de versie, en ze worden niet getoond in ldd-uitvoer), en tommath (libtommath.so.0).
Afhankelijk van de Linux-distributie moeten we bibliotheeknamen met of zonder versies gebruiken. De praktische copy-paste-opdrachten worden hierboven getoond, en hieronder beschrijven we ze.
CentOS en Oracle Linux
Versie 7 bevat de benodigde pakketten standaard, versie 8 vereist installatie van ncurses-compat-libs en het maken van een symlink libtommath.so.0.
Debian, Ubuntu en OpenSUSE
In versie Debian 9 en 10, Ubuntu 18 en 20, OpenSUSE 15 moeten we libncurses5 en libtommath1 installeren, en om de versie van ICU te identificeren kunnen we zoeken naar de onvolledige naam:
in Ubuntu
apt-cache search libicu5
in OpenSUSE 15
zypper search libicu6
Firebird-installatiedetails
Vóór de installatie hebben we de systeemparameter vm.max_map_count verhoogd, bibliotheken ICU, ncurses en tommath geïnstalleerd. Daarna hebben we gecontroleerd dat we de juiste versies van ncurses en tommath hebben (libncures.so.5 en libtommath.so.0) of de benodigde symlinks gemaakt.
Optioneel konden we gebruiker en groep firebird aanmaken.
Daarna kunnen we Firebird installeren. Hiervoor gaan we naar de map waar het installatiepakket is uitgepakt en starten we de installatie:
./install.sh
druk op Enter om de installatie te bevestigen, en geef wanneer daarom wordt gevraagd het wachtwoord voor SYSDBA op.
In eerste instantie wordt Firebird geïnstalleerd met het standaard configuratiebestand. Standaardconfiguratie draait als architectuur SuperServer met bescheiden waarden: cache (DefaultDbCachePages, ook wel Page buffers genoemd) per database is ingesteld op 2048, buffer voor sorteringen (TempCacheLimit) is 64M (voor de server in v3 en per database in v4).
Om niet-gecommenteerde parameters van firebird.conf te bekijken, kun je de volgende opdracht gebruiken:
grep -v ^# firebird.conf | grep -v ^$
Als je een optimaal configuratiebestand genereert met Firebird Configuration Calculator of parameters handmatig wijzigt, houd er dan rekening mee dat wijzigingen worden toegepast na het herstarten van de Firebird-service (in het geval van SuperServer en SuperClassic, in het geval van Classic moet je alle Firebird-processen herstarten).
Houd er rekening mee dat er sinds Firebird 3 afzonderlijke systemd-units zijn voor SuperServer, SuperClassic en Classic.