Instalowanie Firebird 3 w nowoczesnych wersjach Linuksa: CentOS8 i Ubuntu 19

W tym artykule opiszemy minimalny zestaw działań wymaganych do optymalnej instalacji Firebird DBMS w wersji 3.0 na nowych dystrybucjach Linuksa. Jako przykłady wybrano CentOS 8 i Ubuntu 19.

Aby „dostarczyć” dystrybucję Firebird do systemu docelowego, w tym przewodniku wybrano opcję pobrania archiwum tar.gz za pomocą łącza z oficjalnej strony projektu (firebirdsql.org).

Dla najbardziej niecierpliwych, idź prosto do bitwy:

Szybka instalacja

Edycja pliku /etc/sysctl.confdodając linię:

vm.max_map_count = 256000

Zapisz plik i zastosuj ustawienie:

sudo sysctl -p /etc/sysctl.conf

Dalsze instrukcje różnią się w przypadku CentOS 8 i Ubuntu 19, ale ССЫЛКА и КАТАЛОГ wskaż link z oficjalnej strony projektu Firebird do pobrania dystrybucji oraz katalog, do którego dystrybucja zostanie rozpakowana podczas procesu pobierania.
Obecnie (marzec 2020) aktualna wersja to Firebird 3.0.5 (tutaj jest link do wersji 64-bitowej).

8 CentOS

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

Rzeczywista instalacja DBMS Firebird:

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

Jeśli chcesz lepiej zrozumieć, do czego służą te działania, czytaj dalej.

Główna część

Krótka preambuła

Zakłada się, że system operacyjny jest już zainstalowany w wersji minimalnej i skonfigurowany jest dostęp do repozytoriów publicznych lub ich lokalnych kopii.

Zakłada się, że czytelnik posiada podstawową wiedzę o Linuksie i systemie DBMS Firebird.

planowanie

Na serwerze DBMS zaleca się wydzielenie osobnych sekcji na pliki tymczasowe (/tmp), pliki baz danych i lokalne kopie zapasowe.

Do tymczasowych należą pliki blokujące, pliki sortujące, pliki „materializacji” globalnych tabel tymczasowych (GTT) i tabele monitorowania. Pliki do sortowania i globalne tabele tymczasowe znajdują się w /tmp, pliki mon$-table i pliki blokujące – w /tmp/firebird.

Sortowane pliki są „usuwane” (unlink) zaraz po utworzeniu, więc nie można ich „zobaczyć” na liście katalogów - jedynie na liście uchwytów procesów (oznaczonych jako deleted):

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

Na liście pseudokatalogów /proc/…/fd/ wyświetlane są dowiązania symboliczne, a rzeczywistą informację o pliku podaje:

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

gdzie НОМЕР – deskryptor (deskryptor) interesującego nas pliku.

Zamiast dzwonić”pgrep исполняемый-файл„Możesz od razu zastąpić identyfikator interesującego Cię procesu.

Pliki tymczasowe mogą być bardzo duże, więc /tmp Zaleca się przydzielenie co najmniej 20-30 GB. Należy wziąć pod uwagę, że rozmiar sortowanych plików zależy jedynie od ilości danych posortowanych jawnie lub pośrednio w żądaniu, a pojedynczy użytkownik może „utworzyć” gigabajty plików tymczasowych.

Sekcja plików bazy danych musi pomieścić wszystkie pliki bazy danych. plus co najmniej kopia największego pliku bazy danych. Należy wziąć pod uwagę rozwój plików baz danych w przyszłości przez kilka kolejnych lat.

Sekcja lokalnych kopii zapasowych musi zawierać co najmniej jedno archiwum kopii zapasowych wszystkich baz danych oraz kopię zapasową największej bazy danych. Pożądane jest, aby ta sekcja zawierała również miejsce na przywracanie największej bazy danych. Należy wziąć pod uwagę rozwój kopii zapasowych i archiwów kopii zapasowych w przyszłości na kilka lat.

Wstępne przygotowanie

Serwer DBMS Firebird 3.0 dynamicznie przydziela i zwalnia pamięć systemową, co może prowadzić do jej fragmentacji. Na przykład, gdy duża liczba użytkowników zostanie jednocześnie odłączona od superserwera, mogą wystąpić błędy podczas nawiązywania nowych połączeń.

Fragmentacja pamięci jest kontrolowana przez parametr systemowy vm.max_map_count, wartość domyślna to 64 KB. Zaleca się czterokrotne zwiększenie jego wartości:

sudo sysctl vm.max_map_count=256000

Aby nowa wartość została ustawiona przy ponownym uruchomieniu systemu, dodaj do pliku /etc/sysctl.conf linia:

vm.max_map_count = 256000

