Installation von Firebird 3 auf aktuellen Linux-Versionen: CentOS8 und Ubuntu 19

In diesem Artikel beschreiben wir die minimalen Schritte, die erforderlich sind, um die Datenbankmanagementsystem Firebird Version 3.0 optimal auf neuen Linux-Distributionen zu installieren. Für die Beispiele wurden CentOS 8 und Ubuntu 19 ausgewählt.

Für die ‚Bereitstellung‘ der Firebird-Distribution auf das Zielsystem haben wir in dieser Anleitung die Option gewählt, das tar.gz-Archiv über den Link von der offiziellen Projektwebsite (firebirdsql.org).

Für die Ungeduldigen – direkt zur Sache:

Schnelle Einrichtung

Wir bearbeiten die Datei /etc/sysctl.conf, indem wir folgende Zeile hinzufügen:

vm.max_map_count = 256000

Die Datei speichern und die Einstellung anwenden:

sudo sysctl -p /etc/sysctl.conf

Die weiteren Anweisungen unterscheiden sich für CentOS 8 und Ubuntu 19, jedoch LINK und VERZEICHNIS bezeichnen den Link von der offiziellen Firebird-Website zum Herunterladen der Distribution und das Verzeichnis, in das die Distribution während des Downloads entpackt wird.
Aktuell (März 2020) ist die Version Firebird 3.0.5 verfügbar (hier ist der Link zur 64-Bit-Version).

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

Nun zur Installation des Firebird-Datenbankmanagementsystems:

cd /tmp/VERZEICHNIS
sudo ./install.sh

Wenn Sie besser verstehen möchten, was diese Aktionen bewirken, lesen Sie weiter.

Hauptteil

Eine kurze Einleitung

Es wird vorausgesetzt, dass das Betriebssystem bereits minimal installiert ist und der Zugang zu öffentlichen Repositories oder deren lokalen Kopien konfiguriert ist.

Es wird vorausgesetzt, dass der Leser über Grundkenntnisse in Linux und der Datenbanksoftware Firebird verfügt.

Planung

Auf dem Serversystem der Datenbank wird empfohlen, separate Partitionen für temporäre Dateien (/tmp), Datenbankdateien und lokale Backups bereitzustellen.

Zu den temporären Dateien gehören Lock-Dateien, Sortierdateien, Dateien zur „Materialisierung“ globaler temporärer Tabellen (GTT) und Überwachungs-Tabellen. Die Sortier- und globalen temporären Tabellendateien befinden sich in /tmp, die mon$-Tabellendateien und Lock-Dateien in /tmp/firebird.

Sortierdateien werden sofort nach ihrer Erstellung „gelöscht“ (unlink), sodass sie im Verzeichnislisting nicht sichtbar sind – nur in der Liste der Deskriptoren (Handles) des Prozesses (markiert als deleted):

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

Im Listing des Pseudokatalogs /proc/…/fd/ werden Symlinks angezeigt, und die tatsächlichen Dateiinformationen können mit folgendem Befehl abgerufen werden:

sudo stat -L /proc/`pgrep firebird`/fd/NUMMER

wobei NUMMER – der Deskriptor der interessierenden Datei.

Anstelle des Aufrufs „pgrep ausführbare-datei» Sie können sofort die ID des gewünschten Prozesses einfügen.

Temporäre Dateien können sehr groß sein, daher wird empfohlen, mindestens 20-30 GB bereitzustellen. Es ist zu beachten, dass die Größe der Sortierdateien nur vom Umfang der Daten abhängt, die in der Abfrage explizit oder implizit sortiert werden, und ein einzelner Benutzer kann 'Gigabyte' an temporären Dateien "erzeugen". /tmp Der Speicherplatz für Datenbankdateien muss alle Dateien aller Datenbanken aufnehmen, plus mindestens eine Kopie der größten Datenbankdatei. Es ist wichtig, das Wachstum der Datenbankdateien in den kommenden Jahren zu berücksichtigen.

Der Speicherplatz für lokale Backups sollte mindestens ein Archiv für alle Datenbanken sowie ein Backup der größten Datenbank umfassen. Es ist wünschenswert, dass auf diesem Speicherplatz auch Platz für die Wiederherstellung der größten Datenbank vorhanden ist. Dabei sollte das Wachstum der Backups und Backup-Archive in den kommenden Jahren berücksichtigt werden.

Vorbereitung

Vorbereitung

Der Firebird 3.0 Datenbankserver verwaltet den Systemspeicher dynamisch, was zu Fragmentierung führen kann. Beispielweise können nach dem gleichzeitigen Abdisconnecten einer großen Anzahl von Benutzern Fehler bei neuen Verbindungen auftreten.

Die Fragmentierung des Speichers wird durch den Systemparameter vm.max_map_countkontrolliert, der standardmäßig auf 64K gesetzt ist. Es wird empfohlen, diesen Wert zu vervierfachen:

sudo sysctl vm.max_map_count=256000

Damit der neue Wert nach einem Neustart des Systems wirksam wird, fügen Sie Folgendes in die Datei ein: /etc/sysctl.conf Zeile ein:

