Instalace Firebird 3 na moderní verze Linuxu: CentOS8 a Ubuntu 19

V tomto článku popíšeme minimální sadu akcí požadovaných pro optimální instalaci Firebird DBMS verze 3.0 na nové distribuce Linuxu. Jako příklady jsou vybrány CentOS 8 a Ubuntu 19.

Pro „dodání“ distribuce Firebird do cílového systému je v této příručce vybrána možnost stažení archivu tar.gz pomocí odkazu z oficiálního webu projektu (firebirdsql.org).

Pro ty nejnetrpělivější jděte rovnou do bitvy:

Rychlá instalace

Úpravy souboru /etc/sysctl.confpřidáním řádku:

vm.max_map_count = 256000

Uložte soubor a použijte nastavení:

sudo sysctl -p /etc/sysctl.conf

Další pokyny se liší pro CentOS 8 a Ubuntu 19, ale ССЫЛКА и КАТАЛОГ uveďte odkaz z oficiální stránky projektu Firebird pro stažení distribuce a adresář, do kterého bude distribuce během procesu stahování rozbalena.
Aktuálně (březen 2020) je aktuální vydání Firebird 3.0.5 (Zde je odkaz na 64bitovou verzi).

CentOS 8

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

Vlastní instalace Firebird DBMS:

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

Pokud chcete lépe porozumět tomu, co tyto akce dělají, čtěte dále.

Hlavní část

Krátká preambule

Předpokládá se, že OS je již nainstalován v minimální verzi a je nakonfigurován přístup k veřejným úložištím nebo jejich lokálním kopiím.

Předpokládá se, že čtenář má základní znalosti Linuxu a Firebird DBMS.

Plánování

Na serveru DBMS se doporučuje alokovat samostatné sekce pro dočasné soubory (/tmp), databázové soubory a místní zálohy.

Mezi dočasné patří soubory zámku, soubory řazení, soubory „materializace“ globálních dočasných tabulek (GTT) a monitorovací tabulky. Soubory pro řazení a globální dočasné tabulky jsou umístěny v /tmp, mon$-table soubory a lock-soubory – in /tmp/firebird.

Třídicí soubory jsou „smazány“ (unlink) ihned po vytvoření, takže je nelze „vidět“ ve výpisu adresáře – pouze v seznamu handlerů procesů (označených jako deleted):

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

Ve výpisu pseudo adresáře /proc/…/fd/ zobrazí se symbolické odkazy a aktuální informace o souboru jsou dány:

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

kde НОМЕР – deskriptor (deskriptor) zájmového souboru.

Místo volání"pgrep исполняемый-файл„Ihned můžete nahradit identifikátor procesu, který vás zajímá.

Dočasné soubory mohou být velmi velké /tmp Doporučuje se alokovat alespoň 20-30 GB. Je třeba vzít v úvahu, že velikost třídicích souborů závisí pouze na množství dat explicitně nebo implicitně tříděných v požadavku a jeden uživatel může „vytvořit“ gigabajty dočasných souborů.

Sekce pro databázové soubory musí obsahovat všechny databázové soubory. plus minimálně kopie největšího databázového souboru. Je třeba počítat s nárůstem databázových souborů do budoucna na několik let dopředu.

Sekce lokálních záloh musí obsahovat alespoň jeden záložní archiv všech databází plus zálohu největší databáze. Je žádoucí, aby tato sekce obsahovala i prostor pro obnovu největší databáze. Je třeba vzít v úvahu nárůst záloh a archivů záloh v budoucnosti na několik let.

Předběžná příprava

Server Firebird 3.0 DBMS dynamicky alokuje a uvolňuje systémovou paměť, což může vést k její fragmentaci. Například po odpojení velkého počtu uživatelů od superserveru najednou může dojít k chybám při vytváření nových připojení.

Fragmentace paměti je řízena systémovým parametrem vm.max_map_count, výchozí hodnota je 64 kB. Doporučuje se zvýšit jeho hodnotu čtyřikrát:

sudo sysctl vm.max_map_count=256000

Aby byla nová hodnota nastavena při restartování systému, přidejte do souboru /etc/sysctl.conf čára:

vm.max_map_count = 256000

Je vhodné uvést komentář, aby byl jasný důvod změny tohoto parametru. Nejprve můžete soubor upravit a poté použít nastavení v něm uložená:

sudo sysctl -p /etc/sysctl.conf

Instalace požadovaných balíčků

Spustitelné soubory Firebird 3.0 Linux DBMS závisí na knihovnách ncurses (libncurses.so.5), JIP (není vázáno na verzi a nezobrazuje se ve výstupu ldd) a tommath (libtommath.so.0). Ke stažení a rozbalení archivu sestavení budete potřebovat nástroje gzip, tar и curl nebo wget. verze ICU, gzip, tar и curl/wget – jsou bezvýznamné.

Práce s balíčky závisí na systému a na správci balíčků, který se v systému používá, proto je budeme zvažovat jeden po druhém.

CentOS 8

CentOS 8 používá nového správce balíčků – dnf a příkazem se nazývá „transparentně“. yum. Protože pro naše účely mezi nimi není žádný rozdíl - v příkladech bude yum.

Aktualizujte mezipaměť metadat: sudo yum makecache

Balíček libtomath se nachází v samostatném úložišti E(xtra)P(ackages for)E(nterprise)L(inux), takže zkontrolujeme, zda je již zahrnut:

yum -C repolist

Možnost „pouze z mezipaměti“ (-C nebo --cache-only) se používá k odstranění zbytečných kontrol a stahování, takže yum je rychlejší. Pokud v seznamu není žádné úložiště epel, nainstalujte jej a aktualizujte mezipaměť metadat:

sudo yum install epel-release &&
sudo yum makecache

Žádosti v případě potřeby potvrzujeme kontrolou hodnot klíčů pgp s těmi, které jsou již známé z důvěryhodného zdroje.

Pokud se vyskytnou problémy s načítáním metainformací úložiště ze zdrojů https, upravte soubor /etc/yum.repos.d/epel.repo, nahrazovat https:// na http:// a zopakujte příkaz pro aktualizaci mezipaměti.

Zkontrolujeme stav požadovaných balíčků (příkaz je složitý, v ukázkovém výstupu je filtrován 32bitový balíček):

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

To vidíme curl, gzip и ncurses hostované v pseudoúložišti instalačního programu (anaconda) a tar – vyloučeno z minimální instalace systému. Hlavní verze libncurses и libtommath více, než je požadováno: 6 a 1 místo 5 a 0, v tomto pořadí. Pokud je stejný balíček nainstalován i dostupný, byla pro něj vydána aktualizace. Nainstalujte chybějící balíčky:

sudo yum install 
libicu libtommath tar

ubuntu 19

Nástroje jsou navrženy pro správu balíčků apt, apt‑get и apt‑cache. První je určen pro interaktivní práci a poslední dva jsou určeny pro použití ve skriptech. Názvy balíčků se mírně liší a zahrnují verzi.

Zkontrolujeme stav požadovaných balíčků (příkaz je zkombinován, ukázkový výstup je zkrácen a 32bitové balíčky jsou odfiltrovány):

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]

Balíčky, u kterých jsou vyznačeny hranaté závorky installed/upgradable – nainstalováno. Dostupné, ale nenainstalované ncurses5, namísto curl sada wget. Nainstalujte chybějící balíčky:

sudo apt‑get install 
libncurses5 libtommath1

Vytváření symbolických odkazů

Od libtommath.so.1 и libncurses.so.6 zpětně kompatibilní s libtommath.so.0 и libncurses.so.5, pak pro Firebird stačí vytvořit symbolické odkazy na stávající verze knihoven.

Najdeme libtommath.so.1 (libncurses.so.? umístěné ve stejném adresáři):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Vytváříme symbolické odkazy.

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

Zkontrolujeme výsledek (příkaz je složitý, příklady výstupů jsou zkrácené):

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

Stažení distribuční sady Firebird DBMS.

Oficiální stránky projektu Firebird (firebirdsql.org) zveřejňují odkazy na distribuce „oficiálních“ vydání a „denních“ sestavení (snapshot builds).

Oficiální vydání Linuxu jsou dostupná jako archivy (tar.gz) a balíčky deb/rpm, ale sestavení jsou dostupná pouze jako archivy. Budeme uvažovat o "generickém instalátoru" (obecný instalátor z tar.gz).

Archiv sestavení je třeba stáhnout a rozbalit, ale oba procesy zkombinujeme. Rozbalení je provedeno v /tmp,URL označuje odkaz na archiv ke stažení.

