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:
- Firebird 4: https://firebirdsql.org/en/firebird-4-0/
- Firebird 3: https://firebirdsql.org/en/firebird-3-0/
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:
vm.max_map_count = 256000
quindi applicare
sysctl -p /etc/sysctl.conf
2. Installare il repository necessario per libtommath
Per CentOS 7
yum install epel-release;
Per CentOS 8
dnf install epel-release;
Per Oracle Linux 7
yum install oracle-epel-release-el7;
Per Oracle Linux 8
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
yum makecache;
yum install ncurses libicu libtommath;
yum install curl tar;
CentOS 8 / Oracle Linux 8
dnf makecache;
dnf install ncurses-compat-libs libicu libtommath;
dnf install curl tar;
Debian 9/10, Ubuntu 18/20
apt-get install libncurses5 libtommath1;
apt-get install curl tar;
Open SUSE 15
zypper install libncurses5 libtommath1;
zypper install curl tar;
La versione di ICU può variare:
Debian 9
apt-get install libicu57
Debian 10
apt-get install libicu63
Ubuntu 18
apt-get install libicu60
Ubuntu 20
apt-get install libicu66
OpenSUSE 15.0
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:
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.
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
vm.max_map_count = 256000
Per applicarla, riavviare il server o eseguire il comando:
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:
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:
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:
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
apt-cache search libicu5
in OpenSUSE 15
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:
./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:
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.