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

In diesem Artikel beschreiben wir die Mindestschritte, die erforderlich sind, um Firebird Version 3.0 auf neuen Linux-Distributionen optimal zu installieren. Beispielsweise wurden CentOS 8 und Ubuntu 19 ausgewählt.

Für die "Übermittlung" der Firebird-Distribution an das Zielsystem wurde in diesem Handbuch die Option ausgewählt, das tar.gz-Archiv über den Link von der offiziellen Website des Projekts ( firebirdsql.org ) herunterzuladen .

Für die Ungeduldigsten - sofort in die Schlacht:

Schnelle Installation


Bearbeiten Sie die Datei, /etc/sysctl.confindem Sie die folgende Zeile hinzufügen:

vm.max_map_count = 256000

Speichern Sie die Datei und wenden Sie die Einstellung an:

sudo sysctl -p /etc/sysctl.conf

Weitere Anweisungen unterscheiden sich für CentOS 8 und Ubuntu 19, sie enthalten jedoch auch den Link von der offiziellen Firebird-Projektwebsite zum Herunterladen des Distributionspakets und das Verzeichnis, in das das Distributionspaket während des Startvorgangs entpackt wird.
Derzeit (März 2020) ist die Version Firebird 3.0.5 relevant ( hier ist ein 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 |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

Installieren des Firebird DBMS:

cd /tmp/
sudo ./install.sh

Wenn Sie besser verstehen möchten, wozu diese Aktionen dienen, lesen Sie weiter.

Hauptteil

Kleine Präambel

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

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

Planung Es wird

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

Temporäre Include-Sperrdateien, Sortierdateien, Materialisierungsdateien globaler temporärer Tabellen (GTTs) und Überwachungstabellen. Sortierdateien und globale temporäre Tabellen befinden sich in /tmp, mon $ table-Dateien und Sperrdateien befinden sich in /tmp/firebird.

Sortierdateien werden unlinkunmittelbar nach der Erstellung "gelöscht" ( ), daher können sie in der Verzeichnisliste nicht "gesehen" werden - nur in der Liste der Prozesshandles (markiert als deleted):

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

In der Pseudoverzeichnisliste /proc/…/fd/werden Symlinks angezeigt, und die tatsächlichen Informationen zur Datei werden angegeben durch:

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

Wo ist der Deskriptor (Deskriptor) der interessierenden Datei?

Anstatt " pgrep -" aufzurufen , können Sie sofort die Kennung des interessierenden Prozesses ersetzen.

Temporäre Dateien können sehr groß sein, daher wird /tmpempfohlen, mindestens 20 bis 30 GB zuzuweisen. Beachten Sie, dass die Größe des Sortierens von Dateien nur von der Datenmenge abhängt, die explizit oder implizit in der Anforderung sortiert ist, und dass ein einzelner Benutzer Gigabyte temporärer Dateien „erstellen“ kann.

Der Abschnitt für Datenbankdateien sollte alle Datenbankdateien enthalten. plus mindestens eine Kopie der größten Datenbankdatei. Es sollte das Wachstum von Datenbankdateien in der Zukunft einige Jahre im Voraus berücksichtigen.

Der Abschnitt für lokale Sicherungen muss mindestens ein Sicherungsarchiv aller Basen sowie die Sicherung der größten Basis enthalten. Es ist ratsam, dass in diesem Abschnitt auch die größte Basis wiederhergestellt werden kann. Es sollte das Wachstum von Backups und Backup-Archiven in der Zukunft für einige Jahre berücksichtigen.

Vorbereitende Vorbereitung Der

Firebird 3.0 DBMS-Server weist den Systemspeicher dynamisch zu und gibt ihn frei, was zu einer Fragmentierung führen kann. Wenn beispielsweise eine große Anzahl von Benutzern gleichzeitig die Verbindung zum Superserver trennt, können bei neuen Verbindungen Fehler auftreten.

Die Speicherfragmentierung wird vm.max_map_countstandardmäßig über den Systemparameter gesteuert - 64 KB. Es wird empfohlen, den Wert viermal zu erhöhen:

sudo sysctl vm.max_map_count=256000

Fügen Sie der Datei die folgende /etc/sysctl.confZeile hinzu, um den neuen Wert beim Neustart des Systems festzulegen :

vm.max_map_count = 256000

Es ist ratsam, einen Kommentar abzugeben, damit der Grund für die Änderung dieses Parameters verstanden wird. Sie können zuerst die Datei bearbeiten und dann die darin gespeicherten Einstellungen anwenden:

sudo sysctl -p /etc/sysctl.conf

Installieren der erforderlichen Pakete Die

ausführbaren Dateien des Firebird 3.0 Linux DBMS hängen von den Bibliotheken ncurses ( libncurses.so.5), ICU (ohne Versionsbindung und ohne Anzeige in der Ausgabe ldd) und tommath ( libtommath.so.0) ab. Zum Herunterladen und Entpacken des Assembly-Archivs sind Dienstprogramme erforderlich gzip, tarund curloder wget. Version der ICU gzip, tarund curl/ wget- sind unbedeutend.

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

CentOS 8

CentOS 8 verwendet den neuen Paketmanager - dnfund wird auf Befehl "transparent" aufgerufen yum. Da es für unsere Zwecke keinen Unterschied zwischen ihnen gibt, wird es Beispiele geben yum.

Aktualisieren des Metadaten-Cache:sudo yum makecache

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

yum -C repolist

Die Option "Nur aus dem Cache" ( -Coder --cache-only) wird verwendet, um unnötige Überprüfungen und Downloads zu vermeiden und das Yum zu beschleunigen. Wenn die Liste kein Epel-Repository enthält, installieren Sie es und aktualisieren Sie den Metadaten-Cache:

sudo yum install epel-release &&
sudo yum makecache

Wir bestätigen die Anforderungen, falls erforderlich, indem wir die Werte von pgp-Schlüsseln mit denen überprüfen, die bereits aus einer vertrauenswürdigen Quelle bekannt sind.

Wenn Sie Probleme beim Herunterladen von Repository-Metainformationen von https-Ressourcen haben, bearbeiten Sie die Datei /etc/yum.repos.d/epel.repo, ersetzen Sie sie https://durch http://und wiederholen Sie den Befehl zum Aktualisieren des Cache.

Überprüfen Sie den Status der erforderlichen Pakete (der Befehl ist gefaltet, im Ausgabebeispiel 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 , dass curl, gzipund ncursessind in der pseudo-Repository des Installateurs (befinden anaconda), und tar- wird von der minimalen Installation des Systems ausgeschlossen. Hauptversionen libncursesund libtommathmehr als erforderlich: 6 und 1 statt 5 bzw. 0. Wenn dasselbe Paket installiert und verfügbar ist, wurde ein Update dafür veröffentlicht. Installieren Sie die fehlenden Pakete:

sudo yum install \
libicu libtommath tar

Ubuntu 19

Dienstprogramme sind für die Paketverwaltung konzipiert apt, apt‑getund apt‑cache. Die erste ist für interaktives Arbeiten konzipiert, die letzten beiden für die Verwendung in Skripten. Paketnamen unterscheiden sich geringfügig und enthalten eine Version.

Wir überprüfen den Status der erforderlichen Pakete (der Befehl ist komplex, das Ausgabebeispiel wird reduziert 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, für die installed/ upgradable- in eckigen Klammern installiert sind . Verfügbar, aber nicht installiert ncurses5, anstatt curlinstalliert wget. Installieren Sie die fehlenden Pakete:

sudo apt‑get install \
libncurses5 libtommath1

Erstellen von Symlinks

Da libtommath.so.1diese libncurses.so.6abwärtskompatibel mit libtommath.so.0und sind libncurses.so.5, reicht es für Firebird aus, Symlinks zu vorhandenen Versionen von Bibliotheken zu erstellen.

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

Erstellen Sie 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

Überprüfen Sie das Ergebnis (der Befehl ist gefaltet, Ausgabebeispiele werden 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-Verteilungskits.

Die offizielle Website des Firebird-Projekts (firebirdsql.org) veröffentlicht Links zu Distributionen der "offiziellen" Releases (Releases) und "täglichen" Assemblys (Snapshot Build).

Offizielle Linux-Versionen sind als Archive (tar.gz) und deb / rpm-Pakete verfügbar, und Builds sind nur als Archive verfügbar. Wir werden uns das "generische Installationsprogramm" (generisches Installationsprogramm von tar.gz) ansehen.

Das Assembly-Archiv muss heruntergeladen und entpackt werden, aber wir werden beide Prozesse kombinieren. Das Entpacken erfolgt in /tmp, die URL zeigt einen Link zum herunterladbaren Archiv an.

Locken:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Standardmäßig curlsendet es die geladenen Daten an die Standardausgabe, verarbeitet jedoch keine Weiterleitungen und wir fügen " ‑L" hinzu, aber wgetim Gegenteil: Es verarbeitet Weiterleitungen, schreibt jedoch Daten in eine Datei und wir setzen " ‑O‑". Für tarzeigen die Verwendung des gzipFilters und das Verzeichnis , in dem das Entpacken durchgeführt werden. Nach Abschluss des Prozesses wird die Verzeichnis Art sein Firebird‑3.0.5.33220‑0.amd64mit drei Dateien: install.sh, buildroot.tar.gzund manifest.txt.

Installieren von Firebird

Während der vorläufigen Vorbereitung haben wir den Wert des Systemparameters angepasst vm.max_map_count, die Verfügbarkeit überprüft und die Bibliotheken ICU, ncurses und tommath installiert. Wir haben sichergestellt, dass die Versionen von ncurses und tommath ( libncures.so.5und libtommath.so.0) korrekt sind, und die erforderlichen Symlinks erstellt.

Eigentlich ist die Installation sehr einfach. Wir gehen zu dem Verzeichnis, in dem das Archiv des Firebird-Distributionskits entpackt wurde, überprüfen und setzen gegebenenfalls das Flag "ausführbare Datei" 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 Beginn der Installation und geben nach Erhalt der Anfrage das sysdba-Passwort ein.

Das Installationsskript startet automatisch eine systemdEinheit firebird-superserver(die Standard-Firebird 3.0-Architektur). Der Firebird-Dienst arbeitet mit Standardparametern für einen Superserver: einem Seitencache von 2048 Seiten (pro Basis), einem Sortierpuffer von 64 MB (gemeinsam genutzt) und dem Verbinden nur von Clients der dritten Version. Ansichtsoptionen firebird.conf:

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

Bitte beachten Sie, dass neue Werte von firebird.conferst nach dem Neustart des Firebird-Dienstes aktiviert werden.

Bei der Auswahl der Parameterwerte sollte berücksichtigt werden, dass es drei Hauptkonsumenten gibt: Seitencache (für die Datenbank), Sortierpuffer (gemeinsam genutzt) und Speicher, der vom Server für Clientverbindungen zugewiesen wird. Sie können nur die ersten beiden verwalten. Die Speicherkapazität für Clientverbindungen hängt von der Anzahl und dem Text der zwischengespeicherten Anforderungen, ihren Plänen und den an den Anforderungen beteiligten Datenbankobjekten ab. Die Speicherauswertung von Clientverbindungen erfolgt nur empirisch und kann sich ändern, wenn sich Clientanwendungen und / oder Datenbankobjekte ändern.

Für einen Superserver auf Hosts mit wenig Speicher (bis zu 12-16 GB) sollten Sie nicht mehr als ein Drittel oder ein Viertel des gesamten Arbeitsspeichers für den Seitencache und den Sortierpuffer zuweisen.

Wenn die Anzahl der Datenbanken nicht festgelegt ist und sich ändern kann, sollte der Gesamtspeicher des Seitencaches durch die maximale Anzahl der Datenbanken geteilt werden, die sich auf dem Server befinden können. Die Größe des Seitencaches wird in Seiten festgelegt und muss separat in Bytes konvertiert werden.

Um auf die klassische Architektur zu wechseln, müssen Sie zumindest explizit angeben , ServerModein firebird.conf, reduzieren Sie die Seiten - Cache an der gleichen Stelle (nicht mehr als 2K), reduzieren Sie die Sortierpuffer (die zulässige Gesamtmenge aller Art , dividiert durch die maximale Anzahl der Verbindungen), deaktivieren und das Gerät stoppen firebird-superserver, aktivieren und ausführen Einheit firebird-classic.socket.

Die Verwendung der Superclassics-Architektur in Firebird 3.0 macht wenig Sinn: „Zuverlässigkeit“ hat - wie ein Superserver - denselben allgemeinen Sortierpuffer. Es gibt keinen allgemeinen Seiten-Cache und der „Verlust“ beim Synchronisieren verschiedener Verbindungen untereinander ist der gleiche wie bei einem Klassiker.

Es ist zu beachten, dass in Firebird 3.0 einige der Parameter (Seitencache, Sperrdateigrößen, Hash-Tabellen und einige andere) databases.conffür jede Datenbank einzeln festgelegt werden können. Für einen Superserver ist es beispielsweise nützlich, einen kleinen Wert DefaultDbCachePagesin firebird.conffestzulegen und einzelne Seitencaches auf die erforderlichen Datenbanken in festzulegen databases.conf. Stellen

Sie Fragen zu dem Artikel in den Kommentaren oder schreiben Sie Briefe an unsere Support-Adresse support@ibase.ru.

All Articles