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

Knihovna IBSurgeon

Instalace Firebirdu 3 na moderní verze Linuxu: CentOS 8 a Ubuntu 19

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

Tento článek je věnován rychlé instalaci Firebirdu 3.0 na nové distribuce Linuxu: CentOS 8 a Ubuntu 19 (funguje také pro 18).

První část je rychlý průvodce instalací Firebirdu 3.0 co nejrychleji, bez podrobností. Druhá část popisuje detaily.

Rychlá instalace Firebirdu 3 na CentOS 8 a Ubuntu 19

  1. Přidejte do souboru /etc/sysctl.conf následující řádek:

vm.max_map_count = 256000

  1. Uložte sysctl.conf a aplikujte nová nastavení:

sudo sysctl -p /etc/sysctl.conf

Následující pokyny se mírně liší pro CentOS 8 a Ubuntu 19.

Upozorňujeme, že jsme použili explicitní odkaz na nejnovější distribuční verzi Firebirdu 3.0 z FirebirdSQL.org, aktuálně (květen 2020) je to 3.0.5, a zde je odkaz pro 64bitovou verzi:

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

V budoucnu, až se objeví 3.0.6 atd., budete muset použít správný odkaz na novou verzi - bude zveřejněn na www.firebirdsql.org.

  1. Instalace balíčků

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

Výsledkem bude, že budete mít všechny instalační soubory Firebirdu připravené v /tmp/firebird:

Code
/tmp/Firebird-3.0.5.33220-0.amd64# ll
total 8484
drwxr-xr-x  2 root root    4096 Jan  9 13:13 ./
drwxrwxrwt 28 root root    4096 May 22 17:20 ../
-rw-r--r--  1 root root 8615663 Jan  9 13:13 buildroot.tar.gz
-rwxr-xr-x  1 root root   44096 Jan  9 13:13 install.sh*
-rw-r--r--  1 root root   14967 Jan  9 13:13 manifest.txt
  1. A poté nainstalujte Firebird:

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

poté zkontrolujte, že Firebird běží - níže uvedený příkaz zobrazí všechny procesy související s Firebirdem nebo běžící pod uživatelem firebird:

ps aux | grep firebird

To je vše, pokud potřebujete pouze nainstalovat Firebird 3.0.

Pokud byste chtěli vědět, co výše uvedené příkazy znamenají, čtěte dál!

Hlavní část: podrobnosti instalace Firebirdu 3 na Linux

V tomto článku předpokládáme, že operační systém byl nainstalován v minimální verzi a že již máte přístup k veřejným repozitářům nebo jejich lokálním kopiím.

Plánování alokace místa

Na serveru určeném pro obsluhu databází Firebird doporučujeme vyhradit samostatné svazky pro dočasné soubory (/tmp), databázové soubory a lokální zálohy.

Svazek pro dočasné soubory

Dočasné soubory Firebirdu zahrnují zamykací soubory, třídicí soubory, soubory pro „materializaci“ globálních dočasných tabulek (GTT) a monitorovací tabulky. Třídicí soubory a soubory GTT jsou umístěny v /tmp, soubory mon$- a zamykací soubory jsou v /tmp/firebird.

Třídicí soubory jsou ihned po vytvoření odpojeny, proto je nemůžete vidět ve složce (na rozdíl od Windows) příkazem ls.

Chcete-li tyto soubory vidět, musíte vyžádat souborové deskriptory procesu Firebird (a jsou označeny jako smazané):

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

Chcete-li získat podrobnosti o konkrétním třídicím souboru, spusťte příkaz

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

kde NUMBER je souborový deskriptor souboru.

Dočasné soubory mohou být velké, proto se doporučuje vyhradit pro /tmp 20-30 GB.

Upozorňujeme, že velikost třídění nezávisí na velikosti databáze: některé chybné dotazy s přímým součinem mohou snadno vytvořit 100GB třídicí soubor z 3MB databáze.

Svazek pro databázové soubory

Svazek pro databázové soubory by měl být dostatečně velký, aby pojal všechny databázové soubory plus minimálně velikost největší databáze, pro případné manipulace na místě.

Také pamatujte, že databáze v průběhu času rostou, a vyhraďte pro ně také nějaké volné místo.

Důrazně se doporučuje umístit svazek pro databázové soubory na nejrychlejší disk/SAN/hardware, který máte, s nejvyššími možnostmi náhodného I/O.

Svazek pro lokální záložní soubory

Svazek pro lokální záložní soubory by měl být dostatečně velký, aby pojal zálohy všech databází plus velikost největšího databázového souboru (ne zálohy - to je pro případné testovací obnovení). Samozřejmě pamatujte na růst databázových záloh. Svazek pro lokální záložní soubory může být umístěn na relativně pomalých discích. Záložní soubory Firebirdu mají lineární strukturu, takže pro záložní disk stačí vysoká sekvenční rychlost.

