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

In diesem Artikel beschreiben wir die Mindestmaßnahmen, die für eine optimale Installation des Firebird DBMS Version 3.0 auf neuen Linux-Distributionen erforderlich sind. Als Beispiele werden CentOS 8 und Ubuntu 19 ausgewählt.

Um die Firebird-Distribution an das Zielsystem zu „liefern“, wird in diesem Handbuch die Option zum Herunterladen des tar.gz-Archivs über einen Link von der offiziellen Projektwebsite ausgewählt (firebirdsql.org).

Für die Ungeduldigsten: Stürzen Sie sich direkt in die Schlacht:

Schnellinstallation

Bearbeiten der Datei /etc/sysctl.confdurch Hinzufügen der Zeile:

vm.max_map_count = 256000

Speichern Sie die Datei und übernehmen Sie die Einstellung:

sudo sysctl -p /etc/sysctl.conf

Weitere Anweisungen unterscheiden sich jedoch für CentOS 8 und Ubuntu 19 ССЫЛКА и КАТАЛОГ Geben Sie einen Link von der offiziellen Firebird-Projektwebsite zum Herunterladen der Distribution und das Verzeichnis an, in das die Distribution während des Downloadvorgangs entpackt wird.
Derzeit (März 2020) ist die aktuelle Version Firebird 3.0.5 (Hier ist der Link zur 64-Bit-Version).

8 CentOS

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 ССЫЛКА|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- ССЫЛКА|tar -zxC /tmp

Die eigentliche Installation des Firebird DBMS:

cd /tmp/КАТАЛОГ
sudo ./install.sh

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

Startseite

Eine kurze Einleitung

Es wird davon ausgegangen, dass das Betriebssystem bereits in einer Minimalversion installiert ist und der Zugriff auf öffentliche Repositories oder deren lokale Kopien konfiguriert ist.

Es wird davon ausgegangen, dass der Leser über Grundkenntnisse in Linux und dem Firebird DBMS verfügt.

Planung

Auf dem DBMS-Server wird empfohlen, separate Abschnitte für temporäre Dateien zuzuweisen (/tmp), Datenbankdateien und lokale Backups.

Zu den temporären gehören Sperrdateien, Sortierdateien, „Materialisierungs“-Dateien globaler temporärer Tabellen (GTT) und Überwachungstabellen. Die Dateien zum Sortieren und für globale temporäre Tabellen befinden sich in /tmp, mon$-table-Dateien und lock-files – in /tmp/firebird.

Sortierdateien werden „gelöscht“ (unlink) direkt nach der Erstellung, sodass sie nicht in der Verzeichnisliste „gesehen“ werden können, sondern nur in der Liste der Prozess-Handles (markiert als deleted):

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

In der Pseudoverzeichnisliste /proc/…/fd/ Symlinks werden angezeigt und aktuelle Informationen über die Datei werden bereitgestellt durch:

sudo stat -L /proc/`pgrep firebird`/fd/НОМЕР

wo НОМЕР – Deskriptor (Deskriptor) der interessierenden Datei.

Anstatt zu rufen „pgrep исполняемый-файл„Sie können die Kennung des betreffenden Prozesses sofort ersetzen.

Temporäre Dateien können daher sehr groß sein /tmp Es wird empfohlen, mindestens 20–30 GB zuzuweisen. Es ist zu berücksichtigen, dass die Größe der Sortierdateien nur von der explizit oder implizit in der Anfrage sortierten Datenmenge abhängt und ein einzelner Benutzer Gigabyte an temporären Dateien „erstellen“ kann.

Der Abschnitt für Datenbankdateien muss alle Datenbankdateien aufnehmen. plus mindestens eine Kopie der größten Datenbankdatei. Es ist notwendig, das zukünftige Wachstum der Datenbankdateien für mehrere Jahre zu berücksichtigen.

Der Abschnitt „Lokale Sicherungen“ muss mindestens ein Sicherungsarchiv aller Datenbanken sowie eine Sicherung der größten Datenbank enthalten. Es ist wünschenswert, dass dieser Abschnitt auch Platz für die Wiederherstellung der größten Datenbank enthält. Das zukünftige Wachstum von Backups und Backup-Archiven über mehrere Jahre hinweg sollte berücksichtigt werden.

Vorbereitende Vorbereitung

Der Firebird 3.0 DBMS-Server weist Systemspeicher dynamisch zu und gibt ihn frei, was zu dessen Fragmentierung führen kann. Nachdem beispielsweise eine große Anzahl von Benutzern gleichzeitig vom Superserver getrennt wurde, können beim Herstellen neuer Verbindungen Fehler auftreten.

Die Speicherfragmentierung wird durch einen Systemparameter gesteuert vm.max_map_count, der Standardwert ist 64 KB. Es wird empfohlen, den Wert um das Vierfache zu erhöhen:

sudo sysctl vm.max_map_count=256000

