Ta strona została przetłumaczona maszynowo. Przeczytaj oryginał angielski. English

Biblioteka IBSurgeon

Jak zainstalować Firebird 3.0 i 4.0 na Linuxie

by Vasily Sidorov, 24 sie 2022

W tym artykule opisujemy instalację Firebird w wersjach 3 i 4 na popularnych wersjach Linuksa: CentOS 7, Oracle Linux 7/8, Debian 9/10, Ubuntu 18/20 oraz OpenSUSE 15.0.

Aby pobrać dystrybucję Firebird dla Linuksa, użyj archiwum tar z oficjalnej strony Firebird:

Zakładamy, że instalacja jest wykonywana jako root lub z uprawnieniami sudoera oraz że komputer z systemem Linux ma dostęp do Internetu.

Należy pamiętać, że niektóre polecenia wymagają wprowadzenia danych przez użytkownika. Linie zakończone średnikiem (;) oznaczają, że polecenie można uruchomić jako jednoliniowe.

Zalecamy również przeczytanie informacji o wydaniu (Release Notes) dla wersji Firebird, którą zamierzasz zainstalować.

Wymagania wstępne

Wymagania dotyczące bibliotek systemowych dla wersji 4.0.1 i 3.0 stały się takie same: statyczne linkowanie dla ncurses5 i tommath0 oraz dynamiczne dla ICU.

W zależności od dystrybucji, ncurses5 będzie biblioteką systemową (RH7/Debian) lub dostępną jako pakiet dla zachowania zgodności wstecznej (RH8/Debian).

Biblioteka tommath będzie w wersji 0 lub 1 (są one binarnie kompatybilne). Jeśli nie ma tommath0, utworzymy dowiązanie symboliczne.

Inne niezbędne narzędzia systemowe to tar i curl.

Instalujemy te pakiety jawnie, aby menedżer pakietów oznaczył je jako ręcznie kontrolowane i nie usuwał ich automatycznie.

Szybka instalacja

1. Określ maksymalną liczbę map.

Ten krok jest opcjonalny, ale wysoce zalecany dla systemów produkcyjnych:

Otwórz plik /etc/sysctl.conf i dodaj następującą linię:

Code
vm.max_map_count = 256000

następnie zastosuj

Code
sysctl -p /etc/sysctl.conf

2. Zainstaluj wymagane repozytorium dla libtommath

Dla CentOS 7

Code
yum install epel-release;

Dla CentOS 8

Code
dnf install epel-release;

Dla Oracle Linux 7

Code
yum install oracle-epel-release-el7;

Dla Oracle Linux 8

Code
dnf install oracle-epel-release-el8;

Dla innych dystrybucji wymagane pakiety powinny być dostępne w głównych repozytoriach.

3. Zainstaluj pakiety i narzędzia

CentOS 7 / Oracle Linux 7

Code
yum makecache;
yum install ncurses libicu libtommath;
yum install curl tar;

CentOS 8 / Oracle Linux 8

Code
dnf makecache;
dnf install ncurses-compat-libs libicu libtommath;
dnf install curl tar;

Debian 9/10, Ubuntu 18/20

Code
apt-get install libncurses5 libtommath1;
apt-get install curl tar;

Open SUSE 15

Code
zypper install libncurses5 libtommath1;
zypper install curl tar;

Wersja ICU może się różnić:

Debian 9

Code
apt-get install libicu57

Debian 10

Code
apt-get install libicu63

Ubuntu 18

Code
apt-get install libicu60

Ubuntu 20

Code
apt-get install libicu66

OpenSUSE 15.0

Code
zypper install libicu60_2

W dystrybucjach, które mają libtommath1 (wszystkie powyższe z wyjątkiem CentOS7 i Oracle Linux 7), konieczne jest utworzenie dowiązania symbolicznego libtommath.so.0:

Code
TM=libtommath.so;
for LIB in `find /lib* /usr/lib* -name ${TM}.1`;
do ln -s ${TM}.1 `dirname ${LIB}`/${TM}.0;
done;
unset TM;

Skrypt instalacyjny Firebird 4.0.1 i nowszych może automatycznie utworzyć dowiązanie symboliczne, ale dla Firebird 3 należy je utworzyć ręcznie.

4. Pobierz i zainstaluj Firebird

