Diese Seite wurde maschinell übersetzt. Lesen Sie das englische Original. English

IBSurgeon-Bibliothek

So installieren Sie Firebird 3.0 und 4.0 unter Linux

by Vasily Sidorov, 24. August 2022

In diesem Artikel beschreiben wir die Installation von Firebird Versionen 3 und 4 auf den gängigen Linux-Versionen: CentOS 7, Oracle Linux 7/8, Debian 9/10, Ubuntu 18/20 und OpenSUSE 15.0.

Um die Firebird-Distribution für Linux zu erhalten, verwenden Sie bitte das tar-Archiv von der offiziellen Firebird-Website:

Wir gehen davon aus, dass die Installation entweder als root oder mit sudo-Rechten durchgeführt wird und dass der Linux-Computer über Internetzugang verfügt.

Bitte beachten Sie, dass einige Befehle eine Eingabe vom Benutzer erfordern. Bitte beachten Sie, dass Zeilen mit Semikolon (;) am Ende bedeuten, dass der Befehl als einzeiliger Befehl ausgeführt werden kann.

Außerdem empfehlen wir, die Release Notes für die Version von Firebird zu lesen, die Sie installieren möchten.

Voraussetzungen

Die Systembibliotheks-Anforderungen für 4.0.1 und 3.0 sind gleich geworden: statisches Linken für ncurses5 und tommath0 und dynamisch für ICU.

Je nach Distribution ist ncurses5 eine Systembibliothek (RH7/Debian) oder als Paket für Abwärtskompatibilität verfügbar (RH8/Debian).

Die Bibliothek tommath wird mit Version 0 oder Version 1 vorhanden sein (sie sind binär kompatibel). Wenn es kein tommath0 gibt, erstellen wir einen Symlink.

Weitere notwendige Systemwerkzeuge sind tar und curl.

Wir installieren diese Pakete explizit, damit der Paketmanager sie als manuell verwaltet markiert und sie nicht automatisch deinstalliert.

Schnellinstallation

1. Maximale Anzahl von Maps festlegen.

Dieser Schritt ist optional, aber für Produktionssysteme dringend empfohlen:

Öffnen Sie die Datei /etc/sysctl.conf und fügen Sie die folgende Zeile hinzu:

Code
vm.max_map_count = 256000

dann anwenden

Code
sysctl -p /etc/sysctl.conf

2. Notwendiges Repository für libtommath installieren

Für CentOS 7

Code
yum install epel-release;

Für CentOS 8

Code
dnf install epel-release;

Für Oracle Linux 7

Code
yum install oracle-epel-release-el7;

Für Oracle Linux 8

Code
dnf install oracle-epel-release-el8;

Für andere Distributionen sollten die notwendigen Pakete in den Haupt-Repositories verfügbar sein.

3. Pakete und Werkzeuge installieren

CentOS 7 / Oracle Linux 7

Code
yum makecache;
yum install ncurses libicu libtommath;
yum install curl tar;

CentOS 8 / Oracle Linux 8

Code
dnf makecache;
dnf install ncurses-compat-libs libicu libtommath;
dnf install curl tar;

Debian 9/10, Ubuntu 18/20

Code
apt-get install libncurses5 libtommath1;
apt-get install curl tar;

Open SUSE 15

Code
zypper install libncurses5 libtommath1;
zypper install curl tar;

Die Version von ICU kann variieren:

Debian 9

Code
apt-get install libicu57

Debian 10

Code
apt-get install libicu63

Ubuntu 18

Code
apt-get install libicu60

Ubuntu 20

Code
apt-get install libicu66

OpenSUSE 15.0

Code
zypper install libicu60_2

In den Distributionen, die libtommath1 haben (alle oben genannten außer CentOS7 und Oracle Linux 7), ist es notwendig, den Symlink libtommath.so.0 zu erstellen:

Code
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;

Das Installationsskript von Firebird 4.0.1 und höher kann den Symlink automatisch erstellen, aber für Firebird 3 muss er manuell erstellt werden.

4. Firebird herunterladen und installieren

Nach der Installation der notwendigen Werkzeuge und Bibliotheken können wir mit dem Herunterladen, Entpacken und Ausführen des Installationspakets fortfahren.

Wir gehen davon aus, dass DOWNLOADLINK ein Link von www.firebirdsql.org ist, um die benötigte Firebird-Version herunterzuladen.

Code
curl -L DOWNLOADLINK | tar -zxC /tmp
cd /tmp/FIREBIRD_folder
sudo ./install.sh

Hier ist DOWNLOADLINK - Link zu tar.gz, und FIREBIRD_folder - Firebird-Version.build-0.Architektur

wo die Distribution durch den Befehl tar -zxC /tmp entpackt wird.

Das ist alles, was für die Schnellinstallation von Firebird 3 oder 4 auf Linux benötigt wird.

Optional können Sie die optimalen Konfigurationsdateien (firebird.conf und databases.conf) mit dem Firebird Configuration Calculator generieren.

Weitere Details zur Firebird-Installation

Für diejenigen, die die Firebird-Installation besser konfigurieren möchten, bieten wir eine detaillierte Erklärung der obigen Schritte.

Konfiguration von vm.max_map_count

Firebird ab Version 3 nutzt effektiv die SuperServer-Architektur mit intensiver dynamischer Speicherzuweisung. Bei hoher Last und häufigen Verbindungs- und Trennungsvorgängen kann die Engine auf Linux an die Speicherfragmentierungsgrenzen stoßen, was als Fehler 11 (ENOMEM) oder Fehler 12 (munmap) in firebird.log angezeigt wird.

Die Speicherfragmentierungsgrenze wird durch den Parameter vm.max_map_count gesteuert, der standardmäßig den Wert 65536 hat.

Um diese Einstellung nach einem Neustart des Servers beizubehalten, fügen Sie die folgende Zeile zu /etc/sysctl.conf hinzu:

Code
vm.max_map_count = 256000

Um sie anzuwenden, starten Sie entweder den Server neu oder führen Sie den Befehl aus:

Code
sudo sysctl -p /etc/sysctl.conf

Planung des Speicherplatzes

Im Allgemeinen empfehlen wir, 3 separate Partitionen auf dem Server mit der Firebird-Datenbank zu reservieren: für temporäre Dateien, für Datenbanken und für lokale Backups.

Partition für temporäre Dateien

Die wichtigsten temporären Dateien sind Sperrdateien, Sortierdateien, Dateien für globale temporäre Tabellen und Blobs sowie Dateien mit Überwachungsdaten.

Standardmäßig befinden sich auf Linux Sortierdateien und Dateien mit Daten für globale temporäre Tabellen in /tmp, Dateien für mon$-Daten und Sperrtabellen in /tmp/firebird.

Wie bestimmt man die richtige Größe für die Partition mit temporären Dateien?

Potentiell können Sortier- und Blob-Dateien ziemlich groß sein, daher ist die praktische Empfehlung, eine Partition für temporäre Dateien für Produktionssysteme mit einer angemessenen Anzahl von Benutzern von etwa 30-40 GB zu haben. Um die richtige Größe genauer zu bestimmen, empfehlen wir, die tatsächlichen Größen der temporären Dateien zu beobachten.

Das kleine Problem bei solcher Überwachung ist, dass Sortierdateien sofort nach der Erstellung verknüpfungsfrei (unlinked) werden, sodass sie mit dem üblichen “ls”-Befehl nicht sichtbar sind. Um sie zu sehen, müssen wir die Handles für den Prozess überprüfen (und sie werden als gelöscht markiert) mit dem folgenden Befehl:

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

Als Ergebnis dieses Befehls sehen wir den Inhalt des Pseudo-Ordners /proc/…/fd/

Um Informationen über die spezifische Datei in diesem Ordner zu sehen, muss der Befehl verwendet werden:

Code
sudo stat -L /proc/`pgrep firebird`/fd/NNNNN

wobei NNNNN der Deskriptor der Datei ist.

Sie können diesen Befehl für SuperServer- und SuperClassic-Architekturen verwenden, wenn die Engine als einzelner Prozess läuft. Natürlich kann anstelle von pgrep firebird auch die Handle-Nummer des Firebird-Prozesses angegeben werden.

Partition für Datenbankdateien

Die Partition für Datenbankdateien sollte ausreichend sein, um alle Datenbankdateien plus freien Speicherplatz in der Größe der größten Datenbank plus Reserve für das Wachstum der nächsten 2-3 Jahre zu speichern.

Partition für lokale Backups

Mindestens sollte die Partition für lokale Backups ausreichend sein, um alle lokalen Backups plus das Backup der größten Datenbank zu speichern.

Außerdem empfehlen wir, für die Durchführung von Wiederherstellungen auf der Backup-Partition zusätzlichen freien Speicherplatz in Höhe der größten Datenbankgröße zu haben.

Weiterführende Lektüre zu Backups

Benutzer firebird erstellen (optional)

Das Installationsskript erstellt, falls nicht vorhanden, Benutzer und Gruppe namens “firebird”, um alle Aktivitäten von Firebird mit diesem Benutzer durchzuführen (dies ist eine bewährte Praxis für Linux-Systeme).

Es bedeutet auch, dass Datenbankdateien und Ordner, in denen sich Datenbanken und Backups befinden, Eigentum oder Berechtigungen für diesen Benutzer haben sollten.

Manchmal ist es sinnvoll, Benutzer und Gruppe “firebird” vor der Installation zu erstellen:

Code
groupadd firebird &&
useradd -M -b /opt -s /sbin/nologin \
 -g firebird -u UID firebird

Für den Benutzer firebird erstellen wir kein Home-Verzeichnis (Schalter -M), geben nur das Basisverzeichnis an (-b).

Die Shell nologin mit dem Schalter -s verhindert den normalen Login auf dem Server.

Notwendige Pakete installieren

Firebird 3.0 und 4.0 hängen von den Bibliotheken ncurses (libncurses.so.5), ICU (ohne Versionslink, und sie werden nicht in der ldd-Ausgabe angezeigt) und tommath (libtommath.so.0) ab.

Je nach Linux-Distribution müssen wir Bibliotheksnamen mit oder ohne Versionen verwenden. Die praktischen Copy-Paste-Befehle sind oben gezeigt, und unten beschreiben wir sie.

CentOS und Oracle Linux

Version 7 enthält die notwendigen Pakete standardmäßig, Version 8 erfordert die Installation von ncurses-compat-libs und die Erstellung des Symlinks libtommath.so.0.

Debian, Ubuntu und OpenSUSE

In den Versionen Debian 9 und 10, Ubuntu 18 und 20, OpenSUSE 15 müssen wir libncurses5 und libtommath1 installieren, und um die Version von ICU zu identifizieren, können wir die Suche nach dem unvollständigen Namen verwenden:

in Ubuntu

Code
apt-cache search libicu5

in OpenSUSE 15

Code
zypper search libicu6

Details zur Firebird-Installation

Vor der Installation haben wir den Systemparameter vm.max_map_count erhöht, die Bibliotheken ICU, ncurses und tommath installiert. Dann haben wir überprüft, dass wir die korrekten Versionen von ncurses und tommath (libncures.so.5 und libtommath.so.0) haben oder die notwendigen Symlinks erstellt.

Optional konnten wir Benutzer und Gruppe firebird erstellen.

Danach können wir Firebird installieren. Dazu gehen wir in den Ordner, in dem das Installationspaket entpackt wurde, und starten die Installation:

Code
./install.sh

Drücken Sie Enter, um die Installation zu bestätigen, und geben Sie bei Aufforderung das Passwort für SYSDBA ein.

Zunächst wird Firebird mit der Standardkonfigurationsdatei installiert. Die Standardkonfiguration läuft als SuperServer-Architektur mit bescheidenen Werten: Cache (DefaultDbCachePages, auch Page buffers genannt) pro Datenbank ist auf 2048 gesetzt, Puffer für Sortierungen (TempCacheLimit) ist 64M (für den Server in v3 und pro Datenbank in v4).

Um nicht auskommentierte Parameter von firebird.conf anzuzeigen, können Sie den folgenden Befehl verwenden:

Code
grep -v ^# firebird.conf | grep -v ^$

Wenn Sie eine optimale Konfigurationsdatei mit dem Firebird Configuration Calculator generieren oder Parameter manuell ändern, beachten Sie bitte, dass Änderungen nach dem Neustart des Firebird-Dienstes angewendet werden (im Fall von SuperServer und SuperClassic, im Fall von Classic ist ein Neustart aller Firebird-Prozesse erforderlich).

Bitte beachten Sie, dass es seit Firebird 3 separate systemd-Units für SuperServer, SuperClassic und Classic gibt.