Příprava

Firebird engine dynamicky alokuje a dealokuje paměť, což může vést k fragmentaci paměti.

Například k tomu může dojít po odpojení mnoha uživatelů z instance Firebird SuperServer. Fragmentace paměti je řízena systémovým parametrem vm.max_map_count, který má výchozí hodnotu 65K. Doporučuje se jej zvýšit alespoň 4krát a toto nastavení trvale uložit.

Přidejte následující řádek do /etc/sysctl.conf:

vm.max_map_count = 256000

a aplikujte jej

sudo sysctl -p /etc/sysctl.conf

Instalace potřebných balíčků

Firebird 3 závisí na několika balíčcích Linuxu: ncurses, ICU, tommath. Dále potřebujeme nástroje gzip, tar a curl nebo wget.

CentOS 8

CentOS používá nový správce balíčků dnf, který je transparentně volán přes yum. Máme rádi yum, takže použijme yum. Nejprve obnovte mezipaměť metadat:

sudo yum makecache

Balíček libtommath se nachází v samostatném repozitáři EPEL (E(xtra)P(ackages for)E(nterprise)L(inux)), takže musíme zkontrolovat, že je povolen:

yum -C repolist

Volba -C (–cache-only) způsobí, že yum použije pouze mezipaměť.

Pokud ve výsledku příkazu yum -C repolist nevidíte epel-repository, nainstalujte jej:

sudo yum install epel-release && sudo yum makecache

V případě problémů upravte soubor /etc/yum.repos.d/epel.repo a nahraďte https:// za http:// a zkuste znovu yum makecache.

Poté zkontrolujme, že máme všechny potřebné balíčky (v příkladu 64bitové):

Code
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

Instalace chybějících balíčků na 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 [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]

Instalace chybějících balíčků na Ubuntu 19:

sudo apt‑get install libncurses5 libtommath1

Vytváření symbolických odkazů

Libtommath.so.1 a libncurses.so.6 jsou kompatibilní s libtommath.so.0 a libncurses.so.5, pro Firebird bude stačit vytvořit symbolické odkazy na existující verze knihoven.

Nejprve najdeme libtommath.so.1 (libncurses.so.? je ve stejné složce):

find /usr -name libtommath.so.1

Na CentOS8 se nachází v:

Code
/usr/lib64/libtommath.so.1

Na Ubuntu 19:

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

Vytvořme symbolické odkazy

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

pro kontrolu výsledků:

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

na CentOS8 to dává:

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*

Na Ubuntu to dává:

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

Získání distribuční verze Firebirdu 3.0

Linuxové verze Firebirdu jsou k dispozici na www.firebirdsql.org jako archivy tar.gz. Předpokládejme, že URL je odkaz ke stažení archivu tar.gz verze Firebirdu. Musíme stáhnout a rozbalit archiv, k tomu můžeme použít curl nebo wget.

curl

curl -L URL | tar -zxC /tmp

wget

wget -O- URL | tar -zxC /tmp

Výsledkem bude vytvoření složky /tmp/Firebird‑3.0.5.33220‑0.amd64 se 3 soubory: install.sh, buildroot.tar.gz a manifest.txt.

Instalace Firebirdu

Jako předpoklady jsme nastavili vm.max_map_count, zkontrolovali a nainstalovali ICU, ncurses a tommath a vytvořili symbolické odkazy.

Poté je poslední krok snadný - spusťte

sudo ./install.sh

Tento skript spustí systémovou jednotku firebird-superserver a Firebird je připraven k práci.

Konfigurační soubor a jeho optimalizace

Upozorňujeme, že výchozí konfigurační soubor Firebirdu firebird.conf je nakonfigurován velmi skromně. Obsah firebird.conf (nekomentované řádky) můžete zkontrolovat příkazem:

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

Pro výchozí firebird.conf výše uvedený příkaz nevrátí nic, což znamená, že všechny hodnoty jsou výchozí.

Pokud konfigurujete produkční systém, zvažte použití optimalizovaných konfiguračních souborů Firebirdu: /cs/optimized-firebird-configuration/

Často kladená otázka #1

Častou otázkou je „proč prostě nepoužít repozitář a nenainstalovat Firebird pomocí yum nebo apt?“. Samozřejmě je to možné, ale existují 2 velké důvody:

  1. repozitář může obsahovat starou verzi (tj. předchozí dílčí vydání),

  2. rádi kontrolujeme prostředí, abychom zajistili, že je vše správně nainstalováno a nakonfigurováno.

Také preferujeme instalaci do /opt, je to snazší pro multiplatformní skripty a dobrá administrativní praxe.

Kontakty

Neváhejte posílat dotazy, návrhy a případné chyby na [email protected]