Tato stránka byla strojově přeložena. Přečtěte si anglický originál. English

Knihovna IBSurgeon

Jak nainstalovat Firebird 3.0 a 4.0 na Linux

od Vasilije Sidorova, 24. srpna 2022

V tomto článku popisujeme instalaci verzí Firebird 3 a 4 na populárních verzích Linuxu: CentOS 7, Oracle Linux 7/8, Debian 9/10, Ubuntu 18/20 a OpenSUSE 15.0.

Pro získání distribuce Firebird pro Linux použijte prosím tar archiv z oficiálních webových stránek Firebird:

Předpokládáme, že instalace je provedena buď jako root nebo s právy sudoer, a že počítač s Linuxem má přístup k internetu.

Upozorňujeme, že některé příkazy vyžadují vstup od uživatele. Upozorňujeme, že řádky zakončené středníkem (;) na konci znamenají, že příkaz lze spustit jako jednořádkový příkaz.

Dále doporučujeme přečíst si Poznámky k vydání (Release Notes) pro verzi Firebird, kterou hodláte nainstalovat.

Předpoklady

Požadavky na systémové knihovny pro 4.0.1 a 3.0 se staly stejnými: statické propojení pro ncurses5 a tommath0 a dynamické pro ICU.

V závislosti na distribuci bude ncurses5 systémovou knihovnou (RH7/Debian) nebo dostupný jako balíček pro zpětnou kompatibilitu (RH8/Debian).

Knihovna tommath bude s verzí 0 nebo verzí 1 (jsou binárně kompatibilní). Pokud není k dispozici tommath0, vytvoříme symbolický odkaz.

Dalšími nezbytnými systémovými nástroji jsou tar a curl.

Tyto balíčky instalujeme explicitně, aby je správce balíčků označil jako ručně spravované a automaticky je neodinstaloval.

Rychlá instalace

1. Nastavte maximální počet mapování.

Tento krok je volitelný, ale vysoce doporučený pro produkční systémy:

Otevřete soubor /etc/sysctl.conf a přidejte následující řádek:

Code
vm.max_map_count = 256000

poté aplikujte

Code
sysctl -p /etc/sysctl.conf

2. Nainstalujte potřebný repozitář pro libtommath

Pro CentOS 7

Code
yum install epel-release;

Pro CentOS 8

Code
dnf install epel-release;

Pro Oracle Linux 7

Code
yum install oracle-epel-release-el7;

Pro Oracle Linux 8

Code
dnf install oracle-epel-release-el8;

Pro ostatní distribuce by měly být potřebné balíčky dostupné v hlavních repozitářích.

3. Instalace balíčků a nástrojů

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;

Verze ICU se může lišit:

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

V distribucích, které mají libtommath1 (všechny výše uvedené kromě CentOS 7 a Oracle Linux 7), je nutné vytvořit symbolický odkaz 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;

Instalační skript Firebird 4.0.1 a vyšší může vytvořit symbolický odkaz automaticky, ale pro Firebird 3 by měl být vytvořen ručně.

4. Stažení a instalace Firebird

Po instalaci potřebných nástrojů a knihoven můžeme pokračovat stažením, rozbalením a spuštěním instalačního balíčku.

Předpokládáme, že DOWNLOADLINK je odkaz z www.firebirdsql.org pro stažení potřebného Firebird.

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

Zde DOWNLOADLINK - odkaz na tar.gz, a FIREBIRD_slozka - Firebird-verze.build-0.architektura

kde bude distribuce rozbalena příkazem tar -zxC /tmp

To je vše, co je potřeba pro rychlou instalaci Firebird 3 nebo 4 na Linuxu.

Volitelně můžete vygenerovat optimální konfigurační soubory (firebird.conf a databases.conf) pomocí Firebird Configuration Calculator.

Více podrobností o instalaci Firebird

Pro ty, kteří by chtěli lépe nakonfigurovat instalaci Firebird, poskytujeme podrobné vysvětlení výše uvedených kroků.

Konfigurace vm.max_map_count

Firebird od verze 3 efektivně využívá architekturu SuperServer s intenzivní dynamickou alokací paměti. V případě vysokého zatížení a vysoké frekvence připojení a odpojení může engine narazit na limity fragmentace paměti v Linuxu, což se projeví jako chyba 11 (ENOMEM) nebo chyba 12 (munmap) v firebird.log.

Limit fragmentace paměti je řízen parametrem vm.max_map_count, který má ve výchozím nastavení hodnotu 65536.

Aby toto nastavení zůstalo zachováno po restartu serveru, přidejte následující řádek do /etc/sysctl.conf

Code
vm.max_map_count = 256000

Pro jeho aplikaci buď restartujte server, nebo spusťte příkaz:

Code
sudo sysctl -p /etc/sysctl.conf

Plánování místa na disku

Obecně doporučujeme alokovat 3 samostatné oddíly na serveru s databází Firebird: pro dočasné soubory, pro databáze a pro lokální zálohy.

Oddíl pro dočasné soubory

Hlavními dočasnými soubory jsou zámkové soubory, třídicí soubory, soubory pro globální dočasné tabulky a bloby, soubory s monitorovacími daty.