Damit der neue Wert beim Systemneustart eingestellt wird, ergänzen Sie die Datei /etc/sysctl.conf Linie:

vm.max_map_count = 256000

Es empfiehlt sich, einen Kommentar abzugeben, damit der Grund für die Änderung dieses Parameters klar ist. Sie können die Datei zunächst bearbeiten und dann die darin gespeicherten Einstellungen übernehmen:

sudo sysctl -p /etc/sysctl.conf

Erforderliche Pakete installieren

Ausführbare Dateien des Firebird 3.0 Linux DBMS hängen von den ncurses-Bibliotheken ab (libncurses.so.5), ICU (nicht an die Version gebunden und wird nicht in der Ausgabe angezeigt ldd) und tommath (libtommath.so.0). Zum Herunterladen und Entpacken des Assembly-Archivs benötigen Sie Dienstprogramme gzip, tar и curl oder wget. ICU-Versionen, gzip, tar и curl/wget – sind unbedeutend.

Die Arbeit mit Paketen hängt vom System und dem im System verwendeten Paketmanager ab, daher werden wir sie einzeln betrachten.

8 CentOS

CentOS 8 verwendet einen neuen Paketmanager – dnf und es wird auf Befehl „transparent“ genannt yum. Da es für unsere Zwecke keinen Unterschied zwischen ihnen gibt, wird es in den Beispielen einen Unterschied geben yum.

Aktualisieren Sie den Metadaten-Cache: sudo yum makecache

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

yum -C repolist

Option „nur aus Cache“ (-C oder --cache-only) wird verwendet, um unnötige Überprüfungen und Downloads zu vermeiden und Yum schneller zu machen. Wenn in der Liste kein Epel-Repository vorhanden ist, installieren Sie es und aktualisieren Sie den Metadaten-Cache:

sudo yum install epel-release &&
sudo yum makecache

Wir bestätigen Anfragen bei Bedarf und vergleichen die Werte von PGP-Schlüsseln mit denen, die bereits von einer vertrauenswürdigen Quelle stammen.

Wenn beim Laden der Repository-Metainformationen aus https-Ressourcen Probleme auftreten, bearbeiten Sie die Datei /etc/yum.repos.d/epel.repo, ersetzen https:// auf http:// und wiederholen Sie den Cache-Aktualisierungsbefehl.

Wir überprüfen den Status der benötigten Pakete (der Befehl ist kompliziert, in der Beispielausgabe wird das 32-Bit-Paket gefiltert):

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

Wir sehen das curl, gzip и ncurses gehostet im Pseudo-Repository des Installationsprogramms (anaconda), und tar – von der Mindestsysteminstallation ausgeschlossen. Hauptversionen libncurses и libtommath mehr als erforderlich: 6 und 1 statt jeweils 5 und 0. Wenn dasselbe Paket sowohl installiert als auch verfügbar ist, wurde ein Update dafür veröffentlicht. Installieren Sie die fehlenden Pakete:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Dienstprogramme dienen der Verwaltung von Paketen apt, apt‑get и apt‑cache. Die erste ist für interaktives Arbeiten konzipiert und die letzten beiden sind für die Verwendung in Skripten konzipiert. Die Paketnamen unterscheiden sich geringfügig und enthalten die Version.

