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.conf
indem 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 8sudo 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 19sudo 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.HauptteilKleine PräambelEs 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 wirdempfohlen, 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 unlink
unmittelbar 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 /tmp
empfohlen, 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 DerFirebird 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_count
standardmäß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.conf
Zeile 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 Dieausfü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
, tar
und curl
oder wget
. Version der ICU gzip
, tar
und 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 8CentOS 8 verwendet den neuen Paketmanager - dnf
und 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" ( -C
oder --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
, gzip
und ncurses
sind in der pseudo-Repository des Installateurs (befinden anaconda
), und tar
- wird von der minimalen Installation des Systems ausgeschlossen. Hauptversionen libncurses
und libtommath
mehr 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 19Dienstprogramme sind für die Paketverwaltung konzipiert apt
, apt‑get
und 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 curl
installiert wget
. Installieren Sie die fehlenden Pakete:sudo apt‑get install \
libncurses5 libtommath1
Erstellen von SymlinksDa libtommath.so.1
diese libncurses.so.6
abwärtskompatibel mit libtommath.so.0
und 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 curl
sendet es die geladenen Daten an die Standardausgabe, verarbeitet jedoch keine Weiterleitungen und wir fügen " ‑L
" hinzu, aber wget
im Gegenteil: Es verarbeitet Weiterleitungen, schreibt jedoch Daten in eine Datei und wir setzen " ‑O‑
". Für tar
zeigen die Verwendung des gzip
Filters 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.amd64
mit drei Dateien: install.sh
, buildroot.tar.gz
und manifest.txt
.Installieren von FirebirdWä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.5
und 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 systemd
Einheit 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.conf
erst 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 , ServerMode
in 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.conf
für jede Datenbank einzeln festgelegt werden können. Für einen Superserver ist es beispielsweise nützlich, einen kleinen Wert DefaultDbCachePages
in firebird.conf
festzulegen und einzelne Seitencaches auf die erforderlichen Datenbanken in festzulegen databases.conf
. StellenSie Fragen zu dem Artikel in den Kommentaren oder schreiben Sie Briefe an unsere Support-Adresse support@ibase.ru.