Ve výchozím nastavení jsou v Linuxu třídicí soubory a soubory s daty pro globální dočasné tabulky umístěny v /tmp, soubory pro data mon$ a zámkové tabulky jsou v /tmp/firebird.

Jak určit správnou velikost oddílu pro dočasné soubory?

Potenciálně mohou být třídicí a blob soubory poměrně velké, takže praktickým doporučením je mít oddíl pro dočasné soubory pro produkční systém se slušným počtem uživatelů kolem 30-40 GB. Pro přesnější určení správné velikosti doporučujeme sledovat skutečné velikosti dočasných souborů.

Malým problémem pro takové monitorování je, že třídicí soubory jsou okamžitě po vytvoření odpojeny, takže je není možné vidět běžným příkazem „ls“. Pro jejich zobrazení musíme zkontrolovat deskriptory procesu (a budou označeny jako smazané) následujícím příkazem:

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

Výsledkem tohoto příkazu uvidíme obsah pseudo-složky /proc/…/fd/

Pro zobrazení informací o konkrétním souboru v této složce je třeba použít příkaz:

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

kde NNNNN je deskriptor souboru.

Tento příkaz můžete použít pro architektury SuperServer a SuperClassic, když engine běží jako jediný proces. Samozřejmě místo pgrep firebird je možné zadat číslo procesu Firebird.

Oddíl pro soubory databází

Oddíl pro soubory databází by měl být dostatečně velký pro uložení všech souborů databází plus volné místo rovnající se velikosti největší databáze, plus rezerva pro růst na další 2-3 roky.

Oddíl pro lokální zálohy

Minimálně by měl být oddíl pro lokální zálohy dostatečně velký pro uložení všech lokálních záloh plus zálohy největší databáze.

Také pro provádění obnov (restores) doporučujeme mít na oddílu se zálohami další volné místo, rovnající se velikosti největší databáze.

Další čtení o zálohách

Vytvoření uživatele firebird (volitelné)

Instalační skript vytvoří, pokud neexistuje, uživatele a skupinu s názvem „firebird“ pro provádění všech aktivit Firebird pomocí tohoto uživatele (to je osvědčený postup pro systémy Linux).

To také znamená, že soubory databází a složky, kde jsou umístěny databáze a zálohy, by měly mít vlastnictví nebo oprávnění pro tohoto uživatele.

Někdy má smysl vytvořit uživatele a skupinu „firebird“ před instalací:

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

Pro uživatele firebird nevytváříme domovskou složku (přepínač -M), zadáváme pouze základní složku (-b).

Shell nologin s přepínačem -s zabraňuje standardnímu přihlášení na server.

Instalace potřebných balíčků

Firebird 3.0 a 4.0 závisí na knihovnách ncurses (libncurses.so.5), ICU (bez odkazu na verzi a nejsou zobrazeny ve výstupu ldd) a tommath (libtommath.so.0).

V závislosti na distribuci Linuxu musíme použít názvy knihoven s verzemi nebo bez nich. Praktické příkazy pro kopírování a vložení jsou uvedeny výše a níže je popisujeme.

CentOS a Oracle Linux

Verze 7 obsahuje potřebné balíčky ve výchozím nastavení, verze 8 vyžaduje instalaci ncurses-compat-libs a vytvoření symbolického odkazu libtommath.so.0.

Debian, Ubuntu a OpenSUSE

Ve verzích Debian 9 a 10, Ubuntu 18 a 20, OpenSUSE 15 musíme nainstalovat libncurses5 a libtommath1 a pro identifikaci verze ICU můžeme použít vyhledávání podle neúplného názvu:

v Ubuntu

Code
apt-cache search libicu5

v OpenSUSE 15

Code
zypper search libicu6

Podrobnosti instalace Firebird

Před instalací jsme zvýšili systémový parametr vm.max_map_count, nainstalovali knihovny ICU, ncurses a tommath. Poté jsme zkontrolovali, že máme správné verze ncurses a tommath (libncures.so.5 a libtommath.so.0) nebo vytvořili potřebné symbolické odkazy.

Volitelně jsme mohli vytvořit uživatele a skupinu firebird.

Poté můžeme nainstalovat Firebird, pro to přejdeme do složky, kde byl instalační balíček rozbalen, a spustíme instalaci:

Code
./install.sh

stiskněte Enter pro potvrzení instalace a po výzvě zadejte heslo pro SYSDBA.

Zpočátku bude Firebird nainstalován s výchozím konfiguračním souborem. Výchozí konfigurace běží jako architektura SuperServer s mírnými hodnotami: cache (DefaultDbCachePages, také nazývané Page buffers) na databázi je nastavena na 2048, buffer pro třídění (TempCacheLimit) je 64M (pro server ve v3 a na databázi ve v4).

Pro zobrazení nekomentovaných parametrů firebird.conf můžete použít následující příkaz:

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

Pokud vygenerujete optimální konfigurační soubor pomocí Firebird Configuration Calculator nebo ručně změníte parametry, mějte prosím na paměti, že změny budou aplikovány po restartu služby Firebird (v případě SuperServer a SuperClassic, v případě Classic je nutný restart všech procesů Firebird).

Upozorňujeme, že od Firebird 3 existují samostatné systemd jednotky pro SuperServer, SuperClassic a Classic.