Po instalacji niezbędnych narzędzi i bibliotek możemy przejść do pobrania, rozpakowania i uruchomienia pakietu instalacyjnego.

Zakładamy, że DOWNLOADLINK to link z www.firebirdsql.org do pobrania odpowiedniego Firebird.

Code
curl -L DOWNLOADLINK | tar -zxC /tmp
cd /tmp/FIREBIRD_folder
sudo ./install.sh

Tutaj DOWNLOADLINK - link do tar.gz, a FIREBIRD_folder - Firebird-version.build-0.architecture

gdzie dystrybucja zostanie rozpakowana przez polecenie tar -zxC /tmp

To wszystko, co jest potrzebne do szybkiej instalacji Firebird 3 lub 4 na Linuksie.

Opcjonalnie możesz wygenerować optymalne pliki konfiguracyjne (firebird.conf i databases.conf) za pomocą Kalkulatora konfiguracji Firebird.

Więcej szczegółów na temat instalacji Firebird

Dla tych, którzy chcą lepiej skonfigurować instalację Firebird, przedstawiamy szczegółowe wyjaśnienie powyższych kroków.

Konfiguracja vm.max_map_count

Firebird od wersji 3 efektywnie wykorzystuje architekturę SuperServer z intensywnym dynamicznym przydzielaniem pamięci. W przypadku dużego obciążenia i wysokiej częstotliwości połączeń i rozłączeń, silnik może napotkać limity fragmentacji pamięci w systemie Linux, co zostanie pokazane jako błąd 11 (ENOMEM) lub błąd 12 (munmap) w firebird.log.

Limit fragmentacji pamięci jest kontrolowany przez parametr vm.max_map_count, który domyślnie ma wartość 65536.

Aby zachować to ustawienie po ponownym uruchomieniu serwera, dodaj następującą linię do /etc/sysctl.conf

Code
vm.max_map_count = 256000

Aby je zastosować, uruchom ponownie serwer lub wykonaj polecenie:

Code
sudo sysctl -p /etc/sysctl.conf

Planowanie miejsca na dysku

Ogólnie zalecamy przydzielenie 3 oddzielnych partycji na serwerze z bazą danych Firebird: dla plików tymczasowych, dla baz danych i dla lokalnych kopii zapasowych.

Partycja dla plików tymczasowych

Główne pliki tymczasowe to pliki blokad, pliki sortowania, pliki dla globalnych tabel tymczasowych i blobów oraz pliki z danymi monitorowania.

Domyślnie w systemie Linux pliki sortowania i pliki z danymi dla globalnych tabel tymczasowych znajdują się w /tmp, pliki dla danych mon$ i tabele blokad znajdują się w /tmp/firebird.

Jak określić odpowiedni rozmiar partycji dla plików tymczasowych?

Potencjalnie pliki sortowania i blobów mogą być dość duże, więc praktycznym zaleceniem jest posiadanie partycji dla plików tymczasowych dla systemu produkcyjnego z przyzwoitą liczbą użytkowników około 30-40 GB. Aby dokładniej określić odpowiedni rozmiar, zalecamy obserwowanie rzeczywistych rozmiarów plików tymczasowych.

Małym problemem w takim monitorowaniu jest to, że pliki sortowania są odłączane natychmiast po utworzeniu, więc nie można ich zobaczyć zwykłym poleceniem „ls”. Aby je zobaczyć, musimy sprawdzić deskryptory procesu (i będą one oznaczone jako usunięte) za pomocą następującego polecenia:

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

W wyniku tego polecenia zobaczymy zawartość pseudo-folderu /proc/…/fd/

Aby zobaczyć informacje o konkretnym pliku w tym folderze, należy użyć polecenia:

Code
sudo stat -L /proc/`pgrep firebird`/fd/NNNNN

gdzie NNNNN to deskryptor pliku.

Możesz użyć tego polecenia dla architektur SuperServer i SuperClassic, gdy silnik działa jako pojedynczy proces. Oczywiście zamiast pgrep firebird można podać numer procesu Firebird.

Partycja dla plików baz danych

Partycja dla plików baz danych powinna być wystarczająca do przechowywania wszystkich plików baz danych plus wolne miejsce równe rozmiarowi największej bazy danych, plus rezerwa na wzrost przez następne 2-3 lata.