Wir überprüfen den Status der benötigten Pakete (der Befehl wird zusammengefasst, die Beispielausgabe wird gekürzt und 32-Bit-Pakete werden 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, auf die in eckigen Klammern hingewiesen wird installed/upgradable - Eingerichtet. Verfügbar, aber nicht installiert ncurses5statt curl setzen wget. Installieren Sie die fehlenden Pakete:

sudo apt‑get install 
libncurses5 libtommath1

Symlinks erstellen

Da libtommath.so.1 и libncurses.so.6 abwärtskompatibel mit libtommath.so.0 и libncurses.so.5, dann reicht es für Firebird aus, Symlinks zu den vorhandenen Versionen der Bibliotheken zu erstellen.

Wir finden libtommath.so.1 (libncurses.so.? befindet 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

Wir erstellen Symlinks.

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

Schauen wir uns das Ergebnis an (der Befehl ist kompliziert, die Ausgabebeispiele sind gekü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-Distributionskits.

Die offizielle Website des Firebird-Projekts (firebirdsql.org) veröffentlicht Links zu Distributionen „offizieller“ Releases und „täglicher“ Builds (Snapshot-Builds).

Offizielle Linux-Releases sind als Archive (tar.gz) und Deb/rpm-Pakete verfügbar, Builds sind jedoch nur als Archive verfügbar. Wir betrachten den „generischen Installer“ (generischer Installer von tar.gz).

Das Build-Archiv muss heruntergeladen und entpackt werden, wir werden jedoch beide Prozesse kombinieren. Das Auspacken erfolgt in /tmp,URL bezeichnet den Link zum herunterladbaren Archiv.

locken:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Standardmäßig curl sendet die heruntergeladenen Daten an stdout, verarbeitet aber keine Weiterleitungen und wir fügen „‑L„Und wget, im Gegenteil: verarbeitet Umleitungen, schreibt aber Daten in eine Datei und wir setzen „‑O‑" Für tar Verwendung angeben gzip-filter und das Verzeichnis, in das entpackt werden soll. Wenn der Vorgang abgeschlossen ist, wird ein Verzeichnis wie dieses angezeigt Firebird‑3.0.5.33220‑0.amd64 mit drei Dateien: install.sh, buildroot.tar.gz и manifest.txt.

Firebird installieren

Während der vorbereitenden Vorbereitung haben wir den Wert des Systemparameters angepasst vm.max_map_count, überprüfte die Verfügbarkeit und installierte die Bibliotheken ICU, ncurses und tommath. Stellen Sie sicher, dass die Versionen von ncurses und tommath korrekt sind (libncures.so.5 и libtommath.so.0) und die notwendigen Symlinks erstellt.

Die eigentliche Installation ist sehr einfach. Gehen Sie in das Verzeichnis, in dem das Firebird-Distributionsarchiv entpackt wurde, überprüfen Sie und setzen Sie gegebenenfalls das Flag „ausführbar“ für das Skript install.sh:

chmod +x install.sh

Führen Sie das Installationsskript aus:

sudo ./install.sh

Durch Drücken der Eingabetaste bestätigen wir den Start der Installation und geben nach Erhalt der Aufforderung das Sysdba-Passwort ein.

Das Installationsskript startet automatisch systemd-Einheit firebird-superserver (stille Firebird 3.0-Architektur). Der Firebird-Dienst arbeitet mit den Standardparametern für den Superserver: einem Seitencache von 2048 Seiten (pro Datenbank), einem Sortierpuffer von 64 MB (gemeinsam genutzt) und verbindet nur Clients der Version XNUMX. Optionen anzeigen firebird.conf:

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

Bitte beachten Sie, dass die neuen Werte ab firebird.conf wird erst nach dem Neustart des Firebird-Dienstes aktiviert.

Bei der Auswahl der Parameterwerte sollte berücksichtigt werden, dass es drei Hauptverbraucher gibt: den Seitencache (für die Datenbank), den Sortierpuffer (gemeinsam genutzt) und den vom Server für Clientverbindungen zugewiesenen Speicher. Sie können nur die ersten beiden verwalten – die Speichermenge für Clientverbindungen hängt von der Anzahl und dem Text der zwischengespeicherten Abfragen, ihren Plänen und den an den Abfragen beteiligten Datenbankobjekten ab. Schätzungen des Client-Verbindungsspeichers erfolgen nur empirisch und können sich ändern, wenn sich Clientanwendungen und/oder Datenbankobjekte ändern.

Für einen Superserver auf Hosts mit wenig Arbeitsspeicher (bis zu 12–16 GB) sollten Sie nicht mehr als ein Drittel oder ein Viertel der gesamten RAM-Menge für den Seiten-Cache und den Sortierpuffer zuweisen.

Wenn die Anzahl der Datenbanken nicht festgelegt ist und sich ändern kann, sollte die Gesamtgröße des Seitencache-Speichers durch die maximale Anzahl von Datenbanken geteilt werden, die auf dem Server vorhanden sein können. Die Größe des Seitencaches wird in Seiten angegeben und muss separat in Bytes umgerechnet werden.

Um zur klassischen Architektur zu wechseln, müssen Sie dies zumindest explizit angeben ServerMode в firebird.conf, reduzieren Sie dort den Seitencache (nicht mehr als 2 KB), reduzieren Sie den Sortierpuffer (das zulässige Gesamtvolumen aller Arten geteilt durch die maximale Anzahl von Verbindungen), deaktivieren und stoppen Sie die Einheit firebird-superserver, aktivieren und starten Sie das Gerät firebird-classic.socket.

Die Verwendung der superklassischen Architektur in Firebird 3.0 macht wenig Sinn: „Zuverlässigkeit“ ist wie ein Superserver und der gleiche allgemeine Sortierpuffer. Es gibt keinen gemeinsamen Seitencache und die „Verluste“ für die Synchronisierung verschiedener Verbindungen untereinander sind die gleichen wie beim klassischen.

Es ist zu beachten, dass in Firebird 3.0 einige Parameter (Seiten-Cache, Sperrdateigrößen, Hash-Tabellen und einige andere) eingestellt werden können databases.conf einzeln für jede Datenbank. Für einen Superserver ist es beispielsweise sinnvoll, einen kleinen Wert einzustellen DefaultDbCachePages в firebird.conf und installieren Sie einzelne Seitencaches für die erforderlichen Datenbanken in databases.conf.

Stellen Sie Fragen zum Artikel in den Kommentaren oder schreiben Sie Briefe an unsere Support-Adresse [E-Mail geschützt] .

Source: habr.com

Kommentar hinzufügen