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
- Přidejte do souboru /etc/sysctl.conf následující řádek:
vm.max_map_count = 256000
- 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.
- 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:
/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
- 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é):
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
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:
/usr/lib64/libtommath.so.1
Na Ubuntu 19:
/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á:
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á:
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:
-
repozitář může obsahovat starou verzi (tj. předchozí dílčí vydání),
-
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]