vm.max_map_count = 256000

Es ist ratsam, einen Kommentar hinzuzufügen, um den Grund für die Änderung dieses Parameters zu verdeutlichen. Sie können die Datei zuerst bearbeiten und dann die darin festgelegten Einstellungen anwenden:

sudo sysctl -p /etc/sysctl.conf

Installation der erforderlichen Pakete

Die ausführbaren Dateien von Firebird 3.0 für Linux sind von den ncurses-Bibliotheken (libncurses.so.5), ICU (versionsunabhängig und ohne Anzeige in der Ausgabe von ldd) und tommath (libtommath.so.0) abhängig. Zum Herunterladen und Entpacken des Build-Archivs sind die Werkzeuge gzip, , und curl oder tar, und gzip, , und curl/tar wget

erforderlich. Die Versionen von ICU sind unwesentlich.

CentOS 8

Die Arbeit mit Paketen hängt vom System und dem verwendeten Paketmanager ab, weshalb wir sie nacheinander betrachten. dnf der auch «transparently» mit dem Befehl yumaufgerufen wird. Da es für unsere Zwecke zwischen ihnen keinen Unterschied gibt, werden in den Beispielen yum.

der Metadaten-Cache aktualisiert: sudo yum makecache

Das Paket libtomath befindet sich in einem separaten E(xtra)P(ackages for)E(nterprise)L(inux) Repository, daher überprüfen wir, ob es bereits aktiviert ist:

yum -C repolist

Die Option «nur aus dem Cache» (-C oder --cache-only) wird verwendet, um unnötige Überprüfungen und Downloads auszuschließen, wodurch yum schneller arbeitet. Wenn das epel-Repository nicht in der Liste ist, installieren wir es und aktualisieren den Metadaten-Cache:

sudo yum install epel-release &&
sudo yum makecache

Bestätigen Sie die Abfragen, indem Sie bei Bedarf die Werte der PGP-Schlüssel mit den bereits bekannten aus einer vertrauenswürdigen Quelle abgleichen.

Sollten Probleme beim Abrufen der Metainformationen des Repositorys von https-Ressourcen auftreten, bearbeiten Sie die Datei /etc/yum.repos.d/epel.repo, indem Sie https:// findet man http:// ersetzen und den Cache-Aktualisierungsbefehl erneut ausführen.

Überprüfen Sie den Status der benötigten Pakete (die Befehle sind kombiniert, im Beispielsoutput wurde das 32-Bit-Paket herausgefiltert):

yum -C list 
ncurses libicu libtommath 
gzip tar curl wget |
grep -v i686
Installierte Pakete
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
Verfügbare Pakete
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

Wir sehen, dass curl, gzip und ncurses in dem Pseudo-Repository des Installers (anaconda), und , – von der Minimalinstallation des Systems ausgeschlossen ist. Die Hauptversionen libncurses und libtommath sind höher als erforderlich: 6 und 1 statt 5 und 0, jeweils. Wenn dasselbe Paket sowohl installiert als auch verfügbar ist – für dieses wurde ein Update veröffentlicht. Wir installieren die fehlenden Pakete:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Zur Verwaltung von Paketen sind die folgenden Tools vorgesehen: apt, apt‑get und apt‑cache. Ersteres ist für die interaktive Nutzung ausgelegt, während die letzten beiden für die Verwendung in Skripten konzipiert sind. Die Paketnamen sind etwas anders und umfassen die Version.

Wir überprüfen den Status der benötigten Pakete (der Befehl ist zusammengesetzt, die Ausgabe ist verkürzt und 32-Bit-Pakete wurden herausgefiltert):

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]

Pakete, für die in eckigen Klammern angegeben ist, dass sie installed/upgradable – installiert sind. Verfügbar, aber nicht installiert. ncurses5, statt curl installiert tar. Fehlende Pakete werden installiert:

sudo apt‑get install 
libncurses5 libtommath1

Erstellen von Symlinks

Da libtommath.so.1 und libncurses.so.6 abwärtskompatibel mit libtommath.so.0 und libncurses.so.5, genügt es, für Firebird Symlinks zu den vorhandenen Versionen der Bibliotheken zu erstellen.

Suchen nach libtommath.so.1 (libncurses.so.? befinden sich im selben Verzeichnis ):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

/usr/lib/x86_64-linux-gnu/libtommath.so.1

Symlinks erstellen.

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

Überprüfen Sie das Ergebnis (Befehl zusammengefasst, Ausgabebeispiele verkürzt):

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

Herunterladen des Firebird DBMS Distributions.

Auf der offiziellen Website des Firebird-Projekts (firebirdsql.org) werden Links zu den Distributionen von "offiziellen" Versionen (releases) und "täglichen" Builds (snapshot build) veröffentlicht.

Offizielle Releases für Linux sind als Archive (tar.gz) und Pakete deb/rpm verfügbar, während Builds nur als Archive erhältlich sind. Wir werden den "generischen Installer" (generic installer aus tar.gz) betrachten.