Wskazane jest dodanie komentarza, aby była jasna przyczyna zmiany tego parametru. Możesz najpierw edytować plik, a następnie zastosować zapisane w nim ustawienia:

sudo sysctl -p /etc/sysctl.conf

Instalowanie wymaganych pakietów

Pliki wykonywalne systemu DBMS Firebird 3.0 Linux zależą od bibliotek ncurses (libncurses.so.5), ICU (niepowiązane z wersją i nie wyświetlane na wyjściu ldd) i Tommat (libtommath.so.0). Aby pobrać i rozpakować archiwum montażu, będziesz potrzebować narzędzi gzip, tar и curl lub wget. wersje ICU, gzip, tar и curl/wget – są nieznaczne.

Praca z pakietami zależy od systemu i menedżera pakietów używanego w systemie, dlatego rozważymy je jeden po drugim.

8 CentOS

CentOS 8 korzysta z nowego menedżera pakietów – dnf i z polecenia nazywa się to „przezroczystym”. yum. Ponieważ dla naszych celów nie ma między nimi różnicy - w przykładach będzie yum.

Zaktualizuj pamięć podręczną metadanych: sudo yum makecache

Pakiet libtomath znajduje się w osobnym repozytorium E(xtra)P(ackages for)E(nterprise)L(inux), więc sprawdzamy, czy jest już zawarty:

yum -C repolist

Opcja „tylko z pamięci podręcznej” (-C lub --cache-only) służy do eliminacji niepotrzebnych kontroli i pobierania, dzięki czemu yum jest szybsze. Jeśli na liście nie ma repozytorium epel, zainstaluj je i zaktualizuj pamięć podręczną metadanych:

sudo yum install epel-release &&
sudo yum makecache

W razie potrzeby potwierdzamy prośby, sprawdzając wartości kluczy pgp z tymi, które są już znane z zaufanego źródła.

Jeżeli występują problemy z ładowaniem metainformacji repozytorium z zasobów https należy dokonać edycji pliku /etc/yum.repos.d/epel.repo, zastępowanie https:// na http:// i powtórz polecenie aktualizacji pamięci podręcznej.

Sprawdzamy status wymaganych pakietów (polecenie jest skomplikowane, w przykładowym wyjściu filtrowany jest pakiet 32-bitowy):

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

Widzimy to curl, gzip и ncurses hostowane w pseudorepozytorium instalatora (anaconda) i tar – wyłączone z minimalnej instalacji systemu. Główne wersje libncurses и libtommath więcej niż potrzeba: odpowiednio 6 i 1 zamiast 5 i 0. Jeśli ten sam pakiet jest zainstalowany i dostępny, wydano dla niego aktualizację. Zainstaluj brakujące pakiety:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Narzędzia służą do zarządzania pakietami apt, apt‑get и apt‑cache. Pierwsza przeznaczona jest do pracy interaktywnej, a dwie ostatnie przeznaczone są do wykorzystania w skryptach. Nazwy pakietów są nieco inne i obejmują wersję.

Sprawdzamy status wymaganych pakietów (polecenie jest łączone, przykładowe wyjście jest skracane, a pakiety 32-bitowe są odfiltrowywane):

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]

Pakiety, dla których wskazują nawiasy kwadratowe installed/upgradable – zainstalowany. Dostępne, ale nie zainstalowane ncurses5, zamiast curl zainstalowany wget. Zainstaluj brakujące pakiety:

sudo apt‑get install 
libncurses5 libtommath1

Tworzenie dowiązań symbolicznych

Ponieważ libtommath.so.1 и libncurses.so.6 wstecznie kompatybilny z libtommath.so.0 и libncurses.so.5, to w przypadku Firebirda wystarczy utworzyć dowiązania symboliczne do istniejących wersji bibliotek.

Znaleźliśmy libtommath.so.1 (libncurses.so.? znajduje się w tym samym katalogu):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Tworzymy dowiązania symboliczne.

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

Sprawdźmy wynik (polecenie jest skomplikowane, przykłady wyjściowe są skrócone):

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

Pobieranie pakietu dystrybucyjnego Firebird DBMS.

Oficjalna strona projektu Firebird (firebirdsql.org) publikuje linki do dystrybucji „oficjalnych” wydań i „codziennych” kompilacji (kompilacji migawkowych).

Oficjalne wydania Linuksa są dostępne jako archiwa (tar.gz) i pakiety deb/rpm, ale kompilacje są dostępne tylko jako archiwa. Rozważymy „ogólny instalator” (ogólny instalator z tar.gz).

Archiwum kompilacji należy pobrać i rozpakować, ale połączymy oba procesy. Rozpakowywanie odbywa się w /tmp,URL oznacza link do archiwum do pobrania.