kučera:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Ve výchozím nastavení curl odešle stažená data do stdout, ale nezpracuje přesměrování a přidáme "‑L", ale wget, naopak: zpracovává přesměrování, ale zapisuje data do souboru a dáme "‑O‑". Pro tar indikovat použití gzip-filtr a adresář, do kterého se rozbalení provede. Po dokončení procesu se objeví adresář, jako je tento Firebird‑3.0.5.33220‑0.amd64 se třemi soubory: install.sh, buildroot.tar.gz и manifest.txt.

Instalace Firebirdu

Při předběžné přípravě jsme upravili hodnotu parametru systému vm.max_map_count, zkontroloval dostupnost a nainstaloval knihovny JIP, ncurses a tommath. Ujistěte se, že verze ncurses a tommath jsou správné (libncures.so.5 и libtommath.so.0) a vytvořili potřebné symbolické odkazy.

Vlastní instalace je velmi jednoduchá. Přejděte do adresáře, kde byl rozbalen distribuční archiv Firebird, zkontrolujte a v případě potřeby nastavte příznak „executable“ pro skript install.sh:

chmod +x install.sh

spusťte instalační skript:

sudo ./install.sh

Stiskem klávesy Enter potvrdíme zahájení instalace a po obdržení požadavku zadáme heslo sysdba.

Instalační skript se automaticky spustí systemd-jednotka firebird-superserver (tichá architektura Firebird 3.0). Služba Firebird bude pracovat s výchozími parametry pro superserver: mezipaměť stránek 2048 stránek (na databázi), vyrovnávací paměť pro řazení 64 MB (sdílená) a připojení pouze klientů verze XNUMX. Zobrazit možnosti firebird.conf:

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

Vezměte prosím na vědomí, že nové hodnoty od firebird.conf se aktivuje až po restartu služby Firebird.

Při výběru hodnot parametrů je třeba vzít v úvahu, že existují tři hlavní „spotřebitelé“: mezipaměť stránek (pro databázi), třídicí vyrovnávací paměť (sdílená) a paměť přidělená serverem pro připojení klientů. Můžete spravovat pouze první dva - množství paměti pro připojení klientů závisí na počtu a textu dotazů uložených v mezipaměti, jejich plánech a databázových objektech zahrnutých do dotazů. Odhady paměti připojení klienta se provádějí pouze empiricky a mohou se měnit podle změn klientských aplikací a/nebo databázových objektů.

Pro superserver na hostitelích s malým množstvím paměti (až 12-16 GB) byste neměli alokovat více než třetinu nebo čtvrtinu celkového množství paměti RAM pro mezipaměť stránek a třídicí vyrovnávací paměť.

Pokud není počet databází pevně daný a může se měnit, celkové množství paměti cache stránek by mělo být vyděleno maximálním počtem databází, které mohou být na serveru. Velikost mezipaměti stránek je specifikována ve stránkách a musí být samostatně převedena na bajty.

Chcete-li přejít na klasickou architekturu, musíte to minimálně výslovně specifikovat ServerMode в firebird.conf, snižte tam mezipaměť stránek (ne více než 2 kB), snižte třídicí vyrovnávací paměť (celkový povolený objem všech druhů dělený maximálním počtem připojení), deaktivujte a zastavte jednotku firebird-superserver, povolte a spusťte jednotku firebird-classic.socket.

Použití superklasické architektury ve Firebirdu 3.0 nedává moc smysl: „spolehlivost“ je jako superserver a stejný obecný třídicí buffer. Neexistuje žádná společná cache stránek a „ztráty“ pro synchronizaci různých spojení mezi sebou jsou stejné jako u klasického.

Je třeba si uvědomit, že ve Firebirdu 3.0 lze některé parametry (mezipaměť stránek, velikosti souborů zámku, hashovací tabulky a některé další) nastavit v databases.conf individuálně pro každou databázi. Pro superserver je užitečné např. nastavit malou hodnotu DefaultDbCachePages в firebird.conf a nainstalujte jednotlivé mezipaměti stránek pro požadované databáze databases.conf.

Zeptejte se na článek v komentářích nebo napište dopisy na naši adresu podpory [chráněno e-mailem].

Zdroj: www.habr.com

Přidat komentář