Како инсталирати 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 веб сајта:
- Firebird 4: https://firebirdsql.org/en/firebird-4-0/
- Firebird 3: https://firebirdsql.org/en/firebird-3-0/
Претпостављамо да се инсталација врши или као 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 и додајте следећи ред:
vm.max_map_count = 256000
затим примените
sysctl -p /etc/sysctl.conf
2. Инсталирајте потребно репозиторијум за libtommath
За CentOS 7
yum install epel-release;
За CentOS 8
dnf install epel-release;
За Oracle Linux 7
yum install oracle-epel-release-el7;
За Oracle Linux 8
dnf install oracle-epel-release-el8;
За остале дистрибуције потребни пакети би требало да буду доступни у главним репозиторијумима.
3. Инсталирајте пакете и алате
CentOS 7 / Oracle Linux 7
yum makecache;
yum install ncurses libicu libtommath;
yum install curl tar;
CentOS 8 / Oracle Linux 8
dnf makecache;
dnf install ncurses-compat-libs libicu libtommath;
dnf install curl tar;
Debian 9/10, Ubuntu 18/20
apt-get install libncurses5 libtommath1;
apt-get install curl tar;
Open SUSE 15
zypper install libncurses5 libtommath1;
zypper install curl tar;
Верзија ICU-а може варирати:
Debian 9
apt-get install libicu57
Debian 10
apt-get install libicu63
Ubuntu 18
apt-get install libicu60
Ubuntu 20
apt-get install libicu66
OpenSUSE 15.0
zypper install libicu60_2
У дистрибуцијама које имају libtommath1 (све горе наведене осим CentOS7 и Oracle Linux 7) потребно је направити симболички линк libtommath.so.0:
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-а.
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
vm.max_map_count = 256000
Да бисте га применили, или поново покрените сервер или покрените команду:
sudo sysctl -p /etc/sysctl.conf
Планирање простора на диску
Генерално, препоручујемо да на серверу са Firebird базом података издвојите 3 одвојене партиције: за привремене датотеке, за базе података и за локалне резервне копије.
Партиција за привремене датотеке
Главне привремене датотеке су lock-датотеке, датотеке за сортирање, датотеке за глобалне привремене табеле и blob-ове, датотеке са подацима за праћење.
Подразумевано, на Linux-у датотеке за сортирање и датотеке са подацима за глобалне привремене табеле налазе се у /tmp, датотеке за mon$ податке и lock табеле су у /tmp/firebird.
Како одредити одговарајућу величину за партицију са привременим датотекама?
Потенцијално, датотеке за сортирање и blob датотеке могу бити прилично велике, па је практична препорука да партиција за привремене датотеке за продукциони систем са пристојним бројем корисника буде око 30-40Gb. Да бисте прецизније одредили одговарајућу величину, препоручујемо да пратите стварне величине привремених датотека.
Мали проблем за такво праћење је што се датотеке за сортирање одмах након креирања одвајају (unlink), па их није могуће видети уобичајеном „ls“ командом. Да бисте их видели, потребно је проверити дескрипторе процеса (и биће означени као обрисани) следећом командом:
sudo ls -lhF /proc/`pgrep firebird`/fd
Као резултат ове команде, видећемо садржај псеудо-фолдера /proc/…/fd/
Да бисте видели информације о одређеној датотеци у овом фолдеру, потребно је користити команду:
sudo stat -L /proc/`pgrep firebird`/fd/NNNNN
где је NNNNN дескриптор датотеке.
Ову команду можете користити за SuperServer и SuperClassic архитектуре, када мотор ради као један процес. Наравно, уместо pgrep firebird могуће је навести број процеса Firebird-а.
Партиција за датотеке база података
Партиција за датотеке база података треба да буде довољна да смести све датотеке база података плус слободан простор једнак величини највеће базе, плус резерву за раст у наредне 2-3 године.
Партиција за локалне резервне копије
Као минимум, партиција за локалне резервне копије треба да буде довољна да смести све локалне резервне копије плус резервну копију највеће базе.
Такође, да бисте извршили рестаурације, на партицији са резервним копијама препоручујемо да имате додатни слободан простор, једнак величини највеће базе.
Више о резервним копијама
Креирање firebird корисника (опционо)
Инсталациони скрипт креира, ако не постоји, корисника и групу под именом „firebird“ како би се све Firebird активности обављале под овим корисником (ово је најбоља пракса за Linux системе).
То такође значи да датотеке база података и фолдери где се налазе базе и резервне копије треба да имају власништво или дозволе за овог корисника.
Понекад има смисла креирати корисника и групу „firebird“ пре инсталације:
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-у
apt-cache search libicu5
у OpenSUSE 15
zypper search libicu6
Детаљи инсталације Firebird-а
Пре инсталације повећали смо системски параметар vm.max_map_count, инсталирали библиотеке ICU, ncurses и tommath. Затим смо проверили да имамо исправне верзије ncurses и tommath (libncures.so.5 и libtommath.so.0) или креирали потребне symlink-ове.
Опционо, могли смо креирати корисника и групу firebird.
Након тога можемо инсталирати Firebird, за то идемо у фолдер где је инсталациони пакет распакован и покрећемо инсталацију:
./install.sh
притисните Enter да потврдите инсталацију, и када се затражи, наведите лозинку за SYSDBA.
У почетку ће Firebird бити инсталиран са подразумеваном конфигурационом датотеком. Подразумевана конфигурација ради као архитектура SuperServer са скромним вредностима: кеш (DefaultDbCachePages, такође назван Page buffers) по бази је постављен на 2048, бафер за сортирање (TempCacheLimit) је 64M (за сервер у v3 и по бази у v4).
За преглед некоментарисаних параметара firebird.conf, можете користити следећу команду:
grep -v ^# firebird.conf | grep -v ^$
Ако ћете генерисати оптималну конфигурациону датотеку помоћу Firebird Configuration Calculator-а или ручно променити параметре, имајте на уму да ће промене бити примењене након рестарта Firebird сервиса (у случају SuperServer и SuperClassic, у случају Classic потребан је рестарт свих Firebird процеса).
Имајте на уму да од Firebird 3 постоје одвојене systemd јединице за SuperServer, SuperClassic и Classic.