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

Dans cet article, nous décrirons l'ensemble minimum d'actions requises pour une installation optimale du SGBD Firebird version 3.0 sur les nouvelles distributions Linux. CentOS 8 et Ubuntu 19 sont sélectionnés à titre d'exemples.

Pour « livrer » la distribution Firebird au système cible, dans ce guide, l'option de téléchargement de l'archive tar.gz est sélectionnée à l'aide d'un lien depuis le site officiel du projet (firebirdsql.org).

Pour les plus impatients, partez directement au combat :

Installation rapide

Modification du 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

Les instructions supplémentaires diffèrent pour CentOS 8 et Ubuntu 19, mais ССЫЛКА и КАТАЛОГ indiquez un lien depuis le site officiel du projet Firebird pour télécharger la distribution et le répertoire dans lequel la distribution sera décompressée pendant le processus de téléchargement.
Actuellement (mars 2020), la version actuelle est Firebird 3.0.5 (Voici le lien à la version 64 bits).

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

L'installation proprement dite du SGBD Firebird :

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

Si vous souhaitez mieux comprendre l’effet de ces actions, poursuivez votre lecture.

Principal

Petit préambule

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

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

planification

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

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, fichiers mon$-table et fichiers de verrouillage – 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 liste du pseudo répertoire /proc/…/fd/ des liens symboliques sont affichés et les informations réelles sur le fichier sont fournies par :

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

НОМЕР – 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, donc /tmp Il est recommandé d'allouer au moins 20 à 30 Go. Il convient de garder à l'esprit que la taille des fichiers de tri dépend uniquement de la quantité de données explicitement ou implicitement triées dans la requête, et qu'un seul utilisateur peut « créer » des gigaoctets de fichiers temporaires.

La section réservée aux fichiers de base de données doit contenir tous les fichiers de base de données. plus, au minimum, une copie du plus gros fichier de base de données. Il est nécessaire de prendre en compte la croissance des fichiers de bases de données dans le futur pour plusieurs années à venir.

La section des sauvegardes locales doit contenir au moins une archive de sauvegarde de toutes les bases de données ainsi qu'une sauvegarde de la plus grande base de données. Il est souhaitable que cette section contienne également de l'espace pour restaurer la plus grande base de données. Il convient de prendre en compte la croissance des sauvegardes et des archives de sauvegarde dans le futur pendant plusieurs années.

Préparation préliminaire

Le serveur SGBD Firebird 3.0 alloue et libère dynamiquement la mémoire système, ce qui peut conduire à sa fragmentation. Par exemple, après qu'un grand nombre d'utilisateurs soient déconnectés simultanément du superserveur, des erreurs peuvent survenir lors de l'établissement de nouvelles connexions.

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

sudo sysctl vm.max_map_count=256000

Pour que la nouvelle valeur soit définie au redémarrage du système, ajoutez au fichier /etc/sysctl.conf ligne:

vm.max_map_count = 256000

Il est conseillé de faire un commentaire afin que la raison de la modification de ce paramètre soit claire. 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 fichiers exécutables du SGBD Linux Firebird 3.0 dépendent des bibliothèques ncurses (libncurses.so.5), ICU (non lié à la version et non affiché dans la sortie ldd) et tommath (libtommath.so.0). Pour télécharger et décompresser l'archive d'assemblage, vous aurez besoin d'utilitaires gzip, tar и curl ou wget. Versions USI, gzip, tar и curl/wget – sont insignifiants.

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

8 CentOS

CentOS 8 utilise un nouveau gestionnaire de packages – dnf et on l'appelle « transparentement » par commande yum. Puisque pour nos besoins, il n'y a aucune différence entre eux - dans les exemples, il y aura yum.

Mettez à jour le cache de métadonnées : sudo yum makecache

Le package libtomath se trouve dans un référentiel E(xtra)P(ackages for)E(nterprise)L(inux) distinct, nous vérifions donc qu'il est déjà inclus :

yum -C repolist

Option "uniquement depuis le cache" (-C ou --cache-only) est utilisé pour éliminer les vérifications et les téléchargements inutiles, ce qui rend yum plus rapide. S'il n'y a pas de dépôt 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 fiable.

Si vous rencontrez des problèmes lors du chargement des métainformations du référentiel à partir des ressources https, modifiez le fichier. /etc/yum.repos.d/epel.repo, remplaçant https:// sur http:// et répétez la commande de mise à jour du cache.

Nous vérifions l'état des packages requis (la commande est compliqué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

On voit ça curl, gzip и ncurses hébergé dans le pseudo-référentiel de l'installateur (anaconda), et tar – exclus de l’installation minimale du système. Versions majeures libncurses и libtommath plus que nécessaire : 6 et 1 au lieu de 5 et 0, respectivement. Si le même package est à la fois installé et disponible, une mise à jour a été publiée pour celui-ci. Installez les packages manquants :

