Questa pagina è stata tradotta automaticamente. Leggi l'originale in inglese. English

Libreria IBSurgeon

Come installare Firebird 3.0 e 4.0 su Linux

by Vasily Sidorov, 24 agosto 2022

In questo articolo descriviamo l’installazione di Firebird versioni 3 e 4 sulle versioni Linux più diffuse: CentOS 7, Oracle Linux 7/8, Debian 9/10, Ubuntu18/20 e OpenSUSE15.0.

Per ottenere la distribuzione di Firebird per Linux, utilizzare l’archivio tar dal sito web ufficiale di Firebird:

Supponiamo che l’installazione venga eseguita con root o con sudoer e che il computer Linux abbia accesso a Internet.

Si prega di notare che alcuni comandi richiedono input da parte dell’utente. Si prega di notare che le righe con punto e virgola (;) alla fine significano che il comando può essere eseguito come comando su una sola riga.

Inoltre, consigliamo di leggere le Release Notes per la versione di Firebird che si intende installare.

Prerequisiti

I requisiti delle librerie di sistema per 4.0.1 e 3.0 sono diventati gli stessi: collegamento statico per ncurses5 e tommath0 e dinamico per ICU.

A seconda della distribuzione, ncurses5 sarà una libreria di sistema (RH7/Debian) o disponibile come pacchetto per compatibilità all’indietro (RH8/Debian).

La libreria tommath sarà con versione 0 o versione 1 (sono binarie compatibili). Se non c’è tommath0, creeremo un symlink.

Altri strumenti di sistema necessari sono tar e curl.

Installiamo questi pacchetti esplicitamente così il gestore dei pacchetti li segnerà come controllati manualmente e non li disinstallerà automaticamente.

Installazione rapida

1. Specificare il numero massimo di mappe.

Questo passaggio è facoltativo, ma altamente raccomandato per i sistemi di produzione:

Aprire il file /etc/sysctl.conf e aggiungere la seguente riga:

Code
vm.max_map_count = 256000

quindi applicare

Code
sysctl -p /etc/sysctl.conf

2. Installare il repository necessario per libtommath

Per CentOS 7

Code
yum install epel-release;

Per CentOS 8

Code
dnf install epel-release;

Per Oracle Linux 7

Code
yum install oracle-epel-release-el7;

Per Oracle Linux 8

Code
dnf install oracle-epel-release-el8;

Per altre distribuzioni i pacchetti necessari dovrebbero essere disponibili nei repository principali.

3. Installare pacchetti e strumenti

CentOS 7 / Oracle Linux 7

Code
yum makecache;
yum install ncurses libicu libtommath;
yum install curl tar;

CentOS 8 / Oracle Linux 8

Code
dnf makecache;
dnf install ncurses-compat-libs libicu libtommath;
dnf install curl tar;

Debian 9/10, Ubuntu 18/20

Code
apt-get install libncurses5 libtommath1;
apt-get install curl tar;

Open SUSE 15

Code
zypper install libncurses5 libtommath1;
zypper install curl tar;

La versione di ICU può variare:

Debian 9

Code
apt-get install libicu57

Debian 10

Code
apt-get install libicu63

Ubuntu 18

Code
apt-get install libicu60

Ubuntu 20

Code
apt-get install libicu66

OpenSUSE 15.0

Code
zypper install libicu60_2

Nelle distribuzioni che hanno libtommath1 (tutte quelle sopra tranne CentOS7 e Oracle Linux 7) è necessario creare il symlink libtommath.so.0:

Code
TM=libtommath.so;
for LIB in `find /lib* /usr/lib* -name ${TM}.1`;
do ln -s ${TM}.1 `dirname ${LIB}`/${TM}.0;
done;
unset TM;

Lo script di installazione di Firebird 4.0.1 e successivi può creare il symlink automaticamente, ma per Firebird 3 deve essere creato manualmente.

4. Scaricare e installare Firebird

Dopo l’installazione degli strumenti e delle librerie necessarie possiamo procedere con il download, l’estrazione e l’esecuzione del pacchetto di installazione.

Supponiamo che DOWNLOADLINK sia un link da www.firebirdsql.org per scaricare il Firebird necessario.

Code
curl -L DOWNLOADLINK | tar -zxC /tmp
cd /tmp/FIREBIRD_folder
sudo ./install.sh

Qui DOWNLOADLINK - link al tar.gz, e FIREBIRD_folder - Firebird-version.build-0.architecture

dove la distribuzione verrà estratta dal comando tar -zxC /tmp

Questo è tutto ciò che serve per l’installazione rapida di Firebird 3 o 4 su Linux.

Facoltativamente, è possibile generare i file di configurazione ottimali (firebird.conf e databases.conf) con Firebird Configuration Calculator.

Maggiori dettagli sull’installazione di Firebird

Per coloro che desiderano configurare meglio l’installazione di Firebird forniamo una spiegazione dettagliata dei passaggi sopra indicati.

Configurazione di vm.max_map_count

Firebird dalla versione 3 utilizza efficacemente l’architettura SuperServer con allocazione dinamica intensiva della memoria. In caso di carico elevato e alta frequenza di connessioni e disconnessioni, il motore può raggiungere i limiti di frammentazione della memoria su Linux, che verrà mostrato come errore 11 (ENOMEM) o errore 12 (munmap) in firebird.log.

Il limite di frammentazione della memoria è controllato dal parametro vm.max_map_count, che per impostazione predefinita ha valore 65536.

Per mantenere questa impostazione dopo il riavvio del server, aggiungere la seguente riga a /etc/sysctl.conf

Code
vm.max_map_count = 256000

Per applicarla, riavviare il server o eseguire il comando:

Code
sudo sysctl -p /etc/sysctl.conf

Pianificazione dello spazio su disco

In generale, consigliamo di allocare 3 partizioni separate sul server con database Firebird: per i file temporanei, per i database e per i backup locali.

Partizione per i file temporanei

I principali file temporanei sono file di lock, file di ordinamento, file per tabelle temporanee globali e blob, file con dati di monitoraggio.

Per impostazione predefinita, su Linux i file di ordinamento e i file con dati per le tabelle temporanee globali si trovano in /tmp, i file per i dati mon$ e le tabelle di lock sono in /tmp/firebird.

Come determinare la dimensione appropriata per la partizione con i file temporanei?

Potenzialmente, i file di ordinamento e blob possono essere piuttosto grandi, quindi la raccomandazione pratica è avere una partizione per i file temporanei per il sistema di produzione con un numero decente di utenti intorno a 30-40Gb. Per determinare la dimensione appropriata in modo più preciso, consigliamo di monitorare le dimensioni effettive dei file temporanei.

Il piccolo problema per tale monitoraggio è che i file di ordinamento vengono scollegati immediatamente dopo la creazione, quindi non è possibile vederli con il solito comando “ls”. Per visualizzarli, dobbiamo controllare gli handle per il processo (e saranno marcati come eliminati) con il seguente comando:

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

Come risultato di questo comando, vedremo il contenuto della pseudo-cartella /proc/…/fd/

Per vedere le informazioni sul file specifico in questa cartella, è necessario usare il comando:

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

dove NNNNN è il descrittore del file.

È possibile utilizzare questo comando per le architetture SuperServer e SuperClassic, quando il motore viene eseguito come un singolo processo. Naturalmente, invece di pgrep firebird è possibile specificare il numero di handle del processo Firebird.

Partizione per i file dei database

La partizione per i file dei database dovrebbe essere sufficiente per memorizzare tutti i file dei database più spazio libero pari alla dimensione del database più grande, più una riserva per la crescita per i prossimi 2-3 anni.

Partizione per i backup locali

Come minimo, la partizione per il backup locale dovrebbe essere sufficiente per memorizzare tutti i backup locali più il backup del database più grande.

Inoltre, per eseguire i ripristini, sulla partizione con i backup consigliamo di avere spazio libero aggiuntivo, pari alla dimensione del database più grande.

Ulteriori letture sui backup

Creare l’utente firebird (facoltativo)

Lo script di installazione crea, se non esiste, utente e gruppo chiamati “firebird” per eseguire tutta l’attività di Firebird usando questo utente (questa è una buona pratica per i sistemi Linux).

Ciò significa anche che i file del database e le cartelle dove si trovano database e backup dovrebbero avere proprietà o permessi per questo utente.

A volte ha senso creare utente e gruppo “firebird” prima dell’installazione:

Code
groupadd firebird &&
useradd -M -b /opt -s /sbin/nologin \
 -g firebird -u UID firebird

Per l’utente firebird non creiamo la home folder (switch -M), specifichiamo solo la cartella base (-b).

La shell nologin con switch -s impedisce il login standard al server.

Installare i pacchetti necessari

Firebird 3.0 e 4.0 dipendono dalle librerie ncurses (libncurses.so.5), ICU (senza collegamento alla versione, e non sono mostrate nell’output di ldd) e tommath (libtommath.so.0).

A seconda della distribuzione Linux, dobbiamo usare nomi di librerie con o senza versioni. I comandi pratici copy-paste sono mostrati sopra, e di seguito li descriviamo.

CentOS e Oracle Linux

La versione 7 contiene i pacchetti necessari per impostazione predefinita, la versione 8 richiede l’installazione di ncurses-compat-libs e la creazione del symlink libtommath.so.0.

Debian, Ubuntu e OpenSUSE

Nelle versioni Debian 9 e 10, Ubuntu 18 e 20, OpenSUSE 15 dobbiamo installare libncurses5 e libtommath1, e per identificare la versione di ICU possiamo usare la ricerca per il nome incompleto:

in Ubuntu

Code
apt-cache search libicu5

in OpenSUSE 15

Code
zypper search libicu6

Dettagli sull’installazione di Firebird

Prima dell’installazione abbiamo aumentato il parametro di sistema vm.max_map_count, installato le librerie ICU, ncurses e tommath. Poi abbiamo verificato di avere le versioni corrette di ncurses e tommath (libncures.so.5 e libtommath.so.0) o creato i symlink necessari.

Facoltativamente, potremmo creare utente e gruppo firebird.

Dopo di che possiamo installare Firebird, per questo andiamo nella cartella dove è stato estratto il pacchetto di installazione e avviamo l’installazione:

Code
./install.sh

premere Invio per confermare l’installazione e, quando richiesto, specificare la password per SYSDBA.

Inizialmente Firebird verrà installato con il file di configurazione predefinito. La configurazione predefinita esegue l’architettura SuperServer con valori modesti: cache (DefaultDbCachePages, chiamata anche Page buffers) per database impostata a 2048, buffer per gli ordinamenti (TempCacheLimit) a 64M (per il server in v3 e per database in v4).

Per visualizzare i parametri non commentati di firebird.conf, è possibile utilizzare il seguente comando:

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

Se si genererà un file di configurazione ottimale con Firebird Configuration Calculator o si modificheranno manualmente i parametri, si prega di notare che le modifiche verranno applicate dopo il riavvio del servizio Firebird (nel caso di SuperServer e SuperClassic, nel caso di Classic è necessario il riavvio di tutti i processi Firebird).

Si prega di notare che dalla versione Firebird 3 ci sono unità systemd separate per SuperServer, SuperClassic e Classic.