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 (
Pro ty nejnetrpělivější jděte rovnou do bitvy:
Rychlá instalace
Úpravy souboru /etc/sysctl.conf
př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 (
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