Das Build-Archiv muss heruntergeladen und entpackt werden, aber wir werden diese beiden Prozesse kompatibel gestalten. Das Entpacken erfolgt in /tmp, die URL bezeichnet den Link zum herunterladbaren Archiv.

curl:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Standardmäßig curl sendet die heruntergeladenen Daten auf die Standardausgabe, verarbeitet jedoch keine Weiterleitungen. Daher fügen wir "-L", während tarim Gegensatz dazu Weiterleitungen verarbeitet, aber die Daten in eine Datei schreibt. Hierbei setzen wir "-O-". Für , geben wir die Verwendung von gzip-Filter und das Verzeichnis an, in das entpackt wird. Nach Abschluss des Prozesses wird ein Katalog mit folgendem Namen erstellt: Firebird-3.0.5.33220-0.amd64 mit drei Dateien: install.sh, buildroot.tar.gz und manifest.txt.

Installation von Firebird

Im Vorfeld haben wir den Wert der Systemparameter angepasst, vm.max_map_countdie Verfügbarkeit geprüft und die Bibliotheken ICU, ncurses und tommath installiert. Wir haben die Versionen von ncurses und tommath (libncures.so.5 und libtommath.so.0) überprüft und die erforderlichen Symlinks erstellt.

Die Installation selbst ist sehr unkompliziert. Wechseln Sie in das Verzeichnis, in das das Archiv des Firebird-Distributionspakets entpackt wurde, überprüfen Sie die Datei und setzen Sie bei Bedarf das Ausführungsattribut für das Skript. install.sh:

chmod +x install.sh

Führen Sie das Installationsskript aus:

sudo ./install.sh

Bestätigen Sie den Beginn der Installation mit der Eingabetaste, und geben Sie bei Aufforderung das Passwort für sysdba ein.

Das Installationsskript startet automatisch systemd-den Dienst firebird-superserver (Standardarchitektur von Firebird 3.0). Der Firebird-Dienst wird mit standardmäßigen Parametern für den Superserver betrieben: ein Seiten-Cache von 2048 Seiten (pro Datenbank), ein Sortierpuffer von 64 MB (gesamt) und eine Verbindung nur für Clients der dritten Version. Überprüfen Sie die Parameter in firebird.conf:

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

Es ist zu beachten, dass neue Werte aus firebird.conf erst nach einem Neustart des Firebird-Dienstes aktiv werden.

Bei der Auswahl der Parameterwerte ist zu beachten, dass es drei Haupt "Verbraucher" gibt: den Seiten-Cache (für die Datenbank), den Sortierpuffer (gemeinsam) und den vom Server für die Client-Verbindungen bereitgestellten Speicher. Nur die ersten beiden können verwaltet werden – das Speichervolumen der Client-Verbindungen hängt von der Anzahl und dem Text der gecachten Anfragen, ihren Plänen und den in den Anfragen verwendeten Datenbankobjekten ab. Die Bewertung des Speichers der Client-Verbindungen erfolgt ausschließlich empirisch und kann sich ändern, wenn sich die Client-Anwendungen und/oder Datenbankobjekte ändern.

Für Superserver auf Hosts mit kleinem Speicher (bis zu 12-16 GB) sollte nicht mehr als ein Drittel bis ein Viertel des gesamten RAMs für den Seiten-Cache und den Sortierpuffer zugewiesen werden.

Wenn die Anzahl der Datenbanken nicht festgelegt ist und variieren kann, sollte das gesamte Volumen des Seiten-Caches durch die maximale Anzahl der Datenbanken, die auf dem Server vorhanden sein können, geteilt werden. Die Größe des Seiten-Caches wird in Seiten angegeben und muss separat in Bytes umgerechnet werden.

Für den Wechsel zur klassischen Architektur muss mindestens ausdrücklich angegeben werden ServerMode in firebird.conf, reduzieren Sie den Seiten-Cache dort auf maximal 2K, verringern Sie den Sortierpuffer (die maximal zulässige Gesamtkapazität aller Sortierungen geteilt durch die maximale Anzahl an Verbindungen), verweigern und stoppen Sie die Einheit firebird-superserver, erlauben und starten Sie die Einheit firebird-classic.socket.

Die Verwendung der Superclassik-Architektur in Firebird 3.0 macht wenig Sinn: Die 'Zuverlässigkeit' ist die gleiche wie bei dem Superserver und es gibt den gleichen gemeinsamen Sortierpuffer. Es gibt keinen gemeinsamen Seiten-Cache und die 'Verluste' bei der Synchronisation verschiedener Verbindungen sind wie bei der klassischen Version.

Es ist zu beachten, dass in Firebird 3.0 einige Parameter (Seiten-Cache, Größen der Lock-Datei, Hash-Tabellen und einige andere) in databases.conf individuell für jede Datenbank festgelegt werden können. Für den Superserver ist es beispielsweise nützlich, einen kleinen Wert zu setzen DefaultDbCachePages in firebird.conf und individuelle Seiten-Cache für die benötigten Datenbanken in databases.conf.

Fragen zu diesem Artikel können Sie in den Kommentaren stellen oder uns eine E-Mail an unsere Support-Adresse schreiben support@ibase.ru.

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster