Installazione di Firebird 3 su versioni Linux moderne: CentOS8 e Ubuntu 19

In questo articolo descriveremo l'insieme minimo di azioni richieste per un'installazione ottimale del DBMS Firebird versione 3.0 sulle nuove distribuzioni Linux. CentOS 8 e Ubuntu 19 sono selezionati come esempi.

Per "consegnare" la distribuzione Firebird al sistema di destinazione, in questa guida, l'opzione di scaricare l'archivio tar.gz viene selezionata utilizzando un collegamento dal sito ufficiale del progetto (firebirdsql.org).

Per i più impazienti, vai direttamente in battaglia:

Installazione rapida

Modificare il file /etc/sysctl.confaggiungendo la riga:

vm.max_map_count = 256000

Salvare il file e applicare l'impostazione:

sudo sysctl -p /etc/sysctl.conf

Ulteriori istruzioni differiscono per CentOS 8 e Ubuntu 19, ma ССЫЛКА и КАТАЛОГ indicare un collegamento dal sito Web ufficiale del progetto Firebird per scaricare la distribuzione e la directory in cui verrà decompressa la distribuzione durante il processo di download.
Attualmente (marzo 2020) la versione attuale è Firebird 3.0.5 (Ecco il link alla versione a 64 bit).

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'effettiva installazione del DBMS Firebird:

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

Se vuoi capire meglio cosa fanno queste azioni, continua a leggere.

principale

Un breve preambolo

Si presuppone che il sistema operativo sia già installato in una versione minima e che sia configurato l'accesso ai repository pubblici o alle loro copie locali.

Si presuppone che il lettore abbia una conoscenza di base di Linux e del DBMS Firebird.

pianificazione

Sul server DBMS si consiglia di allocare sezioni separate per i file temporanei (/tmp), file di database e backup locali.

Quelli temporanei includono file di blocco, file di ordinamento, file di “materializzazione” di tabelle temporanee globali (GTT) e tabelle di monitoraggio. I file per l'ordinamento e le tabelle temporanee globali si trovano in /tmp, file mon$-table e file lock – in /tmp/firebird.

I file di ordinamento vengono “eliminati” (unlink) immediatamente dopo la creazione, quindi non possono essere "visti" nell'elenco delle directory - solo nell'elenco degli handle di processo (contrassegnati come deleted):

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

Nell'elenco delle pseudo directory /proc/…/fd/ vengono visualizzati i collegamenti simbolici e le informazioni effettive sul file sono fornite da:

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

dove НОМЕР – descrittore (descrittore) del file di interesse.

Invece di chiamare"pgrep исполняемый-файл"È possibile sostituire immediatamente l'identificativo del processo di interesse.

I file temporanei possono essere molto grandi, quindi /tmp Si consiglia di allocare almeno 20-30 GB. Va tenuto presente che la dimensione dell'ordinamento dei file dipende solo dalla quantità di dati ordinati esplicitamente o implicitamente nella richiesta e un singolo utente può "creare" gigabyte di file temporanei.

La sezione per i file di database deve contenere tutti i file di database. più, come minimo, una copia del file di database più grande. È necessario tenere conto della crescita futura dei file di database per diversi anni a venire.

La sezione dei backup locali deve contenere almeno un archivio di backup di tutti i database più un backup del database più grande. È auspicabile che questa sezione contenga spazio anche per il ripristino del database più grande. Dovrebbe essere presa in considerazione la crescita futura dei backup e degli archivi di backup per diversi anni.

Preparazione preliminare

Il server DBMS Firebird 3.0 alloca e libera dinamicamente la memoria di sistema, il che può portare alla sua frammentazione. Ad esempio, dopo che un gran numero di utenti vengono disconnessi contemporaneamente dal superserver, potrebbero verificarsi errori quando si effettuano nuove connessioni.

La frammentazione della memoria è controllata da un parametro di sistema vm.max_map_count, l'impostazione predefinita è 64K. Si consiglia di aumentare il suo valore di quattro volte:

sudo sysctl vm.max_map_count=256000

Affinché il nuovo valore venga impostato al riavvio del sistema, aggiungilo al file /etc/sysctl.conf linea:

vm.max_map_count = 256000

