Ова страница је машински преведена. Прочитајте енглески оригинал. English

IBSurgeon библиотека

Како инсталирати Firebird 3.0 и 4.0 на Linux

аутор Василиј Сидоров, 24. август 2022.

У овом чланку описујемо инсталацију Firebird верзија 3 и 4 на популарним Linux верзијама: CentOS 7, Oracle Linux 7/8, Debian 9/10, Ubuntu18/20 и OpenSUSE15.0.

Да бисте добили Firebird дистрибуцију за Linux, користите tar архиву са званичног Firebird веб сајта:

Претпостављамо да се инсталација врши или као root или са sudoer налогом, и да Linux рачунар има приступ интернету.

Имајте на уму да неке команде захтевају унос од корисника. Имајте на уму да редови са тачком-запетом (;) на крају значе да се команда може покренути као једна линија.

Такође, препоручујемо читање Release Notes за верзију Firebird-а коју намеравате да инсталирате.

Предуслови

Системске библиотеке за 4.0.1 и 3.0 постале су исте: статичко повезивање за ncurses5 и tommath0 и динамичко за ICU.

У зависности од дистрибуције, ncurses5 ће бити системска библиотека (RH7/Debian) или доступна као пакет за компатибилност уназад (RH8/Debian).

Библиотека tommath ће бити верзија 0 или верзија 1 (бинарно су компатибилне). Ако нема tommath0, направићемо симболички линк.

Остали потребни системски алати су tar и curl.

Ове пакете инсталирамо експлицитно како би менаџер пакета означио их као ручно контролисане и не би их аутоматски деинсталирао.

Брза инсталација

1. Одредите максималан број мапа.

Овај корак је опциони, али веома препоручљив за продукционе системе:

Отворите датотеку /etc/sysctl.conf и додајте следећи ред:

Code
vm.max_map_count = 256000

затим примените

Code
sysctl -p /etc/sysctl.conf

2. Инсталирајте потребно репозиторијум за libtommath

За CentOS 7

Code
yum install epel-release;

За CentOS 8

Code
dnf install epel-release;

За Oracle Linux 7

Code
yum install oracle-epel-release-el7;

За Oracle Linux 8

Code
dnf install oracle-epel-release-el8;

За остале дистрибуције потребни пакети би требало да буду доступни у главним репозиторијумима.

3. Инсталирајте пакете и алате

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;

Верзија ICU-а може варирати:

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

У дистрибуцијама које имају libtommath1 (све горе наведене осим CentOS7 и Oracle Linux 7) потребно је направити симболички линк 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;

Инсталациони скрипт Firebird 4.0.1 и новијих може аутоматски направити симболички линк, али за Firebird 3 треба га направити ручно.

4. Преузмите и инсталирајте Firebird

Након инсталације потребних алата и библиотека можемо наставити са преузимањем, распакивањем и покретањем инсталационог пакета.

Претпостављамо да је DOWNLOADLINK линк са www.firebirdsql.org за преузимање потребног Firebird-а.

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

Овде DOWNLOADLINK - линк ка tar.gz, а FIREBIRD_folder - Firebird-version.build-0.architecture

где ће дистрибуција бити распакована командом tar -zxC /tmp

То је све што је потребно за брзу инсталацију Firebird 3 или 4 на Linux-у.

Опционо, можете генерисати оптималне конфигурационе датотеке (firebird.conf и databases.conf) помоћу Firebird Configuration Calculator.

Више детаља о Firebird инсталацији

За оне који желе боље конфигурисати Firebird инсталацију пружамо детаљно објашњење горе наведених корака.

Конфигурација vm.max_map_count

Firebird од верзије 3 ефикасно користи SuperServer архитектуру са интензивном динамичком алокацијом меморије. У случају високог оптерећења и високе учесталости конекција и дисконекција, мотор може наићи на лимите фрагментације меморије на Linux-у, што ће се показати као грешка 11 (ENOMEM) или грешка 12 (munmap) у firebird.log.

Лимит фрагментације меморије контролише параметар vm.max_map_count, који подразумевано има вредност 65536.

Да бисте задржали ово подешавање након поновног покретања сервера, додајте следећи ред у /etc/sysctl.conf

Code
vm.max_map_count = 256000

Да бисте га применили, или поново покрените сервер или покрените команду:

Code
sudo sysctl -p /etc/sysctl.conf

Планирање простора на диску

Генерално, препоручујемо да на серверу са Firebird базом података издвојите 3 одвојене партиције: за привремене датотеке, за базе података и за локалне резервне копије.

Партиција за привремене датотеке

Главне привремене датотеке су lock-датотеке, датотеке за сортирање, датотеке за глобалне привремене табеле и blob-ове, датотеке са подацима за праћење.

