Firebird 3 installeren op moderne Linux-versies: CentOS 8 en Ubuntu 19
(C) Basil Sidorov, IBSurgeon, 22-mei-2020
Dit artikel is gewijd aan de snelle installatie van Firebird 3.0 op de nieuwe Linux-distributies: CentOS 8 en Ubuntu 19 (werkt ook voor 18).
Het eerste gedeelte is een snelle installatiehandleiding om Firebird 3.0 zo snel mogelijk te installeren, zonder details. Het tweede deel beschrijft de details.
Snelle installatie van Firebird 3 op CentOS 8 en Ubuntu 19
- Voeg aan het bestand /etc/sysctl.conf de volgende regel toe:
vm.max_map_count = 256000
- Sla sysctl.conf op en pas de nieuwe instellingen toe:
sudo sysctl -p /etc/sysctl.conf
De volgende instructies verschillen enigszins voor CentOS 8 en Ubuntu 19.
Houd er rekening mee dat we de expliciete link naar de nieuwste releasedistributie van Firebird 3.0 van FirebirdSQL.org hebben gebruikt, momenteel (mei 2020) is dat 3.0.5, en hier is de link voor de 64-bits versie:
https://github.com/FirebirdSQL/firebird/releases/download/R3.0.5/Firebird-3.0.5.33220-0.amd64.tar.gz
In de toekomst, wanneer 3.0.6, enz. verschijnt, moet u de juiste link naar de nieuwe release gebruiken - deze wordt gepubliceerd op www.firebirdsql.org.
- Installeer pakketten
CentOS8
sudo yum -y install epel-release sudo yum -y makecache sudo yum -y install libicu libtommath tar sudo ln -s libncurses.so.6 /usr/lib64/libncurses.so.5 sudo ln -s libtommath.so.1 /usr/lib64/libtommath.so.0
sudo ln -s ln -s libncurses.so.5 /usr/lib64/libncurses.so.5
curl -L https://github.com/FirebirdSQL/firebird/releases/download/R3_0_5/Firebird-3.0.5.33220-0.amd64.tar.gz|tar -zxC /tmp
Ubuntu 19
sudo apt-get -y install libncurses5 libtommath1 sudo ln -s libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0 wget -O- https://github.com/FirebirdSQL/firebird/releases/download/R3_0_5/Firebird-3.0.5.33220-0.amd64.tar.gz|tar -zxC /tmp
Als resultaat heeft u alle Firebird-installatiebestanden gereed in /tmp/firebird:
/tmp/Firebird-3.0.5.33220-0.amd64# ll
total 8484
drwxr-xr-x 2 root root 4096 Jan 9 13:13 ./
drwxrwxrwt 28 root root 4096 May 22 17:20 ../
-rw-r--r-- 1 root root 8615663 Jan 9 13:13 buildroot.tar.gz
-rwxr-xr-x 1 root root 44096 Jan 9 13:13 install.sh*
-rw-r--r-- 1 root root 14967 Jan 9 13:13 manifest.txt
- En installeer vervolgens Firebird:
cd /tmp/Firebird-3.0.5.33220-0.amd64 sudo ./install.sh
Controleer daarna of Firebird draait - de onderstaande opdracht toont alle processen die verband houden met Firebird of die draaien onder gebruiker firebird:
ps aux | grep firebird
Dat is alles als u alleen Firebird 3.0 hoeft te installeren.
Als u wilt weten wat de bovenstaande opdrachten betekenen, lees dan verder!
Hoofdgedeelte: details van de installatie van Firebird 3 op Linux
In dit artikel gaan we ervan uit dat het besturingssysteem in de minimale versie is geïnstalleerd en dat u al toegang heeft tot de openbare repositories of hun lokale kopieën.
Planning van de ruimtetoewijzing
Op de server die bedoeld is om Firebird-databases te bedienen, raden we aan om afzonderlijke volumes toe te wijzen voor tijdelijke bestanden (/tmp), databasebestanden en lokale back-ups.
Volume voor tijdelijke bestanden
Firebird-tijdelijke bestanden omvatten lock-bestanden, sorteervolumes, bestanden om globale tijdelijke tabellen (GTT) te “materialiseren” en monitoringtabellen. Sorteervolumes en GTT-bestanden bevinden zich in /tmp, mon$- en lock-bestanden bevinden zich in /tmp/firebird.
Sorteervolumes worden onmiddellijk na het aanmaken ontkoppeld, daarom kunt u ze niet in de map zien (in tegenstelling tot Windows) met de ls-opdracht.
Om deze bestanden te zien, moet u de bestandshandles van het Firebird-proces opvragen (en ze zijn gemarkeerd als verwijderd):
sudo ls -lhF /proc/`pgrep firebird`/fd
Om details over een specifiek sorteervolume te krijgen, voert u de opdracht uit
sudo stat -L /proc/`pgrep firebird`/fd/NUMBER
waarbij NUMBER een bestandsdescriptor van het bestand is.
Tijdelijke bestanden kunnen groot zijn, dus het wordt aanbevolen om 20-30Gb voor /tmp toe te wijzen.
Houd er rekening mee dat de sorteergrootte niet afhankelijk is van de databasegrootte: sommige foutieve query’s met het directe product kunnen gemakkelijk een sorteervolume van 100Gb genereren uit een database van 3Mb.
Volume voor databasebestanden
Het volume voor databasebestanden moet groot genoeg zijn om alle databasebestanden te bevatten plus, als minimum, de grootte van de grootste database, voor mogelijke manipulaties ter plaatse.
Vergeet ook niet dat databases in de loop van de tijd groeien en reserveer ook wat vrije ruimte voor hen.
Het wordt sterk aanbevolen om het volume voor de databasebestanden op de snelste schijf/SAN/hardware te plaatsen die u heeft, met de hoogste willekeurige IO-mogelijkheden.
Volume voor lokale back-upbestanden
Het volume voor lokale back-upbestanden moet groot genoeg zijn om back-ups van alle databases te bevatten plus de grootte voor het grootste databasebestand (niet back-up - het is voor mogelijke testherstel). Vergeet natuurlijk de groei van databaseback-ups niet. Het volume voor lokale back-upbestanden kan op relatief langzame schijven worden geplaatst. Firebird-back-upbestanden hebben een lineaire structuur, dus voor een back-upschijf is het voldoende om hoge sequentiële snelheid te hebben.
Voorbereiding
De Firebird-engine wijst geheugen dynamisch toe en dealloceert het, wat kan leiden tot geheugenfragmentatie.
Dit kan bijvoorbeeld gebeuren na het verbreken van de verbinding van veel gebruikers met een Firebird SuperServer-instantie. Geheugenfragmentatie wordt beheerd door de systeemparameter v m.max_map_count, die een standaardwaarde van 65K heeft. Het wordt aanbevolen om dit minstens 4x te verhogen en deze instelling permanent te maken.
Voeg de volgende regel toe aan /etc/sysctl.conf:
vm.max_map_count = 256000
en pas het toe
sudo sysctl -p /etc/sysctl.conf
Installatie van benodigde pakketten
Firebird 3 is afhankelijk van verschillende Linux-pakketten: ncurses, ICU, tommath. Ook hebben we de hulpprogramma’s gzip, tar en curl of wget nodig.
CentOS 8
CentOS gebruikt een nieuwe pakketbeheerder dnf, die transparant wordt aangeroepen door yum. We houden van yum, dus laten we yum gebruiken. Vernieuw eerst de metadatacache:
sudo yum makecache
Het pakket libtommath bevindt zich in de afzonderlijke repository EPEL (E(xtra)P(ackages for)E(nterprise)L(inux)), dus we moeten controleren of deze is ingeschakeld:
yum -C repolist
Optie -C (–cache-only) zorgt ervoor dat yum alleen de cache gebruikt.
Als u epel-repository niet ziet in het resultaat van yum -C repolist, installeer het dan:
sudo yum install epel-release && sudo yum makecache
Bij problemen bewerkt u het bestand /etc/yum.repos.d/epel.repo en vervangt u https:// door http://, en probeer yum makecache opnieuw.
Laten we vervolgens controleren of we alle benodigde pakketten hebben (64-bits in het voorbeeld):
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
Ontbrekende pakketten installeren op CentOS 8
sudo yum install libicu libtommath tar
Ubuntu 19
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]
Ontbrekende pakketten installeren op Ubuntu 19:
sudo apt‑get install libncurses5 libtommath1
Symlinks maken
Libtommath.so.1 en libncurses.so.6 zijn compatibel met libtommath.so.0 en libncurses.so.5, het zal voldoende zijn voor Firebird om symlinks naar de bestaande bibliotheekversies te maken.
Laten we eerst libtommath.so.1 vinden (libncurses.so.? bevindt zich in dezelfde map):
find /usr -name libtommath.so.1
Op CentOS8 bevindt het zich in:
/usr/lib64/libtommath.so.1
Op Ubuntu 19:
/usr/lib/x86_64-linux-gnu/libtommath.so.1
Laten we symlinks maken
CentOS8
sudo ln -s libtommath.so.1 /usr/lib64/libtommath.so.0 sudo ln -s libncurses.so.6 /usr/lib64/libncurses.so.5
Ubuntu 19
sudo ln -s libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0
om resultaten te controleren:
ls -lhF $(dirname `find /usr -name libtommath.so.1`) | grep "lib\(ncurses\|tommath\)\.so\."
op CentOS8 geeft het:
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*
Op Ubuntu geeft het:
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
Firebird 3.0 releasedistributie verkrijgen
Firebird Linux-releases zijn beschikbaar op www.firebirdsql.org als tar.gz-archieven. Laten we aannemen dat URL de downloadlink is naar het Firebird-release tar.gz-archief. We moeten het archief downloaden en uitpakken, hiervoor kunnen we curl of wget gebruiken.
curl
curl -L URL | tar -zxC /tmp
wget
wget -O- URL | tar -zxC /tmp
Als resultaat wordt de map /tmp/Firebird‑3.0.5.33220‑0.amd64 aangemaakt met 3 bestanden: install.sh, buildroot.tar.gz en manifest.txt.
Firebird installeren
Als vereisten hebben we vm.max_map_count ingesteld, ICU, ncurses en tommath gecontroleerd en geïnstalleerd, en symlinks gemaakt.
Daarna is de laatste stap eenvoudig - voer uit
sudo ./install.sh
Dit script start de systeemeenheid firebird-superserver en Firebird is klaar om te werken.
Configuratiebestand en de optimalisatie ervan
Houd er rekening mee dat het standaard Firebird-configuratiebestand firebird.conf op een zeer bescheiden manier is geconfigureerd. U kunt de inhoud van firebird.conf (niet-uitgecommentarieerde regels) controleren met de opdracht:
grep -v ^# firebird.conf | grep -v ^$
Voor de standaard firebird.conf retourneert de bovenstaande opdracht niets, wat betekent dat alle waarden standaard zijn.
Als u een productiesysteem configureert, overweeg dan om geoptimaliseerde Firebird-configuratiebestanden te gebruiken: /nl/optimized-firebird-configuration/
Veelgestelde vraag #1
De veelgestelde vraag is “waarom niet gewoon de repository gebruiken en Firebird installeren met yum of apt?”. Natuurlijk is dat mogelijk, maar er zijn 2 grote redenen:
-
de repository kan de oude versie bevatten (d.w.z. vorige minor release),
-
we willen graag de omgeving controleren om ervoor te zorgen dat alles correct is geïnstalleerd en geconfigureerd.
Ook geven we de voorkeur aan installatie naar /opt, het is gemakkelijker voor cross-platform scripts en goede beheerpraktijken.
Contacten
Stuur gerust vragen, suggesties en mogelijke fouten naar [email protected]