Instalacja Firebird 3 na nowoczesnych wersjach Linuksa: CentOS 8 i Ubuntu 19
(C) Basil Sidorov, IBSurgeon, 22-maj-2020
Ten artykuł poświęcony jest szybkiej instalacji Firebird 3.0 na nowych dystrybucjach Linuksa: CentOS 8 i Ubuntu 19 (działa również dla 18).
Pierwsza sekcja to szybki przewodnik instalacji Firebird 3.0 tak szybko, jak to możliwe, bez szczegółów. Druga część opisuje szczegóły.
Szybka instalacja Firebird 3 na CentOS 8 i Ubuntu 19
- Dodaj do pliku /etc/sysctl.conf następującą linię:
vm.max_map_count = 256000
- Zapisz sysctl.conf i zastosuj nowe ustawienia:
sudo sysctl -p /etc/sysctl.conf
Kolejne instrukcje są nieco inne dla CentOS 8 i Ubuntu 19.
Proszę zauważyć, że użyliśmy bezpośredniego linku do najnowszej wersji dystrybucji Firebird 3.0 z FirebirdSQL.org, obecnie (maj 2020) jest to 3.0.5, a oto link do wersji 64-bitowej:
https://github.com/FirebirdSQL/firebird/releases/download/R3.0.5/Firebird-3.0.5.33220-0.amd64.tar.gz
W przyszłości, gdy pojawi się 3.0.6 itd., będziesz musiał użyć poprawnego linku do nowej wersji - zostanie on opublikowany na www.firebirdsql.org.
- Zainstaluj pakiety
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
W rezultacie będziesz mieć wszystkie pliki instalacyjne Firebird gotowe w /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 następnie zainstaluj Firebird:
cd /tmp/Firebird-3.0.5.33220-0.amd64 sudo ./install.sh
następnie sprawdź, czy Firebird działa - poniższe polecenie pokaże wszystkie procesy związane z Firebird lub uruchomione przez użytkownika firebird:
ps aux | grep firebird
To wszystko, jeśli potrzebujesz tylko zainstalować Firebird 3.0.
Jeśli chcesz wiedzieć, co oznaczają powyższe polecenia, czytaj dalej!
Część główna: szczegóły instalacji Firebird 3 na Linuksie
W tym artykule zakładamy, że system operacyjny został zainstalowany w wersji minimalnej i masz już dostęp do publicznych repozytoriów lub ich lokalnych kopii.
Planowanie alokacji miejsca
Na serwerze przeznaczonym do obsługi baz danych Firebird zalecamy przydzielenie oddzielnych woluminów dla plików tymczasowych (/tmp), plików baz danych i lokalnych kopii zapasowych.
Wolumin dla plików tymczasowych
Pliki tymczasowe Firebird obejmują pliki blokad, pliki sortowania, pliki do „materializacji” globalnych tabel tymczasowych (GTT) oraz tabele monitorowania. Pliki sortowania i pliki GTT znajdują się w /tmp, pliki mon$- i blokad znajdują się w /tmp/firebird.
Pliki sortowania są odłączane natychmiast po utworzeniu, dlatego nie można ich zobaczyć w folderze (w przeciwieństwie do Windows) za pomocą polecenia ls.
Aby zobaczyć te pliki, musisz poprosić o uchwyty plików procesu Firebird (są one oznaczone jako usunięte):
sudo ls -lhF /proc/`pgrep firebird`/fd
Aby uzyskać szczegółowe informacje o konkretnym pliku sortowania, uruchom polecenie
sudo stat -L /proc/`pgrep firebird`/fd/NUMBER
gdzie NUMBER to deskryptor pliku.
Pliki tymczasowe mogą być duże, dlatego zaleca się przydzielenie 20-30 GB dla /tmp.
Proszę zauważyć, że rozmiar sortowania nie zależy od rozmiaru bazy danych: niektóre błędne zapytania z iloczynem kartezjańskim mogą łatwo wygenerować plik sortowania o rozmiarze 100 GB dla bazy danych o rozmiarze 3 MB.
Wolumin dla plików baz danych
Wolumin dla plików baz danych powinien być wystarczająco duży, aby pomieścić wszystkie pliki baz danych plus, jako minimum, rozmiar największej bazy danych, na wypadek manipulacji w miejscu.
Pamiętaj również, że bazy danych rosną z czasem, więc zarezerwuj trochę wolnego miejsca również dla nich.
Zdecydowanie zaleca się umieszczenie woluminu dla plików baz danych na najszybszym dysku/SAN/sprzęcie, jaki posiadasz, o najwyższej wydajności losowego wejścia/wyjścia.
Wolumin dla lokalnych plików kopii zapasowych
Wolumin dla lokalnych plików kopii zapasowych powinien być wystarczająco duży, aby pomieścić kopie zapasowe wszystkich baz danych plus rozmiar największego pliku bazy danych (nie kopii zapasowej - to na wypadek testowego przywrócenia). Oczywiście pamiętaj o wzroście kopii zapasowych baz danych. Wolumin dla lokalnych plików kopii zapasowych może znajdować się na stosunkowo wolnych dyskach. Pliki kopii zapasowych Firebird mają strukturę liniową, więc dla dysku kopii zapasowych wystarczy wysoka prędkość sekwencyjna.
Przygotowanie
Silnik Firebird dynamicznie alokuje i zwalnia pamięć, co może prowadzić do fragmentacji pamięci.
Na przykład może się to zdarzyć po rozłączeniu wielu użytkowników z instancji Firebird SuperServer. Fragmentacja pamięci jest kontrolowana przez parametr systemowy vm.max_map_count, który ma domyślną wartość 65K. Zaleca się zwiększenie go co najmniej 4-krotnie i uczynienie tego ustawienia stałym.
Dodaj następującą linię do /etc/sysctl.conf:
vm.max_map_count = 256000
i zastosuj ją
sudo sysctl -p /etc/sysctl.conf
Instalacja niezbędnych pakietów
Firebird 3 zależy od kilku pakietów Linuksa: ncurses, ICU, tommath. Potrzebujemy również narzędzi gzip, tar oraz curl lub wget.
CentOS 8
CentOS używa nowego menedżera pakietów dnf, który jest wywoływany przez yum w sposób przezroczysty. Lubimy yum, więc użyjmy yum. Najpierw odśwież cache metadanych:
sudo yum makecache
Pakiet libtommath znajduje się w oddzielnym repozytorium EPEL (E(xtra)P(ackages for)E(nterprise)L(inux)), więc musimy sprawdzić, czy jest włączony:
yum -C repolist
Opcja -C (–cache-only) sprawia, że yum używa tylko cache.
Jeśli nie widzisz repozytorium epel w wyniku yum -C repolist, zainstaluj je:
sudo yum install epel-release && sudo yum makecache
W przypadku problemów edytuj plik /etc/yum.repos.d/epel.repo i zamień https:// na http://, a następnie spróbuj ponownie yum makecache.
Następnie sprawdźmy, czy mamy wszystkie niezbędne pakiety (64-bitowe w przykładzie):
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
Instalacja brakujących pakietów 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]
Instalacja brakujących pakietów na Ubuntu 19:
sudo apt‑get install libncurses5 libtommath1
Tworzenie dowiązań symbolicznych
Libtommath.so.1 i libncurses.so.6 są kompatybilne z libtommath.so.0 i libncurses.so.5, wystarczy, że Firebird utworzy dowiązania symboliczne do istniejących wersji bibliotek.
Najpierw znajdźmy libtommath.so.1 (libncurses.so.? znajduje się w tym samym folderze):
find /usr -name libtommath.so.1
Na CentOS8 znajduje się w:
/usr/lib64/libtommath.so.1
Na Ubuntu 19:
/usr/lib/x86_64-linux-gnu/libtommath.so.1
Utwórzmy dowiązania symboliczne
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
aby sprawdzić wyniki:
ls -lhF $(dirname `find /usr -name libtommath.so.1`) | grep "lib\(ncurses\|tommath\)\.so\."
na CentOS8 daje:
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 daje:
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
Pobieranie wersji wydania Firebird 3.0
Wydania Firebird dla Linuksa są dostępne na www.firebirdsql.org jako archiwa tar.gz. Załóżmy, że URL to link do pobrania archiwum tar.gz wydania Firebird. Musimy pobrać i rozpakować archiwum, do czego możemy użyć curl lub wget.
curl
curl -L URL | tar -zxC /tmp
wget
wget -O- URL | tar -zxC /tmp
W rezultacie zostanie utworzony folder /tmp/Firebird‑3.0.5.33220‑0.amd64 z 3 plikami: install.sh, buildroot.tar.gz i manifest.txt.
Instalacja Firebird
Jako wymagania wstępne ustawiliśmy vm.max_map_count, sprawdziliśmy i zainstalowaliśmy ICU, ncurses i tommath oraz utworzyliśmy dowiązania symboliczne.
Następnie ostatni krok jest łatwy - uruchom
sudo ./install.sh
Ten skrypt uruchamia jednostkę systemową firebird-superserver i Firebird jest gotowy do pracy.
Plik konfiguracyjny i jego optymalizacja
Proszę zauważyć, że domyślny plik konfiguracyjny Firebird firebird.conf jest skonfigurowany w bardzo skromny sposób. Możesz sprawdzić zawartość firebird.conf (linie niekomentowane) za pomocą polecenia:
grep -v ^# firebird.conf | grep -v ^$
Dla domyślnego firebird.conf powyższe polecenie nic nie zwróci, co oznacza, że wszystkie wartości są domyślne.
Jeśli konfigurujesz system produkcyjny, rozważ użycie zoptymalizowanych plików konfiguracyjnych Firebird: /pl/optimized-firebird-configuration/
Często zadawane pytanie #1
Częstym pytaniem jest „dlaczego po prostu nie użyć repozytorium i nie zainstalować Firebird za pomocą yum lub apt?”. Oczywiście jest to możliwe, ale są 2 duże powody:
-
repozytorium może zawierać starą wersję (tj. poprzednie wydanie mniejsze),
-
lubimy kontrolować środowisko, aby upewnić się, że wszystko jest zainstalowane i skonfigurowane poprawnie.
Ponadto preferujemy instalację do /opt, co ułatwia tworzenie skryptów międzyplatformowych i jest dobrą praktyką administracyjną.
Kontakt
Prosimy o przesyłanie pytań, sugestii i ewentualnych błędów na adres [email protected]