Подразумевано, на Linux-у датотеке за сортирање и датотеке са подацима за глобалне привремене табеле налазе се у /tmp, датотеке за mon$ податке и lock табеле су у /tmp/firebird.

Како одредити одговарајућу величину за партицију са привременим датотекама?

Потенцијално, датотеке за сортирање и blob датотеке могу бити прилично велике, па је практична препорука да партиција за привремене датотеке за продукциони систем са пристојним бројем корисника буде око 30-40Gb. Да бисте прецизније одредили одговарајућу величину, препоручујемо да пратите стварне величине привремених датотека.

Мали проблем за такво праћење је што се датотеке за сортирање одмах након креирања одвајају (unlink), па их није могуће видети уобичајеном „ls“ командом. Да бисте их видели, потребно је проверити дескрипторе процеса (и биће означени као обрисани) следећом командом:

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

Као резултат ове команде, видећемо садржај псеудо-фолдера /proc/…/fd/

Да бисте видели информације о одређеној датотеци у овом фолдеру, потребно је користити команду:

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

где је NNNNN дескриптор датотеке.

Ову команду можете користити за SuperServer и SuperClassic архитектуре, када мотор ради као један процес. Наравно, уместо pgrep firebird могуће је навести број процеса Firebird-а.

Партиција за датотеке база података

Партиција за датотеке база података треба да буде довољна да смести све датотеке база података плус слободан простор једнак величини највеће базе, плус резерву за раст у наредне 2-3 године.

Партиција за локалне резервне копије

Као минимум, партиција за локалне резервне копије треба да буде довољна да смести све локалне резервне копије плус резервну копију највеће базе.

Такође, да бисте извршили рестаурације, на партицији са резервним копијама препоручујемо да имате додатни слободан простор, једнак величини највеће базе.

Више о резервним копијама

Креирање firebird корисника (опционо)

Инсталациони скрипт креира, ако не постоји, корисника и групу под именом „firebird“ како би се све Firebird активности обављале под овим корисником (ово је најбоља пракса за Linux системе).

То такође значи да датотеке база података и фолдери где се налазе базе и резервне копије треба да имају власништво или дозволе за овог корисника.

Понекад има смисла креирати корисника и групу „firebird“ пре инсталације:

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

За firebird корисника не креирамо home фолдер (прекидач -M), наводимо само основни фолдер (-b).

Shell nologin са прекидачем -s спречава стандардну пријаву на сервер.

Инсталација потребних пакета

Firebird 3.0 и 4.0 зависе од библиотека ncurses (libncurses.so.5), ICU (без везе са верзијом, и нису приказане у ldd излазу), и tommath (libtommath.so.0).

У зависности од дистрибуције Линукса, морамо користити називе библиотека са или без верзија. Практичне copy-paste команде су приказане изнад, а испод их описујемо.

CentOS и Oracle Linux

Верзија 7 садржи потребне пакете подразумевано, верзија 8 захтева инсталацију ncurses-compat-libs и креирање symlink-а libtommath.so.0.

Debian, Ubuntu и OpenSUSE

У верзијама Debian 9 и 10, Ubuntu 18 и 20, OpenSUSE 15 морамо инсталирати libncurses5 и libtommath1, а за идентификацију верзије ICU можемо користити претрагу за непотпуним именом:

у Ubuntu-у

Code
apt-cache search libicu5

у OpenSUSE 15

Code
zypper search libicu6

Детаљи инсталације Firebird-а

Пре инсталације повећали смо системски параметар vm.max_map_count, инсталирали библиотеке ICU, ncurses и tommath. Затим смо проверили да имамо исправне верзије ncurses и tommath (libncures.so.5 и libtommath.so.0) или креирали потребне symlink-ове.

Опционо, могли смо креирати корисника и групу firebird.

Након тога можемо инсталирати Firebird, за то идемо у фолдер где је инсталациони пакет распакован и покрећемо инсталацију:

Code
./install.sh

притисните Enter да потврдите инсталацију, и када се затражи, наведите лозинку за SYSDBA.

У почетку ће Firebird бити инсталиран са подразумеваном конфигурационом датотеком. Подразумевана конфигурација ради као архитектура SuperServer са скромним вредностима: кеш (DefaultDbCachePages, такође назван Page buffers) по бази је постављен на 2048, бафер за сортирање (TempCacheLimit) је 64M (за сервер у v3 и по бази у v4).

За преглед некоментарисаних параметара firebird.conf, можете користити следећу команду:

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

Ако ћете генерисати оптималну конфигурациону датотеку помоћу Firebird Configuration Calculator-а или ручно променити параметре, имајте на уму да ће промене бити примењене након рестарта Firebird сервиса (у случају SuperServer и SuperClassic, у случају Classic потребан је рестарт свих Firebird процеса).

Имајте на уму да од Firebird 3 постоје одвојене systemd јединице за SuperServer, SuperClassic и Classic.