Installation de Firebird 3 sur les versions Linux modernes: CentOS8 et Ubuntu 19

Dans cet article, nous décrivons l'ensemble minimal d'étapes requises pour installer de manière optimale Firebird version 3.0 sur les nouvelles distributions Linux. Par exemple, CentOS 8 et Ubuntu 19 ont été sélectionnés.

Pour la "livraison" de la distribution Firebird au système cible, dans ce guide, l'option de télécharger l'archive tar.gz à partir du lien du site Web officiel du projet ( firebirdsql.org ) a été sélectionnée .

Pour les plus impatients - immédiatement au combat:

Installation rapide


Modifiez le fichier /etc/sysctl.confen ajoutant la ligne:

vm.max_map_count = 256000

Enregistrez le fichier et appliquez le paramètre:

sudo sysctl -p /etc/sysctl.conf

D'autres instructions diffèrent pour CentOS 8 et Ubuntu 19, mais elles indiquent également le lien du site Web officiel du projet Firebird pour télécharger le package de distribution et le répertoire dans lequel le package de distribution sera décompressé pendant le processus de démarrage.
Actuellement (mars 2020), la version Firebird 3.0.5 est pertinente ( voici un lien vers la version 64 bits).

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

Installation actuelle du SGBD Firebird:

cd /tmp/
sudo ./install.sh

Si vous voulez mieux comprendre Ă  quoi servent ces actions, lisez la suite.

Partie principale

Petit préambule

On suppose que le système d'exploitation est déjà installé dans la version minimale et l'accès aux référentiels publics ou à leurs copies locales est configuré.

Il est supposé que le lecteur possède une connaissance de base de Linux et du SGBD Firebird.

Planification Il est

recommandé d'allouer des sections distinctes pour les fichiers temporaires ( /tmp), les fichiers de base de données et les sauvegardes locales sur le serveur SGBD .

Les fichiers temporaires incluent les fichiers de verrouillage, les fichiers de tri, les fichiers de «matérialisation» des tables temporaires globales (GTT) et les tables de surveillance. Les fichiers de tri et les tables temporaires globales se trouvent dans /tmp, les fichiers de table mon $ et les fichiers de verrouillage se trouvent dans /tmp/firebird.

Les fichiers de tri sont «supprimés» ( unlink) immédiatement après leur création, ils ne peuvent donc pas être «vus» dans la liste des répertoires - uniquement dans la liste des descripteurs de processus (marqués comme deleted):

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

Dans la /proc/…/fd/liste des pseudo- répertoires, des liens symboliques sont affichés et les informations réelles sur le fichier donnent:

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

où est le descripteur (descripteur) du fichier d'intérêt.

Au lieu d'appeler " pgrep -", vous pouvez immédiatement remplacer l'identifiant du processus qui vous intéresse.

Les fichiers temporaires peuvent être très volumineux, il est donc /tmprecommandé d'allouer au moins 20 à 30 Go pour. Gardez à l'esprit que la taille des fichiers de tri ne dépend que de la quantité de données triées explicitement ou implicitement dans la demande et qu'un seul utilisateur peut «créer» des gigaoctets de fichiers temporaires.

La section des fichiers de base de données doit contenir tous les fichiers de base de données. plus au moins une copie du plus grand fichier de base de données. Il devrait tenir compte de la croissance des fichiers de bases de données à l'avenir pendant plusieurs années à l'avance.

La section des sauvegardes locales doit contenir au moins une archive de sauvegarde de toutes les bases plus la sauvegarde de la plus grande base. Il est conseillé que cette section dispose également d'un emplacement pour restaurer la plus grande base. Il devrait prendre en compte la croissance des sauvegardes et des archives de sauvegarde à l'avenir pour plusieurs années à venir.

Préparation préliminaire

Le serveur SGBD Firebird 3.0 alloue et libère dynamiquement la mémoire système, ce qui peut entraîner une fragmentation. Par exemple, après qu'un grand nombre d'utilisateurs se sont déconnectés du super serveur en même temps, des erreurs peuvent se produire avec de nouvelles connexions.

La fragmentation de la mémoire est contrôlée par le paramètre système vm.max_map_count, par défaut - 64 Ko. Il est recommandé d'augmenter sa valeur quatre fois:

sudo sysctl vm.max_map_count=256000

Pour définir la nouvelle valeur au redémarrage du système, ajoutez la /etc/sysctl.confligne au fichier :

vm.max_map_count = 256000

Il est conseillé de faire un commentaire afin de comprendre la raison de la modification de ce paramètre. Vous pouvez d'abord modifier le fichier, puis appliquer les paramètres qui y sont enregistrés:

sudo sysctl -p /etc/sysctl.conf

Installation des packages requis

Les exécutables du SGBD Firebird 3.0 Linux dépendent des bibliothèques ncurses ( libncurses.so.5), ICU (sans lddliaison de version et sans sortie ) et tommath ( libtommath.so.0). Pour télécharger et décompresser l'archive d'assemblage, des utilitaires sont requis gzip, taret curlou wget. Version de l'unité de soins intensifs, gzip, taret curl/ wget- sont insignifiants.

Le travail avec les packages dépend du système et du gestionnaire de packages utilisé dans le système, nous les considérerons donc un par un.

CentOS 8

CentOS 8 utilise le nouveau gestionnaire de paquets - dnfet il est appelé de manière "transparente" sur commande yum. Puisqu'il n'y a aucune différence entre eux à nos fins, il y aura des exemples yum.

Mise à jour du cache de métadonnées:sudo yum makecache

Le paquet libtomath est situé dans des référentiels E (xtra) P (ackages pour) E (nterprise) L (inux) distincts, nous vérifions donc qu'il est déjà connecté:

yum -C repolist

L'option "uniquement à partir du cache" ( -Cou --cache-only) est utilisée pour éliminer les vérifications et les téléchargements inutiles, accélérant ainsi le yum. S'il n'y a pas de référentiel epel dans la liste, installez-le et mettez à jour le cache de métadonnées:

sudo yum install epel-release &&
sudo yum makecache

Nous confirmons les demandes, si nécessaire, en vérifiant les valeurs des clés pgp avec celles déjà connues d'une source de confiance.

Si vous rencontrez des problèmes lors du téléchargement des méta-informations du référentiel à partir des ressources https, modifiez le fichier /etc/yum.repos.d/epel.repo, remplacez-le https://par http://et répétez la commande de mise à jour du cache.

Vérifiez l'état des packages nécessaires (la commande est repliée, dans l'exemple de sortie, le package 32 bits est filtré):

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

Nous voyons cela curl, gzipet ncursessont situés dans le pseudo-référentiel du programme d'installation ( anaconda), et tar- est exclu de l'installation minimale du système. Versions majeures libncurseset libtommathplus que nécessaire: 6 et 1 au lieu de 5 et 0, respectivement. Si le même package est installé et disponible, une mise à jour a été publiée pour lui. Installez les packages manquants:

sudo yum install \
libicu libtommath tar

Ubuntu 19

utilitaires sont conçus pour la gestion des paquets apt, apt‑getet apt‑cache. Le premier est conçu pour un travail interactif, et les deux derniers - pour une utilisation dans des scripts. Les noms des packages sont légèrement différents et incluent une version.

Nous vérifions l'état des packages nécessaires (la commande est complexe, l'exemple de sortie est réduit et les paquets 32 bits sont filtrés):

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]

Packages pour lesquels installed/ upgradable- sont installés entre crochets . Disponible, mais pas installé ncurses5, au lieu d'être curlinstallé wget. Installez les packages manquants:

sudo apt‑get install \
libncurses5 libtommath1

Création de liens symboliques

Puisqu'ils libtommath.so.1sont libncurses.so.6rétrocompatibles avec libtommath.so.0et libncurses.so.5, il suffit que Firebird crée des liens symboliques vers des versions existantes de bibliothèques.

On trouve libtommath.so.1( libncurses.so.?situé dans le même répertoire):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Créez des liens symboliques.

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

Vérifiez le résultat (la commande est repliée, les exemples de sortie sont raccourcis):

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

Téléchargement du kit de distribution du SGBD Firebird.

Le site officiel du projet Firebird (firebirdsql.org) publie des liens vers les distributions des versions «officielles» (versions) et des assemblages «quotidiens» (construction de clichés).

Les versions officielles de Linux sont disponibles sous forme d'archives (tar.gz) et de packages deb / rpm, et les versions sont disponibles uniquement sous forme d'archives. Nous allons voir le "programme d'installation générique" (programme d'installation générique de tar.gz).

L'archive d'assemblage doit être téléchargée et décompressée, mais nous combinerons ces deux processus. Le déballage se fait en /tmp, l'URL indique un lien vers l'archive téléchargeable.

boucle:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Par défaut, il curlenvoie les données chargées à la sortie standard, mais ne traite pas les redirections et nous ajoutons " ‑L", mais wget, au contraire: il traite les redirections, mais écrit les données dans un fichier et nous mettons " ‑O‑". Pour tarindiquer l'utilisation du gzipfiltre et du répertoire dans lequel le déballage sera effectué. À la fin du processus sera sorte de répertoire Firebird‑3.0.5.33220‑0.amd64avec trois fichiers: install.sh, buildroot.tar.gzet manifest.txt.

Installation de Firebird

Au cours de la préparation préliminaire, nous avons ajusté la valeur du paramètre système vm.max_map_count, vérifié la disponibilité et installé les bibliothèques ICU, ncurses et tommath. Nous nous sommes assurés que les versions de ncurses et tommath ( libncures.so.5et libtommath.so.0) étaient correctes et avons créé les liens symboliques nécessaires.

En fait, l'installation est très simple. Nous allons dans le répertoire où l'archive du kit de distribution Firebird a été décompressé, vérifions et, si nécessaire, définissons le drapeau «exécutable» pour le script install.sh:

chmod +x install.sh

exécutez le script d'installation:

sudo ./install.sh

en appuyant sur la touche Entrée, nous confirmons le début de l'installation, et à réception de la demande - entrez le mot de passe sysdba.

Le script d'installation lance automatiquement une systemdunité firebird-superserver(l'architecture Firebird 3.0 par défaut). Le service Firebird fonctionnera avec les paramètres par défaut pour un super serveur: un cache de pages de 2048 pages (par base), un tampon de tri de 64 Mo (partagé), et connectant uniquement les clients de la troisième version. Afficher les options firebird.conf:

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

Veuillez noter que les nouvelles valeurs de firebird.confne seront activées qu'après le redémarrage du service Firebird.

Lors de la sélection des valeurs des paramètres, il convient de tenir compte du fait qu'il existe trois «consommateurs» principaux: le cache de page (pour la base de données), le tampon de tri (partagé) et la mémoire allouée par le serveur pour les connexions client. Vous ne pouvez gérer que les deux premiers - la quantité de mémoire pour les connexions client dépend du nombre et du texte des demandes mises en cache, de leurs plans et des objets de base de données impliqués dans les demandes. L'évaluation de la mémoire des connexions client se fait uniquement de manière empirique et peut changer lorsque les applications client et / ou les objets de base de données changent.

Pour un super serveur sur des hôtes avec une petite quantité de mémoire (jusqu'à 12-16 Go), vous ne devez pas allouer plus d'un tiers ou un quart de la RAM totale pour le cache de page et le tampon de tri.

Si le nombre de bases de données n'est pas fixe et peut changer, la mémoire totale du cache de pages doit être divisée par le nombre maximal de bases de données pouvant se trouver sur le serveur. La taille du cache de pages est définie en pages et doit être convertie séparément en octets.

Pour basculer vers l'architecture classique, vous devez au moins explicitement spécifier ServerModedans firebird.conf, réduire le cache de page au même endroit (pas plus de 2 Ko), réduire le tampon de tri (la quantité totale autorisée de toutes sortes, divisée par le nombre maximal de connexions), désactiver et arrêter l'unité firebird-superserver, activer et exécuter unité firebird-classic.socket.

L'utilisation de l'architecture superclassique dans Firebird 3.0 n'a pas beaucoup de sens: la «fiabilité» - comme un super serveur, a le même tampon de tri général. Il n'y a pas de cache de page général et la «perte» de synchronisation des différentes connexions entre elles est la même que celle d'un classique.

Il ne faut pas oublier que dans Firebird 3.0, certains paramètres (cache de page, tailles de fichier de verrouillage, tables de hachage et autres) peuvent être définis databases.confindividuellement pour chaque base de données. Pour un superserveur, il est utile, par exemple, de définir une petite valeur DefaultDbCachePagesdans firebird.confet de définir des caches de page individuels pour les bases de données nécessaires dans databases.conf.

Posez des questions sur l'article dans les commentaires ou Ă©crivez des lettres Ă  notre adresse d'assistance support@ibase.ru.

All Articles