In diesem Artikel beschreiben wir die minimalen Schritte, die für eine optimale Installation der DBMS Firebird Version 3.0 auf neuen Linux-Distributionen erforderlich sind. Als Beispiele wurden CentOS 8 und Ubuntu 19 ausgewählt.
Für die "Lieferung" des Firebird-Distributionspakets auf das Zielsystem wurde in dieser Anleitung die Option gewählt, ein tar.gz-Archiv von der offiziellen Projektseite herunterzuladen ().
Für die Ungeduldigen – gleich ins Geschehen:
Schnelle Installation
Bearbeiten Sie die Datei /etc/sysctl.conf, indem Sie die Zeile hinzufügen:
vm.max_map_count = 256000
Speichern Sie die Datei und wenden Sie die Einstellung an:
sudo sysctl -p /etc/sysctl.conf
Die weiteren Anweisungen unterscheiden sich zwischen CentOS 8 und Ubuntu 19, aber LINK und VERZEICHNIS bezeichnen den Link von der offiziellen Website des Firebird-Projekts zum Herunterladen des Distributionspakets und das Verzeichnis, in das das Distributionspaket während des Downloads entpackt wird.
Aktuell (März 2020) ist die Version Firebird 3.0.5 relevant ( 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
Tatsächlich die Installation der DBMS Firebird:
cd /tmp/VERZEICHNIS
sudo ./install.sh
Wenn Sie besser verstehen möchten, wofür diese Schritte dienen – lesen Sie weiter.
Hauptteil
Eine kleine Einführung
Es wird davon ausgegangen, dass das Betriebssystem bereits in minimaler Form installiert und der Zugang zu öffentlichen Repositories oder deren lokalen Kopien eingerichtet ist.
Es wird vorausgesetzt, dass der Leser Grundkenntnisse über Linux und DBMS Firebird hat.
Planung
Auf dem DBMS-Server 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 sowie die Dateien zur "Materialisierung" globaler temporärer Tabellen (GTT) und Überwachungstabellen. Die Sortierdateien und globalen temporären Tabellen befinden sich in /tmp, die mon$-Tabellen und Lock-Dateien – in /tmp/firebird.
Die Sortierdateien werden "löschen" (unlink) unmittelbar nach ihrer Erstellung, daher können sie im Verzeichnislisting nicht "gesehen" werden – nur in der Liste der Deskriptoren (handles) des Prozesses (gekennzeichnet als zu verwenden, in dem das Datum und die Uhrzeit der logischen Löschung des Eintrags gespeichert sind. Nach der logischen Löschung wird der markierte Eintrag von der Quelle in den Empfänger übertragen (entsprechend der oben beschriebenen Logik).):
sudo ls -lhF /proc/`pgrep firebird`/fd
Im Listing des Pseudoverzeichnisses /proc/…/fd/ werden Symlinks angezeigt, und die tatsächlichen Informationen über die Datei liefert:
sudo stat -L /proc/`pgrep firebird`/fd/NUMMER
wo NUMMER – der Deskriptor der interessierenden Datei.
Anstelle des Aufrufs "pgrep ausführbare-datei" kann direkt die ID des interessierenden Prozesses eingesetzt werden.
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 Datenvolumen abhängt, das in der Abfrage explizit oder implizit sortiert wird, und ein einzelner Benutzer kann Gigabyte an temporären Dateien "erzeugen". /tmp Der Abschnitt für Datenbankdateien sollte Dateien aller Datenbanken sowie mindestens eine Kopie der Datei der größten Datenbank enthalten. Es ist zu berücksichtigen, dass das Wachstum der Datenbankdateien in den nächsten Jahren vorhersehbar ist.
Der Abschnitt der lokalen Backups sollte mindestens ein Archiv der Backups aller Datenbanken sowie das Backup der größten Datenbank enthalten. Es wäre wünschenswert, dass in diesem Abschnitt auch Platz für die Wiederherstellung der größten Datenbank vorhanden ist. Es ist zu beachten, dass das Wachstum der Backups und Archivbackups in den nächsten Jahren berücksichtigt werden sollte.
Vorbereitende Maßnahmen
Der Firebird 3.0-SQL-Datenbankserver weist eine dynamische Zuweisung und Freigabe von Systemspeicher auf, was zu Fragmentierungen führen kann. Beispielsweise können nach der gleichzeitigen Trennung einer großen Anzahl von Benutzern vom Superserver Fehler bei neuen Verbindungen auftreten.
Die Fragmentierung des Speichers wird durch den Systemparameter
vm.max_map_count kontrolliert, der стандартmäßig 64K beträgt. Es wird empfohlen, seinen Wert zu vervierfachen:sudo sysctl vm.max_map_count=256000
Damit der neue Wert nach einem Neustart des Systems übernommen wird, fügen wir der Datei
die Zeile hinzu: /etc/sysctl.conf Es ist wünschenswert, einen Kommentar zu schreiben, um den Grund für die Änderung dieses Parameters zu dokumentieren. Man kann die Datei zuerst bearbeiten und die darin gespeicherten Einstellungen dann anwenden:
vm.max_map_count = 256000
Installation der notwendigen Pakete
sudo sysctl -p /etc/sysctl.conf
Die ausführbaren Dateien des Firebird 3.0 DB-Servers unter Linux sind von den ncurses-Bibliotheken (
libncurses.so.5), ICU (ohne Versionsbindung und ohne Ausgabe vonldd ) und tommath (libtommath.so.0). Zum Laden und Entpacken des Build-Archivs werden die folgenden Utilities benötigt.Die ICU-Versionen sind nicht wichtig. gzip, tar und curl oder wgetDie Arbeit mit Paketen hängt vom System und vom verwendeten Paketmanager ab, daher wollen wir diese nacheinander betrachten. gzip, tar und curl/wget CentOS 8 verwendet einen neuen Paketmanager –
dnf
CentOS 8
und dieser wird "transparent" mit dem Befehl yum . Da es für unsere Zwecke keinen Unterschied zwischen ihnen gibt, werden in den Beispielen Der Metadaten-Cache wird aktualisiert:sudo yum makecache Der Metadaten-Cache wird aktualisiert:.
Das Paket libtomath befindet sich in einem separaten E(xtra)P(ackages for)E(nterprise)L(inux)-Repository, also überprüfen wir, ob es bereits aktiviert ist: yum -C repolist
Die Option „nur aus dem Cache“ (
Option "nur aus Cache" (
Option 'nur aus Cache' (-C oder --cache-only) wird verwendet, um unnötige Überprüfungen und Downloads auszuschließen, wodurch die Arbeit von yum beschleunigt wird. Falls das epel-Repository nicht in der Liste enthalten ist – installieren wir es und aktualisieren den Metadaten-Cache:
sudo yum install epel-release &&
sudo yum makecache
Bestätigen Sie die Anfragen, indem Sie gegebenenfalls die Werte der PGP-Schlüssel mit den bereits bekannten aus einer vertrauenswürdigen Quelle abgleichen.
Sollten beim Laden der Metainformationen des Repositories von HTTPS-Ressourcen Probleme auftreten, bearbeiten wir die Datei /etc/yum.repos.d/epel.repo, ersetzen https:// auf http:// und wiederholen den Befehl zur Aktualisierung des Caches.
Überprüfen Sie den Status der benötigten Pakete (Befehl zusammengesetzt, im Beispiel 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 im Pseudorepository des Installationsprogramms (anaconda), und tar – von der minimalen Systeminstallation ausgeschlossen. Die Hauptversionen libncurses und libtommath sind höher, als benötigt: 6 und 1 statt 5 und 0, entsprechend. 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
Zum Verwalten von Paketen werden die Dienstprogramme apt, apt‑get und apt‑cache. Ersteres ist für die interaktive Arbeit ausgelegt, während die letzten beiden für die Verwendung in Skripten gedacht sind. Die Paketnamen sind etwas anders und beinhalten die Version.
Überprüfen Sie den Status der benötigten Pakete (Befehl zusammengesetzt, Beispielausgabe verkürzt und 32-Bit-Pakete herausgefiltert):
apt list libncurses? libicu?? libtommath?
gzip tar curl wget |
grep -v i386
curl 7.65.3-1
gzip 1.10-0 [upgradebar…]
libicu63 63.2-2 [installiert]
libncurses5 6.1
libncurses6 6.1 [installiert, automatisch]
libtommath1 1.1.0
tar 1.30 [installiert]
wget 1.20.3 [installiert]
Pakete, für die in eckigen Klammern angegeben ist installiert/upgradebar – sind installiert. Verfügbar, aber nicht installiert ncurses5, statt curl IBM 402 wget. Installieren Sie die fehlenden Pakete:
sudo apt‑get install
libncurses5 libtommath1
Erstellen von Symlinks
Da libtommath.so.1 und libncurses.so.6 abwärtskompatibel mit ). Zum Laden und Entpacken des Build-Archivs werden die folgenden Utilities benötigt. und ), ICU (ohne Versionsbindung und ohne Ausgabe von, reicht es für Firebird, Symlinks auf die vorhandenen Bibliotheksversionen zu erstellen.
Finden Sie libtommath.so.1 (libncurses.so.? sind in diesem Verzeichnis abgelegt):
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
Überprüfen Sie das Ergebnis (Befehl zusammengesetzt, Beispiele der Ausgabe 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
Download des Firebird-Datenbank-Distributionspakets.
Auf der offiziellen Website des Projekts Firebird (firebirdsql.org) werden Links zu den Distributionspaketen der "offiziellen" Versionen (releases) und der "täglich" erstellten Builds (snapshot build) veröffentlicht.
Offizielle Versionen für Linux sind als Archive (tar.gz) und Pakete deb/rpm verfügbar, während die Builds nur als Archive vorliegen. Wir werden den "Generischen Installer" (generic installer aus tar.gz) betrachten.
Das Archiv des Builds muss heruntergeladen und entpackt werden, wobei wir beide Prozesse kombinieren. Das Entpacken erfolgt in /tmp, URL bezeichnet den Link zum heruntergeladenen Archiv.
curl:
curl -L URL | tar -zxC /tmp
wget:
wget -O– URL | tar -zxC /tmp
Standardmäßig curl sendet die heruntergeladenen Daten an den Standardausgang, verarbeitet jedoch keine Weiterleitungen, daher fügen wir „-L“ hinzu, während wget, im Gegensatz dazu: verarbeitet Weiterleitungen, schreibt jedoch die Daten in eine Datei, dafür setzen wir „-O-“ ein. Für tar geben wir die Verwendung gzipdes Filters und das Verzeichnis an, in das entpackt wird. Nach Abschluss des Prozesses erscheint ein Verzeichnis mit dem Namen Firebird-3.0.5.33220-0.amd64 mit drei Dateien: install.sh, buildroot.tar.gz und manifest.txt.
Installation von Firebird
Im Zuge der Vorbereitungen haben wir den Wert des Systemparameters angepasst kontrolliert, der стандартmäßig 64K beträgt. Es wird empfohlen, seinen Wert zu vervierfachen:, die Verfügbarkeit der Bibliotheken ICU, ncurses und tommath überprüft und installiert. Wir haben die Versionen von ncurses und tommath (libncures.so.5 und ). Zum Laden und Entpacken des Build-Archivs werden die folgenden Utilities benötigt.) überprüft und die erforderlichen Symlinks erstellt.
Die eigentliche Installation ist sehr einfach. Wechseln Sie in das Verzeichnis, in das das Archiv des Firebird-Distributionspakets entpackt wurde, prüfen Sie und setzen Sie, falls erforderlich, das „ausführbare“ Flag für das Skript install.sh:
chmod +x install.sh
und starten Sie das Installationsskript:
sudo ./install.sh
Bestätigen Sie den Beginn der Installation mit der Eingabetaste und geben Sie anschließend das sysdba-Passwort ein, wenn Sie dazu aufgefordert werden.
Das Installationsskript startet automatisch den systemd-Dienst firebird-superserver (Standardarchitektur von Firebird 3.0). Der Firebird-Dienst arbeitet mit Standardparametern für den Superserver: ein Seiten-Cache von 2048 Seiten (für die Datenbank), ein Sortierpuffer von 64 MB (gesamt) und die Verbindung nur für Clients der dritten Version. Überprüfen Sie die Parameter von firebird.conf:
grep -v ^# firebird.conf | grep -v ^$
Zu beachten ist, dass die neuen Werte aus firebird.conf erst nach einem Neustart des Firebird-Dienstes aktiviert werden.
Bei der Auswahl der Parameterwerte ist zu beachten, dass es drei Hauptverbraucher gibt: den Seitencache (für die Datenbank), den Sortierpuffer (gemeinsam) und den vom Server für Clientverbindungen zugewiesenen Speicher. Nur die ersten beiden können verwaltet werden – das Volumen des Speichers für Clientverbindungen hängt von der Anzahl und dem Text der zwischengespeicherten Abfragen, deren Ausführungsplänen und den in den Abfragen verwendeten Datenbankobjekten ab. Die Schätzung des Speichers für Clientverbindungen erfolgt ausschließlich empirisch und kann sich ändern, wenn sich die Clientanwendungen und/oder Datenbankobjekte verä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 Seitencache und den Sortierpuffer zugewiesen werden.
Wenn die Anzahl der Datenbanken nicht festgelegt ist und sich ändern kann, sollte das Gesamtvolumen des Seitencaches durch die maximale Anzahl an Datenbanken geteilt werden, die auf dem Server vorhanden sein können. Die Größe des Seitencaches wird in Seiten angegeben und muss separat in Byte umgerechnet werden.
Um zu einer klassischen Architektur zu wechseln, muss mindestens Folgendes angegeben werden: ServerMode in firebird.conf, verringern Sie dort den Seitencache (nicht mehr als 2K), verringern Sie den Sortierpuffer (das zulässige Gesamtvolumen aller Sortierungen, geteilt durch die maximale Anzahl an Verbindungen), verbieten und stoppen Sie die Einheit firebird-superserver, erlauben und starten Sie die Einheit firebird-classic.socket.
Die Verwendung der Superclassic-Architektur in Firebird 3.0 macht wenig Sinn: die "Zuverlässigkeit" ist die gleiche wie beim Superserver und der Sortierpuffer ist ebenfalls gemeinsam. Es gibt keinen gemeinsamen Seitencache und die "Verluste" durch die Synchronisierung verschiedener Verbindungen sind die gleichen wie beim klassischen Modell.
Es ist zu beachten, dass in Firebird 3.0 einige Parameter (Seitencache, 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 sinnvoll, einen kleinen Wert für DefaultDbCachePages in firebird.conf festzulegen und individuelle Seitencaches für die benötigten Datenbanken einzurichten. 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
