Dans cet article, nous décrirons le minimum d'actions nécessaires pour une installation optimale de la base de données Firebird version 3.0 sur les nouvelles distributions Linux. Pour les exemples, nous avons choisi CentOS 8 et Ubuntu 19.
Pour "livrer" le distributeur Firebird au systÚme cible, ce guide choisit l'option de téléchargement de l'archive tar.gz à partir du lien du site officiel du projet ().
Pour les plus impatients â au travail :
Installation rapide
Nous éditons le fichier /etc/sysctl.conf, en ajoutant la ligne :
vm.max_map_count = 256000
Nous enregistrons le fichier et appliquons la configuration :
sudo sysctl -p /etc/sysctl.conf
Les instructions suivantes varient pour CentOS 8 et Ubuntu 19, mais LIEN et CATALOGUE désignent le lien du site officiel du projet Firebird pour télécharger le distributeur et le répertoire dans lequel le distributeur sera décompressé lors du téléchargement.
Ă l'heure actuelle (mars 2020), la version actuelle est Firebird 3.0.5 ( pour 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 LIEN|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- LIEN|tar -zxC /tmp
L'installation de la base de donnĂ©es Firebird en elle-mĂȘme :
cd /tmp/CATALOGUE
sudo ./install.sh
Si vous souhaitez mieux comprendre Ă quoi servent ces actions â lisez la suite.
Partie principale
Petite préface
On suppose que le systÚme d'exploitation est déjà installé dans sa version minimale et que l'accÚs aux dépÎts publics ou à leurs copies locales est configuré.
Il est présumé que le lecteur a des connaissances de base sur Linux et sur la base de données Firebird.
Planification
Sur le serveur de la base de données, il est recommandé de prévoir des partitions distinctes pour les fichiers temporaires (/tmp), les fichiers de base de données et les sauvegardes locales.
Les fichiers temporaires comprennent des fichiers de verrouillage, des fichiers de tri, des fichiers de "matérialisation" des tables temporaires globales (GTT) et des tables de surveillance. Les fichiers de tri et les tables temporaires globales se trouvent dans /tmp, les fichiers de mon$-tables 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, donc ils ne peuvent pas ĂȘtre "vus" dans le listing du rĂ©pertoire â seulement dans la liste des descripteurs (handles) du processus (marquĂ©s comme supprimĂ©):
sudo ls -lhF /proc/`pgrep firebird`/fd
Dans le listing du pseudo-rĂ©pertoire /proc/âŠ/fd/ s'affichent des symlinks, et les informations rĂ©elles sur le fichier sont donnĂ©es par :
sudo stat -L /proc/`pgrep firebird`/fd/NOMBRE
oĂč NOMBRE â est le descripteur du fichier en question.
Au lieu d'appeler "pgrep fichier-exĂ©cutable", vous pouvez directement substituer l'identifiant du processus d'intĂ©rĂȘt.
Les fichiers temporaires peuvent ĂȘtre trĂšs volumineux, il est donc recommandĂ© de prĂ©voir au moins 20 Ă 30 Go. Il convient de noter que la taille des fichiers de tri dĂ©pend uniquement du volume des donnĂ©es, triĂ©es explicitement ou implicitement dans la requĂȘte, et qu'un seul utilisateur peut "crĂ©er" des gigaoctets de fichiers temporaires. /tmp Le rĂ©pertoire pour les fichiers de base de donnĂ©es doit contenir les fichiers de toutes les bases, plus, au minimum, une copie du fichier de la plus grande base. Il faut prendre en compte la croissance des fichiers de base sur plusieurs annĂ©es Ă venir.
Le répertoire des sauvegardes locales doit contenir, au minimum, une archive de sauvegarde de toutes les bases ainsi qu'une sauvegarde de la plus grande base. Idéalement, il devrait également y avoir de la place pour la restauration de la plus grande base. Il faut tenir compte de la croissance des sauvegardes et des archives de sauvegarde sur plusieurs années à venir.
Préparation préalable
Préparation préalable
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 la déconnexion simultanée d'un grand nombre d'utilisateurs du super serveur, des erreurs peuvent survenir lors 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 â 64K. Il est recommandĂ© d'augmenter sa valeur par quatre :
sudo sysctl vm.max_map_count=256000
Pour que cette nouvelle valeur soit appliquée au redémarrage du systÚme, il faut l'ajouter au fichier /etc/sysctl.conf en ajoutant la ligne :
vm.max_map_count = 256000
Il est conseillé d'ajouter un commentaire afin de clarifier la raison de ce changement de paramÚtre. On peut d'abord éditer le fichier, puis appliquer les paramÚtres enregistrés :
sudo sysctl -p /etc/sysctl.conf
Installation des paquets nécessaires
Les fichiers exĂ©cutables du SGBD Firebird 3.0 sur Linux dĂ©pendent des bibliothĂšques ncurses (libncurses.so.5), ICU (sans version liĂ©e et sans affichage dans la sortie ldd) et tommath (libtommath.so.0). Pour tĂ©lĂ©charger et dĂ©compresser l'archive de compilation, on aura besoin des utilitaires gzip, tar et curl ou wget. Les versions d'ICU gzip, tar et curl/wget â ne sont pas significatives.
Le travail avec les paquets dépend du systÚme et du gestionnaire de paquets utilisé dans le systÚme, nous allons donc les examiner un par un.
CentOS 8
CentOS 8 utilise un nouveau gestionnaire de paquets â dnf et il est Ă©galement "transparent" sous le commandement yum. Ătant donnĂ© qu'il n'y a pas de diffĂ©rence entre eux pour nos besoins â dans les exemples, ce sera yum.
Mise à jour du cache des métadonnées : sudo yum makecache
Le paquet libtomath se trouve dans un dépÎt E(xtra)P(ackages for)E(nterprise)L(inux) distinct, donc vérifions s'il est déjà connecté :
yum -C repolist
L'option «cache uniquement» (-C ou --cache-only) est utilisée pour exclure les vérifications et téléchargements inutiles, accélérant ainsi le fonctionnement de yum. Si le dépÎt epel n'est pas dans la liste, installons-le et mettons à jour le cache des métadonnées :
sudo yum install epel-release &&
sudo yum makecache
Confirmer les demandes, en vérifiant si nécessaire les valeurs des clés pgp avec celles déjà connues d'une source de confiance.
Si des problÚmes surviennent lors du téléchargement des métadonnées du dépÎt à partir de ressources https, modifions le fichier /etc/yum.repos.d/epel.repo, en remplaçant https:// sur http:// et répétant la commande de mise à jour du cache.
Vérifions l'état des paquets requis (la commande est concaténée, dans l'exemple la sortie filtre un paquet 32 bits) :
yum -C list
ncurses libicu libtommath
gzip tar curl wget |
grep -v i686
Paquets installés
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
Paquets disponibles
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 que curl, gzip et ncurses sont placĂ©s dans le dĂ©pĂŽts pseudo du programme d'installation (anaconda), tandis que tar est exclu de l'installation minimale du systĂšme. Les versions majeures libncurses et libtommath sont supĂ©rieures Ă celles requises : 6 et 1 au lieu de 5 et 0, respectivement. Si le mĂȘme paquet est Ă la fois installĂ© et disponible, une mise Ă jour a Ă©tĂ© publiĂ©e. Installons les paquets manquants :
sudo yum install
libicu libtommath tar
Ubuntu 19
Pour gĂ©rer les paquets, des utilitaires sont prĂ©vus apt, aptâget et aptâcache. Le premier est conçu pour une utilisation interactive, tandis que les deux derniers sont destinĂ©s Ă ĂȘtre utilisĂ©s dans des scripts. Les noms des paquets sont lĂ©gĂšrement diffĂ©rents et incluent la version.
Vérifions l'état des paquets requis (la commande est concaténée, l'exemple de sortie est raccourci 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 [installé]
libncurses5 6.1
libncurses6 6.1 [installé, automatique]
libtommath1 1.1.0
tar 1.30 [installé]
wget 1.20.3 [installé]
Les paquets pour lesquels il est indiqué entre crochets installé/upgradable sont installés. Disponible mais non installé ncurses5, à la place de curl est installé wget. Installons les paquets manquants :
sudo aptâget install
libncurses5 libtommath1
Création de liens symboliques
Puisque libtommath.so.1 et libncurses.so.6 sont rétrocompatibles avec libtommath.so.0 et libncurses.so.5, il suffit de créer des liens symboliques vers les versions existantes des bibliothÚques pour Firebird.
Trouvons libtommath.so.1 (libncurses.so.? situĂ©s dans ce 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é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 concaténé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 de la distribution de la base de données Firebird.
Sur le site officiel du projet Firebird (firebirdsql.org), vous trouverez des liens vers les distributions des versions "officielles" (releases) et des builds "quotidiens" (snapshot build).
Les versions officielles pour Linux sont disponibles sous forme d'archives (tar.gz) et de paquets deb/rpm, tandis que les builds ne sont disponibles que sous forme d'archives. Nous allons examiner le « programme d'installation générique » (generic installer de tar.gz).
L'archive de la build doit ĂȘtre tĂ©lĂ©chargĂ©e et dĂ©compressĂ©e, mais nous combinerons ces deux processus. La dĂ©compression se fait dans /tmp, l'URL dĂ©signe le lien vers l'archive tĂ©lĂ©chargĂ©e.
curl:
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 nous ajoutons «âL», tandis que wget, Ă l'inverse : gĂšre les redirections, mais enregistre les donnĂ©es dans un fichier, et nous mettons «âOâ». Pour tar nous spĂ©cifions l'utilisation gzip-filtre et le rĂ©pertoire dans lequel la dĂ©compression sera effectuĂ©e. Ă la fin du processus, un rĂ©pertoire apparaĂźtra de type Firebirdâ3.0.5.33220â0.amd64 avec trois fichiers : install.sh, buildroot.tar.gz et 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 présence et installé les bibliothÚques ICU, ncurses et tommath. Nous avons vérifié la validité des versions de ncurses et tommath (libncurses.so.5 et libtommath.so.0) et créé les liens symboliques nécessaires.
L'installation elle-mĂȘme est trĂšs simple. Nous allons dans le rĂ©pertoire oĂč l'archive de la distribution Firebird a Ă©tĂ© dĂ©compressĂ©e, nous vĂ©rifions et, si nĂ©cessaire, nous Ă©tablissons le drapeau « exĂ©cutable » pour le script install.sh:
chmod +x install.sh
nous exécutons le script d'installation :
sudo ./install.sh
en appuyant sur la touche Enter pour confirmer le début de l'installation, et en cas de demande, nous saisissons le mot de passe sysdba.
Le script d'installation lance automatiquement systemd-unité firebird-superserver (architecture par défaut de Firebird 3.0). Le service Firebird fonctionnera avec les paramÚtres par défaut du super serveur : cache de pages de 2048 pages (par base), tampon de tri de 64 Mo (global) et connexion uniquement pour les clients de la troisiÚme version. Consultez les paramÚtres firebird.conf:
grep -v ^# firebird.conf | grep -v ^$
Il convient de noter que les nouvelles valeurs de firebird.conf seront activés uniquement 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 principaux « consommateurs » : le cache de pages (pour la base), le tampon de tri (partagĂ©) et la mĂ©moire allouĂ©e par le serveur pour les connexions client. On ne peut gĂ©rer que les deux premiers â le volume de mĂ©moire des 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. L'Ă©valuation de la mĂ©moire des connexions client se fait uniquement empiriquement et peut varier en fonction des applications clientes et/ou des objets de base.
Pour un super serveur sur des hÎtes avec une petite quantité de mémoire (jusqu'à 12-16 Go), il ne faut pas allouer plus d'un tiers à trois quarts de la mémoire vive totale pour le cache de pages et le tampon de tri.
Si le nombre de bases n'est pas fixe et peut changer, le volume total de mĂ©moire du cache de pages doit ĂȘtre divisĂ© par le nombre maximum de bases pouvant ĂȘtre sur le serveur. La taille du cache de pages est dĂ©finie en pages et doit ĂȘtre convertie sĂ©parĂ©ment en octets.
Pour passer Ă l'architecture classique, il est nĂ©cessaire de spĂ©cifier explicitement au minimum ServerMode dans firebird.conf, de rĂ©duire Ă©galement le cache de pages (pas plus de 2K), de diminuer le tampon de tri (volume total autorisĂ© de tous les tris divisĂ© par le nombre maximum de connexions), d'interdire et d'arrĂȘter l'unitĂ© firebird-superserver, d'autoriser et de dĂ©marrer l'unitĂ© firebird-classic.socket.
L'utilisation de l'architecture superclassique dans Firebird 3.0 n'a pas beaucoup de sens : la « fiabilitĂ© » est celle du super serveur et le tampon de tri est le mĂȘme. Il n'y a pas de cache de pages commun et les « pertes » dues Ă la synchronisation des diffĂ©rentes connexions sont les mĂȘmes que pour le classique.
Il convient de se rappeler que dans Firebird 3.0, certains paramĂštres (cache de pages, tailles de fichier local, tables de hachage et quelques autres) peuvent ĂȘtre dĂ©finis dans databases.conf individuellement pour chaque base. Pour le super serveur, il est utile, par exemple, de dĂ©finir une petite valeur DefaultDbCachePages dans firebird.conf et de dĂ©finir des caches de pages individuels pour les bases nĂ©cessaires dans databases.conf.
Pour toute question sur l'article, n'hésitez pas à laisser des commentaires ou à écrire à notre adresse de support support@ibase.ru.
Source : habr.com
