V tomto článku popíšeme minimální soubor kroků potřebných pro optimální instalaci databázového systému Firebird verze 3.0 na nové distribuce Linuxu. Pro příklady byly vybrány CentOS 8 a Ubuntu 19.
Pro 'doručení' distribuce Firebird na cílový systém, v tomto průvodci, byla zvolena varianta stažení tar.gz archivu prostřednictvím odkazu z oficiálních stránek projektu ().
Pro ty nejnetrpělivější - hned do akce:
Rychlá instalace
Upravujeme soubor /etc/sysctl.conf, přidáním řádku:
vm.max_map_count = 256000
Uložíme soubor a aplikujeme nastavení:
sudo sysctl -p /etc/sysctl.conf
Další instrukce se liší pro CentOS 8 a Ubuntu 19, ale ODKAZ a KATALOG označují odkaz z oficiálních stránek projektu Firebird pro stažení distribuce a katalog, do kterého bude distribuce rozbalena během stahování.
V současné době (březen 2020) je aktuální verze Firebird 3.0.5 ( na 64-bitovou 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 ODKAZ|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- ODKAZ|tar -zxC /tmp
Přistupujeme k instalaci databázového systému Firebird:
cd /tmp/KATALOG
sudo ./install.sh
Pokud chcete lépe porozumět, co jednotlivé kroky znamenají – čtěte dále.
Hlavní část
Krátké úvodní slovo
Předpokládá se, že operační systém již byl nainstalován v minimální variantě a zajištěn přístup k veřejným repozitářům nebo k jejich místním kopiím.
Předpokládá se, že čtenář má základní znalosti o Linuxu a databázovém systému Firebird.
Plánování
Na serveru databázového systému se doporučuje vyčlenit samostatné oddíly pro dočasné soubory (/tmp), databázové soubory a místní zálohy.
Mezi dočasné soubory patří lock-soubory, soubory pro řazení, soubory 'materializace' globálních dočasných tabulek (GTT) a monitorovacích tabulek. Soubory pro řazení a globální dočasné tabulky se nacházejí v /tmp, soubory mon$-tabulek a lock-soubory jsou v /tmp/firebird.
Soubory pro řazení se 'odstraňují' (unlink) ihned po vytvoření, proto je nelze 'vidět' v seznamu adresáře – pouze ve seznamu popisovačů (handles) procesu (označeny jako deleted):
sudo ls -lhF /proc/`pgrep firebird`/fd
V seznamu pseudoadresáře /proc/…/fd/ se zobrazují symlinky a skutečné informace o souboru poskytuje:
sudo stat -L /proc/`pgrep firebird`/fd/ČÍSLO
kde ČÍSLO – popisovač (descriptor) zajímavého souboru.
Místo volání „pgrep spustitelný-soubor“ lze přímo dosadit identifikátor zajímavého procesu.
Dočasné soubory mohou být velmi velké, proto se doporučuje vyčlenit alespoň 20-30 GB. Je třeba vzít v úvahu, že velikost souborů pro třídění závisí pouze na objemu dat, která jsou ve vašem dotazu explicitně nebo implicitně tříděna, a pouze jeden uživatel může "vytvořit" gigabajty dočasných souborů. /tmp Oddíl pro soubory databází by měl pojmout soubory všech databází plus minimálně kopii souboru největší databáze. Je třeba mít na paměti růst souborů databází s výhledem na několik let dopředu.
Oddíl pro lokální zálohy by měl obsahovat alespoň jeden archiv záloh všech databází plus zálohu největší databáze. Ideálně by na tomto oddílu mělo být místo pro obnovení největší databáze. Je třeba zohlednit růst záloh a archivů záloh s výhledem na několik let dopředu.
Předběžná příprava
Server DBMS Firebird 3.0 dynamicky alokuje a uvolňuje systémovou paměť, což může vést k její fragmentaci. Například po jednorázovém odpojení velkého počtu uživatelů od superserveru mohou vznikat chyby při nových připojeních.
Fragmentaci paměti řídí systémový parametr
vm.max_map_count , jehož výchozí hodnota je 64K. Doporučuje se zvýšit jeho hodnotu čtyřikrát:sudo sysctl vm.max_map_count=256000
Aby se nová hodnota nastavila po restartu systému, přidáme do souboru
řádek: /etc/sysctl.conf Je dobré přidat komentář, aby byl jasný důvod změny tohoto parametru. Můžete nejprve upravit soubor a poté aplikovat v něm uložené nastavení:
vm.max_map_count = 256000
Instalace potřebných balíčků
sudo sysctl -p /etc/sysctl.conf
Spustitelné soubory DBMS Firebird 3.0 pro Linux závisí na knihovnách ncurses (
libncurses.so.5), ICU (bez ohledu na verzi a bez zobrazení ve výstupuldd ) a tommath (libtommath.so.0). Pro stažení a rozbalení archivu sestavení budou potřeba nástrojegzip . Verze ICU jsou – bezvýznamné., tar a curl nebo wgetPráce s balíčky závisí na systému a použitých balíčkových manažerech, proto je probereme postupně. . Verze ICU jsou – bezvýznamné., tar a curl/wget CentOS 8 používá nový balíčkový manažer –
dnf
CentOS 8
a ten je "průhledně" volán příkazem yum . Protože pro naše účely mezi nimi není rozdíl – v příkladech bude Aktualizujeme mezipaměť metadat:sudo yum makecache Aktualizujeme mezipaměť metadat:.
Balíček libtomath se nachází v samostatném E(xtra)P(ackages for)E(nterprise)L(inux) repozitáři, proto zkontrolujeme, zda je již připojen: yum -C repolist
Balíček libtomath se nachází v samostatném E(xtra)P(ackages for)E(nterprise)L(inux) repozitáři, takže zkontrolujeme, zda je již připojený:
yum -C repolist
Možnost „pouze z cache“ (-C nebo --cache-only) se používá k vyloučení zbytečných kontrol a stahování, což zrychluje práci s yum. Pokud není v seznamu repozitář epel – nainstalujeme jej a aktualizujeme cache metadat:
sudo yum install epel-release &&
sudo yum makecache
Potvrďte požadavky, a pokud je to nutné, ověřte hodnoty pgp klíčů s těmi, které již znáte z důvěryhodného zdroje.
Pokud dojde k problémům při stahování meta informací z repozitářů https, upravte soubor /etc/yum.repos.d/epel.repo, nahraďte https:// na http:// a znovu proveďte příkaz pro aktualizaci cache.
Zkontrolujte stav potřebných balíčků (příkaz je složen, v příkladu výstupu je filtrován 32bitový balíček):
yum -C list
ncurses libicu libtommath
gzip tar curl wget |
grep -v i686
Nainstalované balíčky
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
Dostupné balíčky
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
Vidíme, že curl, . Verze ICU jsou – bezvýznamné. a ncurses jsou umístěny v pseudo repozitáři instalátoru (anaconda), a tar – je vyloučen z minimální instalace systému. Hlavní verze libncurses a libtommath jsou větší, než je potřeba: 6 a 1 namísto 5 a 0, příslušně. Pokud je stejný balíček nainstalovaný i dostupný – bylo u něj vydáno aktualizaci. Nainstalujte chybějící balíčky:
sudo yum install
libicu libtommath tar
Ubuntu 19
Pro správu balíčků jsou určeny utility apt, apt‑get a apt‑cache. První je určena pro interaktivní práci, zatímco ty poslední dvě jsou určeny pro použití ve skriptech. Jména balíčků jsou mírně odlišná a zahrnují verzi.
Zkontrolujte stav potřebných balíčků (příkaz je složen, příklad výstupu je zkrácen a 32bitové balíčky jsou filtrová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, pro které jsou v hranatých závorkách uvedeny nainstalováno/upgradable – jsou nainstalované. Dostupné, ale nenainstalované ncurses5, místo curl nainstalováno wget. Nainstalujte chybějící balíčky:
sudo apt‑get install
libncurses5 libtommath1
Vytváření symbolických odkazů
Jelikož libtommath.so.1 a libncurses.so.6 jsou zpětně kompatibilní s ). Pro stažení a rozbalení archivu sestavení budou potřeba nástroje a ), ICU (bez ohledu na verzi a bez zobrazení ve výstupu, pro Firebird stačí vytvořit symbolické odkazy na existující verze knihoven.
Najdeme libtommath.so.1 (libncurses.so.? jsou umístěny ve stejné složce):
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
Zkontrolujte výsledek (příkaz je složen, příklady výstupu jsou zkráceny):
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
Stahování distribuce DBMS Firebird.
Na oficiálních stránkách projektu Firebird (firebirdsql.org) jsou publikovány odkazy na distribuce "oficiálních" vydání (releases) a "denních" sestavení (snapshot build).
Oficiální vydání pro Linux jsou k dispozici ve formě archivů (tar.gz) a balíčků deb/rpm, a sestavení – pouze ve formě archivů. Budeme se zabývat "obecným instalátorem" (generic installer z tar.gz).
Archiv sestavení je třeba stáhnout a rozbalit, ale oba tyto procesy spojíme. Rozbalení se provádí v /tmp, URL označuje odkaz na stahovaný archiv.
curl:
curl -L URL | tar -zxC /tmp
wget:
wget -O– URL | tar -zxC /tmp
Ve výchozím nastavení curl posílá stahovaná data na standardní výstup, ale nezpracovává přesměrování a přidáváme „‑L“, zatímco wget, naopak: zpracovává přesměrování, ale zapisuje data do souboru a my použijeme „‑O‑“. Pro tar určujeme použití . Verze ICU jsou – bezvýznamné.-filtru a adresář, do kterého bude provedeno rozbalení. Po dokončení procesu se objeví adresář ve tvaru Firebird‑3.0.5.33220‑0.amd64 s třemi soubory: install.sh, buildroot.tar.gz a manifest.txt.
Instalace Firebird
V průběhu předběžné přípravy jsme upravili hodnotu systémového parametru , jehož výchozí hodnota je 64K. Doporučuje se zvýšit jeho hodnotu čtyřikrát:, zkontrolovali přítomnost a nainstalovali knihovny ICU, ncurses a tommath. Ujistili jsme se o správnosti verzí ncurses a tommath (libncures.so.5 a ). Pro stažení a rozbalení archivu sestavení budou potřeba nástroje) a vytvořili potřebné symlinky.
Samotná instalace se provádí velmi jednoduše. Přejdeme do adresáře, kam byl rozbalen archiv distribuce Firebird, zkontrolujeme a v případě potřeby nastavíme příznak „spustitelný“ skriptu install.sh:
chmod +x install.sh
spustíme instalační skript:
sudo ./install.sh
stisknutím klávesy Enter potvrdíme začátek instalace a při vyzvání zadáme heslo sysdba.
Instalační skript automaticky spouští systemd-unit firebird-superserver (implicitní architektura Firebird 3.0). Služba Firebird bude fungovat s výchozími parametry pro superserver: stránková cache o velikosti 2048 stránek (na databázi), buffer třídění o velikosti 64 MB (sdílený) a připojení pouze klientů třetí verze. Prohlédněte si parametry firebird.conf:
grep -v ^# firebird.conf | grep -v ^$
Je třeba mít na paměti, že nová nastavení z firebird.conf budou aktivována pouze po restartování služby Firebird.
Při výběru hodnot parametrů je třeba vzít v úvahu, že existují tři hlavní „spotřebitelé“: stránkový cache (pro databázi), buffer třídění (sdílený) a paměť přidělená serverem pro klientské připojení. Lze spravovat pouze první dva – objem paměti klientských připojení závisí na počtu a textu vyrovnaných dotazů, jejich plánech a zapojených objektech databáze. Odhad paměti klientských připojení se provádí pouze empiricky a může se měnit při změně klientských aplikací a/nebo objektů databáze.
Pro superserver na hostech s malým objemem paměti (do 12-16 GB) by nemělo být pro stránkový cache a buffer třídění přidělováno více než třetina až čtvrtina z celkového objemu RAM.
Pokud není počet databází pevně stanoven a může se měnit – celkový objem paměti stránkového cache by měl být dělen maximálním počtem databází, které mohou být na serveru. Velikost stránkového cache je určena ve stránkách a je nutné ji samostatně převést na bajty.
Pro přepnutí na architekturu klasika je třeba alespoň výslovně uvést ServerMode v firebird.conf, snížit tamtéž stránkový cache (ne více než 2K), snížit buffer třídění (souhrnný povolený objem veškerého třídění dělený maximálním počtem připojení), zakázat a zastavit jednotku firebird-superserver, povolit a spustit jednotku firebird-classic.socket.
Použití architektury superklasik ve Firebird 3.0 nemá zásadní smysl: „spolehlivost“ – jako u superserveru a stejný společný buffer třídění. Neexistuje žádný společný stránkový cache a „ztráty“ na synchronizaci různých připojení jsou stejné jako u klasika.
Je třeba mít na paměti, že ve Firebird 3.0 je možné část parametrů (stránkový cache, velikosti lok-filu, hash-tabulek a některé další) zadávat v databases.conf individuálně pro každou databázi. Pro superserver je užitečné například nastavit malé hodnoty DefaultDbCachePages v firebird.conf a nastavit individuální stránkové cache pro potřebné databáze v databases.conf.
Dotazy k článku směřujte do komentářů, nebo pište e-maily na naši podporu support@ibase.ru.
Zdroj: habr.com