sudo yum install 
libicu libtommath tar

Ubuntu 19

Les utilitaires sont conçus pour gérer les packages apt, apt‑get и apt‑cache. Le premier est conçu pour le travail interactif et les deux derniers sont conçus pour être utilisés dans des scripts. Les noms des packages sont légèrement différents et incluent la version.

Nous vérifions l'état des packages requis (la commande est combinée, l'exemple de sortie est raccourci et les packages 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]

Colis pour lesquels les crochets indiquent installed/upgradable - installée. Disponible mais pas installé ncurses5, au lieu de curl fixer wget. Installez les packages manquants :

sudo apt‑get install 
libncurses5 libtommath1

Création de liens symboliques

Depuis libtommath.so.1 и libncurses.so.6 rétrocompatible avec libtommath.so.0 и libncurses.so.5, alors pour Firebird il suffit de créer des liens symboliques vers les versions existantes des bibliothèques.

Nous trouvons 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

Nous créons 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érifions le résultat (la commande est compliqué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 de versions « officielles » et de builds « quotidiennes » (snapshot builds).

Les versions officielles de Linux sont disponibles sous forme d'archives (tar.gz) et de packages deb/rpm, mais les versions ne sont disponibles que sous forme d'archives. Nous considérerons le "installateur générique" (installateur générique de tar.gz).

L'archive de build doit être téléchargée et décompressée, mais nous combinerons les deux processus. Le déballage s'effectue dans /tmp,URL désigne le lien vers l'archive téléchargeable.

boucle:

curl -L URL | tar -zxC /tmp

wget :

wget -O– URL | tar -zxC /tmp

Par défaut curl envoie les données téléchargées vers la sortie standard mais ne gère pas les redirections et on ajoute "‑L« Et wget, au contraire : gère les redirections, mais écrit les données dans un fichier et on met "‑O‑" Pour tar indiquer l'utilisation gzip-filter et le répertoire dans lequel le déballage sera effectué. Une fois le processus terminé, un répertoire comme celui-ci apparaîtra Firebird‑3.0.5.33220‑0.amd64 avec trois fichiers : install.sh, buildroot.tar.gz и manifest.txt.

Installation de Firebird

Lors 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. Assurez-vous que les versions de ncurses et tommath sont correctes (libncures.so.5 и libtommath.so.0) et créé les liens symboliques nécessaires.

L'installation proprement dite est très simple. Allez dans le répertoire où l'archive de la distribution Firebird a été décompressée, vérifiez et, si nécessaire, définissez l'indicateur « 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émarrage de l'installation, et dès réception de la demande, saisissons le mot de passe sysdba.

Le script d'installation démarre automatiquement systemd-unité firebird-superserver (architecture Firebird 3.0 silencieuse). Le service Firebird fonctionnera avec les paramètres par défaut du superserveur : un cache de pages de 2048 pages (par base de données), un tampon de tri de 64 Mo (partagé) et une connexion uniquement aux clients version XNUMX. Afficher les options firebird.conf:

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

Veuillez noter que les nouvelles valeurs de firebird.conf ne sera activé qu'après le redémarrage du service Firebird.

Lors de la sélection des valeurs des paramètres, il convient de prendre en compte qu'il existe trois « consommateurs » principaux : le cache des pages (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 requêtes mises en cache, de leurs plans et des objets de base de données impliqués dans les requêtes. Les estimations de mémoire de connexion client sont effectuées uniquement de manière empirique et peuvent changer à mesure que les applications client et/ou les objets de base de données changent.

Pour un superserveur 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 d'un quart de la quantité totale de RAM pour le cache de pages et le tampon de tri.

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

Pour passer à l'architecture classique, vous devez au minimum spécifier explicitement ServerMode в firebird.conf, réduisez-y le cache des pages (pas plus de 2 Ko), réduisez le tampon de tri (le volume total autorisé de toutes sortes divisé par le nombre maximum de connexions), désactivez et arrêtez l'unité firebird-superserver, activer et démarrer l'unité firebird-classic.socket.

Utiliser l'architecture superclassique dans Firebird 3.0 n'a pas beaucoup de sens : la « fiabilité » est comme un superserveur et le même tampon de tri général. Il n'y a pas de cache de pages commun et les « pertes » pour synchroniser les différentes connexions entre elles sont les mêmes que dans le cache classique.

Il ne faut pas oublier que dans Firebird 3.0 certains paramètres (cache des pages, tailles des fichiers de verrouillage, tables de hachage et quelques autres) peuvent être définis dans databases.conf individuellement pour chaque base de données. Pour un superserveur il est utile, par exemple, de fixer une petite valeur DefaultDbCachePages в firebird.conf et installez des caches de pages individuelles pour les bases de données requises dans databases.conf.

Posez des questions sur l'article dans les commentaires ou écrivez des lettres à notre adresse d'assistance [email protected].

Source: habr.com

Ajouter un commentaire