kędzior:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Domyślnie curl wysyła pobrane dane na standardowe wyjście, ale nie obsługuje przekierowań i dodajemy „‑L", ale wget, wręcz przeciwnie: obsługuje przekierowania, ale zapisuje dane do pliku i wstawiamy „‑O‑”. Do tar wskazać użycie gzip-filter i katalog, do którego zostanie wykonane rozpakowanie. Po zakończeniu procesu pojawi się taki katalog Firebird‑3.0.5.33220‑0.amd64 z trzema plikami: install.sh, buildroot.tar.gz и manifest.txt.

Instalowanie Firebirda

Podczas wstępnych przygotowań dostosowaliśmy wartość parametru systemowego vm.max_map_count, sprawdziłem dostępność i zainstalowałem biblioteki ICU, ncurses i tommath. Upewnij się, że wersje ncurses i tommath są poprawne (libncures.so.5 и libtommath.so.0) i utworzyłem niezbędne dowiązania symboliczne.

Rzeczywista instalacja jest bardzo prosta. Przejdź do katalogu, w którym rozpakowano archiwum dystrybucyjne Firebird, sprawdź i w razie potrzeby ustaw dla skryptu flagę „wykonywalny” install.sh:

chmod +x install.sh

uruchom skrypt instalacyjny:

sudo ./install.sh

Naciskając klawisz Enter potwierdzamy rozpoczęcie instalacji, a po otrzymaniu żądania wprowadzamy hasło sysdba.

Skrypt instalacyjny zostanie uruchomiony automatycznie systemd-jednostka firebird-superserver (cicha architektura Firebird 3.0). Usługa Firebird będzie działać z domyślnymi parametrami superserwera: pamięcią podręczną stron wynoszącą 2048 stron (na bazę danych), buforem sortującym 64 MB (współdzielonym) i podłączeniem tylko klientów w wersji XNUMX. Zobacz opcje firebird.conf:

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

Należy pamiętać, że nowe wartości z firebird.conf zostanie aktywowany dopiero po ponownym uruchomieniu usługi Firebird.

Dobierając wartości parametrów należy wziąć pod uwagę, że istnieją trzej główni „konsumenci”: pamięć podręczna stron (dla bazy danych), bufor sortowania (współdzielony) oraz pamięć przydzielana przez serwer na połączenia klientów. Możesz zarządzać tylko dwoma pierwszymi - ilość pamięci dla połączeń klientów zależy od liczby i tekstu zapytań w pamięci podręcznej, ich planów oraz obiektów bazy danych biorących udział w zapytaniach. Szacunki dotyczące pamięci połączenia klienta są dokonywane wyłącznie empirycznie i mogą się zmieniać wraz ze zmianami aplikacji klienckich i/lub obiektów bazy danych.

W przypadku superserwera na hostach z małą ilością pamięci (do 12-16 GB) nie należy przydzielać więcej niż jednej trzeciej lub jednej czwartej całkowitej ilości pamięci RAM na pamięć podręczną stron i bufor sortowania.

Jeżeli liczba baz danych nie jest stała i może się zmieniać, całkowitą ilość pamięci podręcznej stron należy podzielić przez maksymalną liczbę baz danych, które mogą znajdować się na serwerze. Rozmiar pamięci podręcznej strony jest podawany w stronach i należy go osobno przeliczyć na bajty.

Aby przełączyć się na architekturę klasyczną, należy co najmniej wyraźnie określić ServerMode в firebird.conf, zmniejsz tam pamięć podręczną stron (nie więcej niż 2K), zmniejsz bufor sortowania (całkowity dopuszczalny wolumen wszelkiego rodzaju podzielony przez maksymalną liczbę połączeń), wyłącz i zatrzymaj jednostkę firebird-superserver, włącz i uruchom urządzenie firebird-classic.socket.

Używanie superklasycznej architektury w Firebird 3.0 nie ma większego sensu: „niezawodność” jest jak superserwer i ten sam ogólny bufor sortujący. Nie ma wspólnej pamięci podręcznej stron, a „straty” przy synchronizacji różnych połączeń między sobą są takie same jak w klasycznym.

Należy pamiętać, że w Firebird 3.0 niektóre parametry (pamięć podręczna strony, rozmiary plików blokujących, tablice mieszające i inne) można ustawić w databases.conf indywidualnie dla każdej bazy danych. W przypadku superserwera przydatne jest na przykład ustawienie małej wartości DefaultDbCachePages в firebird.conf i zainstaluj indywidualne pamięci podręczne stron dla wymaganych baz danych w databases.conf.

Zadawaj pytania dotyczące artykułu w komentarzach lub pisz listy na nasz adres wsparcia [email chroniony].

Źródło: www.habr.com

Dodaj komentarz