Si consiglia di fare un commento in modo che sia chiaro il motivo della modifica di questo parametro. Puoi prima modificare il file e poi applicare le impostazioni salvate in esso:

sudo sysctl -p /etc/sysctl.conf

Installazione dei pacchetti richiesti

I file eseguibili del DBMS Linux Firebird 3.0 dipendono dalle librerie ncurses (libncurses.so.5), ICU (non legato alla versione e non visualizzato nell'output ldd) e tommath (libtommath.so.0). Per scaricare e decomprimere l'archivio assembly, avrai bisogno di utilità gzip, tar и curl o wget. Versioni di terapia intensiva, gzip, tar и curl/wget – sono insignificanti.

Lavorare con i pacchetti dipende dal sistema e dal gestore pacchetti utilizzato nel sistema, quindi li considereremo uno per uno.

8 CentOS

CentOS 8 utilizza un nuovo gestore di pacchetti – dnf e si chiama “in modo trasparente” a comando yum. Poiché per i nostri scopi non c'è differenza tra loro, negli esempi ci sarà yum.

Aggiorna la cache dei metadati: sudo yum makecache

Il pacchetto libtomath si trova in un repository E(xtra)P(ackages for)E(nterprise)L(inux) separato, quindi controlliamo che sia già incluso:

yum -C repolist

Opzione "solo dalla cache" (-C o --cache-only) viene utilizzato per eliminare controlli e download non necessari, rendendo yum più veloce. Se nell'elenco non è presente alcun repository epel, installalo e aggiorna la cache dei metadati:

sudo yum install epel-release &&
sudo yum makecache

Confermiamo le richieste, se necessario, controllando i valori delle chiavi pgp con quelli già conosciuti da fonte attendibile.

Se si verificano problemi durante il caricamento delle metainformazioni del repository dalle risorse https, modificare il file /etc/yum.repos.d/epel.repo, sostituendo https:// su http:// e ripetere il comando di aggiornamento della cache.

Controlliamo lo stato dei pacchetti richiesti (il comando è complicato, nell'output di esempio il pacchetto a 32 bit è filtrato):

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

Lo vediamo curl, gzip и ncurses ospitato nello pseudo-repository del programma di installazione (anaconda), e tar – esclusi dall'installazione minima del sistema. Versioni principali libncurses и libtommath più del necessario: 6 e 1 invece di 5 e 0, rispettivamente. Se lo stesso pacchetto è installato ed è disponibile, è stato rilasciato un aggiornamento per esso. Installa i pacchetti mancanti:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Le utilità sono progettate per gestire i pacchetti apt, apt‑get и apt‑cache. Il primo è progettato per il lavoro interattivo e gli ultimi due sono progettati per l'uso negli script. I nomi dei pacchetti sono leggermente diversi e includono la versione.

Controlliamo lo stato dei pacchetti richiesti (il comando viene combinato, l'output di esempio viene abbreviato e i pacchetti a 32 bit vengono filtrati):

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]

Pacchetti per i quali indicano le parentesi quadre installed/upgradable – installato. Disponibile ma non installato ncurses5invece di curl set wget. Installa i pacchetti mancanti:

sudo apt‑get install 
libncurses5 libtommath1

Creazione di collegamenti simbolici

Da libtommath.so.1 и libncurses.so.6 retrocompatibile con libtommath.so.0 и libncurses.so.5, quindi per Firebird è sufficiente creare collegamenti simbolici alle versioni esistenti delle librerie.

Noi troviamo libtommath.so.1 (libncurses.so.? situato nella stessa directory):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Creiamo collegamenti simbolici.

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

Controlliamo il risultato (il comando è complicato, gli esempi di output sono abbreviati):

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

Download del kit di distribuzione DBMS di Firebird.

Il sito web ufficiale del progetto Firebird (firebirdsql.org) pubblica collegamenti a distribuzioni di versioni "ufficiali" e build "giornaliere" (build snapshot).

Le versioni ufficiali di Linux sono disponibili come archivi (tar.gz) e pacchetti deb/rpm, ma le build sono disponibili solo come archivi. Considereremo il "programma di installazione generico" (programma di installazione generico da tar.gz).

L'archivio di build deve essere scaricato e decompresso, ma combineremo entrambi i processi. Il disimballaggio è terminato /tmp,URL indica il collegamento all'archivio scaricabile.

arricciare:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Per impostazione predefinita curl invia i dati scaricati a stdout ma non gestisce i reindirizzamenti e aggiungiamo "‑L"E wget, al contrario: gestisce i reindirizzamenti, ma scrive i dati in un file e inseriamo "‑O‑" Per tar indicare l'uso gzip-filter e la directory in cui verrà eseguito lo spacchettamento. Una volta completato il processo, verrà visualizzata una directory come questa Firebird‑3.0.5.33220‑0.amd64 con tre file: install.sh, buildroot.tar.gz и manifest.txt.

Installazione di Firebird

Durante la preparazione preliminare, abbiamo regolato il valore del parametro di sistema vm.max_map_count, ho controllato la disponibilità e ho installato le librerie ICU, ncurses e tommath. Assicurati che le versioni di ncurses e tommath siano corrette (libncures.so.5 и libtommath.so.0) e creato i collegamenti simbolici necessari.

L'installazione vera e propria è molto semplice. Vai alla directory in cui è stato decompresso l'archivio della distribuzione Firebird, controlla e, se necessario, imposta il flag "eseguibile" per lo script install.sh:

chmod +x install.sh

esegui lo script di installazione:

sudo ./install.sh

Premendo il tasto Invio confermiamo l'avvio dell'installazione e, al ricevimento della richiesta, inseriamo la password sysdba.

Lo script di installazione si avvia automaticamente systemd-unità firebird-superserver (architettura silenziosa Firebird 3.0). Il servizio Firebird funzionerà con i parametri predefiniti per il superserver: una cache di pagine di 2048 pagine (per database), un buffer di ordinamento di 64 MB (condiviso) e connettendo solo client della versione XNUMX. Visualizza le opzioni firebird.conf:

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

Si prega di notare che i nuovi valori da firebird.conf verrà attivato solo dopo aver riavviato il servizio Firebird.

Quando si selezionano i valori dei parametri, è necessario tenere presente che esistono tre "consumatori" principali: la cache delle pagine (per il database), il buffer di ordinamento (condiviso) e la memoria allocata dal server per le connessioni client. Puoi gestire solo i primi due: la quantità di memoria per le connessioni client dipende dal numero e dal testo delle query memorizzate nella cache, dai loro piani e dagli oggetti del database coinvolti nelle query. Le stime della memoria di connessione client vengono effettuate solo empiricamente e possono cambiare in base alla modifica delle applicazioni client e/o degli oggetti del database.

Per un superserver su host con una piccola quantità di memoria (fino a 12-16 GB), non dovresti allocare più di un terzo o un quarto della quantità totale di RAM per la cache delle pagine e il buffer di ordinamento.

Se il numero di database non è fisso e può cambiare, la quantità totale di memoria cache della pagina deve essere divisa per il numero massimo di database che possono trovarsi sul server. La dimensione della cache delle pagine è specificata in pagine e deve essere convertita separatamente in byte.

Per passare all'architettura classica è necessario, come minimo, specificarlo esplicitamente ServerMode в firebird.conf, riduci la cache delle pagine lì (non più di 2K), riduci il buffer di ordinamento (il volume totale consentito di tutti gli ordinamenti diviso per il numero massimo di connessioni), disabilita e arresta l'unità firebird-superserver, abilitare e avviare l'unità firebird-classic.socket.

Usare l'architettura superclassica in Firebird 3.0 non ha molto senso: l'“affidabilità” è come un superserver e lo stesso buffer di ordinamento generale. Non esiste una cache di pagina comune e le “perdite” per la sincronizzazione di connessioni diverse tra loro sono le stesse di quella classica.

Va ricordato che in Firebird 3.0 alcuni parametri (cache delle pagine, dimensioni dei file di blocco, tabelle hash e alcuni altri) possono essere impostati in databases.conf individualmente per ciascun database. Per un superserver è utile, ad esempio, impostare un valore piccolo DefaultDbCachePages в firebird.conf e installare cache di singole pagine per i database richiesti in databases.conf.

Fai domande sull'articolo nei commenti o scrivi lettere al nostro indirizzo di supporto [email protected].

Fonte: habr.com

Aggiungi un commento