Partycja dla lokalnych kopii zapasowych

Jako minimum, partycja dla lokalnych kopii zapasowych powinna być wystarczająca do przechowywania wszystkich lokalnych kopii zapasowych plus kopii zapasowej największej bazy danych.

Ponadto, aby wykonać przywracanie, na partycji z kopiami zapasowymi zalecamy dodatkowe wolne miejsce równe rozmiarowi największej bazy danych.

Więcej informacji na temat kopii zapasowych

Utwórz użytkownika firebird (opcjonalnie)

Skrypt instalacyjny tworzy, jeśli nie istnieje, użytkownika i grupę o nazwie „firebird”, aby wykonywać całą aktywność Firebird przy użyciu tego użytkownika (to najlepsza praktyka dla systemów Linux).

Oznacza to również, że pliki baz danych oraz foldery, w których znajdują się bazy danych i kopie zapasowe, powinny mieć właściciela lub uprawnienia dla tego użytkownika.

Czasami warto utworzyć użytkownika i grupę „firebird” przed instalacją:

Code
groupadd firebird &&
useradd -M -b /opt -s /sbin/nologin \
 -g firebird -u UID firebird

Dla użytkownika firebird nie tworzymy folderu domowego (przełącznik -M), określamy tylko folder bazowy (-b).

Powłoka nologin z przełącznikiem -s zapobiega standardowemu logowaniu do serwera.

Zainstaluj wymagane pakiety

Firebird 3.0 i 4.0 zależy od bibliotek ncurses (libncurses.so.5), ICU (bez linku do wersji i nie są one widoczne w wyjściu ldd) oraz tommath (libtommath.so.0).

W zależności od dystrybucji Linuksa musimy używać nazw bibliotek z wersjami lub bez. Praktyczne polecenia copy-paste pokazano powyżej, a poniżej je opisujemy.

CentOS i Oracle Linux

Wersja 7 zawiera wymagane pakiety domyślnie, wersja 8 wymaga instalacji ncurses-compat-libs i utworzenia dowiązania symbolicznego libtommath.so.0.

Debian, Ubuntu i OpenSUSE

W wersjach Debian 9 i 10, Ubuntu 18 i 20, OpenSUSE 15 musimy zainstalować libncurses5 i libtommath1, a aby zidentyfikować wersję ICU, możemy użyć wyszukiwania niepełnej nazwy:

w Ubuntu

Code
apt-cache search libicu5

w OpenSUSE 15

Code
zypper search libicu6

Szczegóły instalacji Firebird

Przed instalacją zwiększyliśmy parametr systemowy vm.max_map_count, zainstalowaliśmy biblioteki ICU, ncurses i tommath. Następnie sprawdziliśmy, czy mamy poprawne wersje ncurses i tommath (libncures.so.5 i libtommath.so.0) lub utworzyliśmy niezbędne dowiązania symboliczne.

Opcjonalnie mogliśmy utworzyć użytkownika i grupę firebird.

Następnie możemy zainstalować Firebird, w tym celu przechodzimy do folderu, w którym rozpakowano pakiet instalacyjny, i uruchamiamy instalację:

Code
./install.sh

naciśnij Enter, aby potwierdzić instalację, a po wyświetleniu monitu podaj hasło dla SYSDBA.

Początkowo Firebird zostanie zainstalowany z domyślnym plikiem konfiguracyjnym. Domyślna konfiguracja działa jako architektura SuperServer z umiarkowanymi wartościami: cache (DefaultDbCachePages, zwany także buforami stron) na bazę danych ustawiony na 2048, bufor dla sortowań (TempCacheLimit) wynosi 64M (dla serwera w v3 i na bazę danych w v4).

Aby wyświetlić nieskomentowane parametry firebird.conf, możesz użyć następującego polecenia:

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

Jeśli wygenerujesz optymalny plik konfiguracyjny za pomocą Kalkulatora konfiguracji Firebird lub ręcznie zmienisz parametry, pamiętaj, że zmiany zostaną zastosowane po ponownym uruchomieniu usługi Firebird (w przypadku SuperServer i SuperClassic, w przypadku Classic konieczny jest restart wszystkich procesów Firebird).

Należy pamiętać, że od Firebird 3 istnieją osobne jednostki systemd dla SuperServer, SuperClassic i Classic.