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

Libreria IBSurgeon

Installazione di Firebird 3 sulle versioni moderne di Linux: CentOS 8 e Ubuntu 19

(C) Basil Sidorov, IBSurgeon, 22-Maggio-2020

Questo articolo è dedicato alla rapida installazione di Firebird 3.0 sulle nuove distribuzioni Linux: CentOS 8 e Ubuntu 19 (funziona anche per la 18).

La prima sezione è una guida rapida all’installazione per installare Firebird 3.0 il più velocemente possibile, senza dettagli. La seconda parte descrive i dettagli.

Installazione rapida di Firebird 3 su CentOS 8 e Ubuntu 19

  1. Aggiungere al file /etc/sysctl.conf la seguente riga:

vm.max_map_count = 256000

  1. Salvare sysctl.conf e applicare le nuove impostazioni:

sudo sysctl -p /etc/sysctl.conf

Le istruzioni successive sono leggermente diverse per CentOS 8 e Ubuntu 19.

Si prega di notare che abbiamo utilizzato il collegamento esplicito alla distribuzione dell’ultima versione di Firebird 3.0 da FirebirdSQL.org, attualmente (Maggio 2020), è la 3.0.5, ed ecco il collegamento per la versione a 64 bit:

https://github.com/FirebirdSQL/firebird/releases/download/R3.0.5/Firebird-3.0.5.33220-0.amd64.tar.gz

In futuro, quando appariranno la 3.0.6, ecc., sarà necessario utilizzare il collegamento corretto per la nuova versione - sarà pubblicato su www.firebirdsql.org.

  1. Installare i pacchetti

CentOS8

sudo yum -y install epel-release sudo yum -y makecache sudo yum -y install libicu libtommath tar sudo ln -s libncurses.so.6 /usr/lib64/libncurses.so.5 sudo ln -s libtommath.so.1 /usr/lib64/libtommath.so.0

sudo ln -s ln -s libncurses.so.5 /usr/lib64/libncurses.so.5

curl -L https://github.com/FirebirdSQL/firebird/releases/download/R3_0_5/Firebird-3.0.5.33220-0.amd64.tar.gz|tar -zxC /tmp

Ubuntu 19

sudo apt-get -y install libncurses5 libtommath1 sudo ln -s libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0 wget -O- https://github.com/FirebirdSQL/firebird/releases/download/R3_0_5/Firebird-3.0.5.33220-0.amd64.tar.gz|tar -zxC /tmp

Come risultato, avrete tutti i file di installazione di Firebird pronti in /tmp/firebird:

Code
/tmp/Firebird-3.0.5.33220-0.amd64# ll
totale 8484
drwxr-xr-x  2 root root    4096 Gen  9 13:13 ./
drwxrwxrwt 28 root root    4096 Mag 22 17:20 ../
-rw-r--r--  1 root root 8615663 Gen  9 13:13 buildroot.tar.gz
-rwxr-xr-x  1 root root   44096 Gen  9 13:13 install.sh*
-rw-r--r--  1 root root   14967 Gen  9 13:13 manifest.txt
  1. E poi, installare Firebird:

cd /tmp/Firebird-3.0.5.33220-0.amd64 sudo ./install.sh

quindi, verificare che Firebird sia in esecuzione - il comando seguente mostrerà tutti i processi correlati a Firebird o in esecuzione sotto l’utente firebird:

ps aux | grep firebird

Questo è tutto se avete solo bisogno di installare Firebird 3.0.

Se desiderate sapere cosa significano i comandi precedenti, continuate a leggere!

Parte principale: dettagli dell’installazione di Firebird 3 su Linux

In questo articolo, assumiamo che il sistema operativo sia stato installato nella versione minima e che abbiate già accesso ai repository pubblici o alle loro copie locali.

Pianificazione dell’allocazione dello spazio

Sul server destinato a servire i database Firebird, raccomandiamo di allocare volumi separati per i file temporanei (/tmp), i file del database e i backup locali.

Volume per i file temporanei

I file temporanei di Firebird includono file di lock, file di ordinamento, file per “materializzare” le tabelle temporanee globali (GTT) e le tabelle di monitoraggio. I file di ordinamento e i file GTT si trovano in /tmp, i file mon$- e di lock si trovano in /tmp/firebird.

I file di ordinamento vengono scollegati immediatamente dopo la creazione, ecco perché non potete vederli nella cartella (a differenza di Windows) con il comando ls.

Per vedere questi file, dovete richiedere gli handle dei file del processo Firebird (e sono marcati come eliminati):

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

Per ottenere dettagli su un file di ordinamento specifico, eseguite il comando

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

dove NUMERO è il descrittore del file.

I file temporanei possono essere grandi, quindi si raccomanda di allocare 20-30Gb per /tmp.

Si prega di notare che la dimensione dell’ordinamento non dipende dalla dimensione del database: alcune query errate con il prodotto diretto possono facilmente produrre un file di ordinamento di 100Gb da un database di 3Mb.

Volume per i file del database

Il volume per i file del database dovrebbe essere abbastanza grande da contenere tutti i file del database più, come minimo, la dimensione del database più grande, per eventuali manipolazioni in loco.

Inoltre, ricordate che i database crescono nel tempo e riservate anche dello spazio libero per loro.

È altamente raccomandato posizionare il volume per i file del database sull’unità/SAN/hardware più veloce che avete, con le più alte capacità di I/O casuale.

Volume per i file di backup locale

Il volume per i file di backup locale dovrebbe essere abbastanza grande da contenere i backup di tutti i database più la dimensione per il file del database più grande (non il backup - è per un eventuale ripristino di prova). Naturalmente, ricordate la crescita dei backup dei database. Il volume per i file di backup locale può essere situato su unità relativamente lente. I file di backup di Firebird hanno una struttura lineare, quindi per un’unità di backup è sufficiente avere un’alta velocità sequenziale.

Preparazione

Il motore Firebird alloca e dealloca dinamicamente la memoria, questo può portare alla frammentazione della memoria.

Ad esempio, può accadere dopo la disconnessione di molti utenti da un’istanza Firebird SuperServer. La frammentazione della memoria è controllata dal parametro di sistema v m.max_map_count, che ha un valore predefinito di 65K. Si raccomanda di aumentarlo almeno 4 volte e rendere questa impostazione permanente.

Aggiungere la seguente riga a /etc/sysctl.conf:

vm.max_map_count = 256000

e applicarla

sudo sysctl -p /etc/sysctl.conf

Installazione dei pacchetti necessari

Firebird 3 dipende da diversi pacchetti Linux: ncurses, ICU, tommath. Inoltre, abbiamo bisogno delle utility gzip, tar e curl o wget.

CentOS 8

CentOS utilizza un nuovo gestore di pacchetti dnf, che viene invocato in modo trasparente da yum. A noi piace yum, quindi usiamo yum. Prima, rinnovate la cache dei metadati:

sudo yum makecache

Il pacchetto libtommath si trova nel repository separato EPEL (E(xtra)P(ackages for)E(nterprise)L(inux)), quindi dobbiamo verificare che sia abilitato:

yum -C repolist

L’opzione -C (–cache-only) fa sì che yum utilizzi solo la cache.

Se non vedete il repository epel nel risultato di yum -C repolist, installatelo:

sudo yum install epel-release && sudo yum makecache

In caso di problemi, modificate il file /etc/yum.repos.d/epel.repo e sostituite https:// con http://, e provate di nuovo yum makecache.

Poi, verifichiamo di avere tutti i pacchetti necessari (64-bit nell’esempio):

Code
yum -C list ncurses libicu libtommath gzip tar curl wget | grep -v i686
Pacchetti installati
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
Pacchetti disponibili
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

Installazione dei pacchetti mancanti su CentOS 8

sudo yum install libicu libtommath tar

Ubuntu 19

Code
apt list libncurses? libicu?? libtommath? gzip tar curl wget | grep -v i386
curl 7.65.3-1
gzip 1.10-0 [aggiornabile…]
libicu63 63.2-2 [installato]
libncurses5 6.1
libncurses6 6.1 [installato,automatico]
libtommath1 1.1.0
tar 1.30 [installato]
wget 1.20.3 [installato]

Installazione dei pacchetti mancanti su Ubuntu 19:

sudo apt‑get install libncurses5 libtommath1

Creazione dei collegamenti simbolici

Libtommath.so.1 e libncurses.so.6 sono compatibili con libtommath.so.0 e libncurses.so.5, sarà sufficiente per Firebird creare collegamenti simbolici alle versioni esistenti delle librerie.

Prima, troviamo libtommath.so.1 (libncurses.so.? è nella stessa cartella):

find /usr -name libtommath.so.1

Su CentOS8 si trova in:

Code
/usr/lib64/libtommath.so.1

Su Ubuntu 19:

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

Creiamo i collegamenti simbolici

CentOS8

sudo ln -s libtommath.so.1 /usr/lib64/libtommath.so.0 sudo ln -s libncurses.so.6 /usr/lib64/libncurses.so.5

Ubuntu 19

sudo ln -s libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0

per verificare i risultati:

ls -lhF $(dirname `find /usr -name libtommath.so.1`) | grep "lib\(ncurses\|tommath\)\.so\."

su CentOS8 restituisce:

Code
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*

Su Ubuntu restituisce:

Code
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

Ottenere la distribuzione della versione di Firebird 3.0

Le versioni Linux di Firebird sono disponibili su www.firebirdsql.org come archivi tar.gz. Supponiamo che URL sia il collegamento di download all’archivio tar.gz della versione di Firebird. Dobbiamo scaricare e decomprimere l’archivio, per questo possiamo usare curl o wget.

curl

curl -L URL | tar -zxC /tmp

wget

wget -O- URL | tar -zxC /tmp

Come risultato, verrà creata la cartella /tmp/Firebird‑3.0.5.33220‑0.amd64 con 3 file: install.sh, buildroot.tar.gz e manifest.txt.

Installazione di Firebird

Come prerequisiti, abbiamo impostato vm.max_map_count, verificato e installato ICU, ncurses e tommath, e creato i collegamenti simbolici.

Dopo di che, il passo finale è facile - eseguite

sudo ./install.sh

Questo script avvia l’unità di sistema firebird-superserver e Firebird è pronto per funzionare.

File di configurazione e sua ottimizzazione

Si prega di notare che il file di configurazione predefinito di Firebird firebird.conf è configurato in modo molto modesto. Potete controllare il contenuto di firebird.conf (righe non commentate) con il comando:

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

Per il firebird.conf predefinito, il comando precedente non restituirà nulla, significa che tutti i valori sono predefiniti.

Se state configurando un sistema di produzione, considerate l’uso di file di configurazione Firebird ottimizzati: /it/optimized-firebird-configuration/

Domanda frequente #1

La domanda frequente è “perché non usare semplicemente il repository e installare Firebird usando yum o apt?”. Naturalmente, è possibile, ma ci sono 2 grandi motivi:

  1. il repository può contenere la versione vecchia (cioè, la versione minore precedente),

  2. ci piace controllare l’ambiente per garantire che tutto sia installato e configurato correttamente.

Inoltre, preferiamo l’installazione in /opt, è più facile per script multipiattaforma e una buona pratica di amministrazione.

Contatti

Non esitate a inviare domande, suggerimenti ed eventuali errori a [email protected]