Встановлення Firebird 3 на сучасних версіях Linux: CentOS 8 та Ubuntu 19
(C) Basil Sidorov, IBSurgeon, 22-May-2020
Ця стаття присвячена швидкому встановленню Firebird 3.0 на нові дистрибутиви Linux: CentOS 8 та Ubuntu 19 (також працює для 18).
Перший розділ - це короткий посібник із встановлення Firebird 3.0 якомога швидше, без деталей. Друга частина описує деталі.
Швидке встановлення Firebird 3 на CentOS 8 та Ubuntu 19
- Додайте до файлу /etc/sysctl.conf наступний рядок:
vm.max_map_count = 256000
- Збережіть sysctl.conf та застосуйте нові налаштування:
sudo sysctl -p /etc/sysctl.conf
Наступні інструкції дещо відрізняються для CentOS 8 та Ubuntu 19.
Зверніть увагу, що ми використали пряме посилання на останній реліз дистрибутиву Firebird 3.0 з FirebirdSQL.org, наразі (травень 2020) це 3.0.5, і ось посилання на 64-бітну версію:
https://github.com/FirebirdSQL/firebird/releases/download/R3.0.5/Firebird-3.0.5.33220-0.amd64.tar.gz
У майбутньому, коли з’являться 3.0.6 тощо, вам потрібно буде використовувати правильне посилання на новий реліз - воно буде опубліковане на www.firebirdsql.org.
- Встановіть пакети
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
У результаті у вас будуть усі файли встановлення Firebird готові в /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
- І потім встановіть Firebird:
cd /tmp/Firebird-3.0.5.33220-0.amd64 sudo ./install.sh
потім перевірте, що Firebird працює - наведена нижче команда покаже всі процеси, пов’язані з Firebird або запущені під користувачем firebird:
ps aux | grep firebird
Це все, якщо вам просто потрібно встановити Firebird 3.0.
Якщо ви хочете дізнатися, що означають наведені вище команди, читайте далі!
Основна частина: деталі встановлення Firebird 3 на Linux
У цій статті ми припускаємо, що операційна система була встановлена в мінімальній версії, і ви вже маєте доступ до публічних репозиторіїв або їх локальних копій.
Планування розподілу простору
На сервері, призначеному для обслуговування баз даних Firebird, ми рекомендуємо виділити окремі томи для тимчасових файлів (/tmp), файлів баз даних та локальних резервних копій.
Том для тимчасових файлів
Тимчасові файли Firebird включають файли блокувань, файли сортування, файли для “матеріалізації” глобальних тимчасових таблиць (GTT) та таблиць моніторингу. Файли сортування та файли GTT розташовані в /tmp, файли mon$- та блокувань - у /tmp/firebird.
Файли сортування видаляються одразу після створення, тому ви не можете побачити їх у папці (на відміну від Windows) командою ls.
Щоб побачити ці файли, потрібно запросити файлові дескриптори процесу Firebird (і вони позначені як видалені):
sudo ls -lhF /proc/`pgrep firebird`/fd
Щоб отримати деталі про конкретний файл сортування, виконайте команду
sudo stat -L /proc/`pgrep firebird`/fd/NUMBER
де NUMBER - це файловий дескриптор файлу.
Тимчасові файли можуть бути великими, тому рекомендується виділити 20-30 ГБ для /tmp.
Зверніть увагу, що розмір сортування не залежить від розміру бази даних: деякі помилкові запити з прямим добутком можуть легко створити файл сортування на 100 ГБ для бази даних розміром 3 МБ.
Том для файлів баз даних
Том для файлів баз даних має бути достатньо великим, щоб вмістити всі файли баз даних плюс, як мінімум, розмір найбільшої бази даних, для можливих операцій на місці.
Також пам’ятайте, що бази даних зростають з часом, і зарезервуйте трохи вільного простору для них.
Настійно рекомендується розміщувати том для файлів баз даних на найшвидшому диску/SAN/обладнанні, яке у вас є, з найвищими можливостями випадкового введення/виведення.
Том для локальних файлів резервних копій
Том для локальних файлів резервних копій має бути достатньо великим, щоб вмістити резервні копії всіх баз даних плюс розмір найбільшого файлу бази даних (не резервної копії - це для можливого тестового відновлення). Звичайно, пам’ятайте про зростання резервних копій баз даних. Том для локальних файлів резервних копій може розташовуватися на відносно повільних дисках. Файли резервних копій Firebird мають лінійну структуру, тому для диска резервних копій достатньо високої послідовної швидкості.
Підготовка
Рушій Firebird динамічно виділяє та звільняє пам’ять, що може призвести до фрагментації пам’яті.
Наприклад, це може статися після відключення багатьох користувачів від екземпляра Firebird SuperServer. Фрагментація пам’яті контролюється системним параметром v m.max_map_count, який має значення за замовчуванням 65K. Рекомендується збільшити його щонайменше в 4 рази та зробити це налаштування постійним.
Додайте наступний рядок до /etc/sysctl.conf:
vm.max_map_count = 256000
і застосуйте його
sudo sysctl -p /etc/sysctl.conf
Встановлення необхідних пакетів
Firebird 3 залежить від кількох пакетів Linux: ncurses, ICU, tommath. Також нам потрібні утиліти gzip, tar та curl або wget.
CentOS 8
CentOS використовує новий менеджер пакетів dnf, який прозоро викликається через yum. Нам подобається yum, тому давайте використаємо yum. Спочатку оновіть кеш метаданих:
sudo yum makecache
Пакет libtommath розташований в окремому репозиторії EPEL (E(xtra)P(ackages for)E(nterprise)L(inux)), тому нам потрібно перевірити, що він увімкнений:
yum -C repolist
Опція -C (–cache-only) змушує yum використовувати лише кеш.
Якщо ви не бачите epel-репозиторій у результаті yum -C repolist, встановіть його:
sudo yum install epel-release && sudo yum makecache
У разі проблем відредагуйте файл /etc/yum.repos.d/epel.repo та замініть https:// на http://, і спробуйте yum makecache знову.
Потім перевіримо, що у нас є всі необхідні пакети (64-бітні в прикладі):
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
Встановлення відсутніх пакетів на 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]
Встановлення відсутніх пакетів на Ubuntu 19:
sudo apt‑get install libncurses5 libtommath1
Створення символічних посилань
Libtommath.so.1 та libncurses.so.6 сумісні з libtommath.so.0 та libncurses.so.5, тому для Firebird буде достатньо створити символічні посилання на наявні версії бібліотек.
Спочатку знайдемо libtommath.so.1 (libncurses.so.? знаходиться в тій самій папці):
find /usr -name libtommath.so.1
На CentOS8 він розташований у:
/usr/lib64/libtommath.so.1
На Ubuntu 19:
/usr/lib/x86_64-linux-gnu/libtommath.so.1
Створімо символічні посилання
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
щоб перевірити результати:
ls -lhF $(dirname `find /usr -name libtommath.so.1`) | grep "lib\(ncurses\|tommath\)\.so\."
на CentOS8 це дає:
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
Отримання дистрибутиву Firebird 3.0
Релізи Firebird для Linux доступні на www.firebirdsql.org у вигляді tar.gz архівів. Припустимо, що URL - це посилання для завантаження tar.gz архіву релізу Firebird. Нам потрібно завантажити та розпакувати архів, для цього можна використати curl або wget.
curl
curl -L URL | tar -zxC /tmp
wget
wget -O- URL | tar -zxC /tmp
В результаті буде створено папку /tmp/Firebird‑3.0.5.33220‑0.amd64 з 3 файлами: install.sh, buildroot.tar.gz та manifest.txt.
Встановлення Firebird
Як передумови, ми встановили vm.max_map_count, перевірили та встановили ICU, ncurses і tommath, а також створили символічні посилання.
Після цього останній крок простий - виконайте
sudo ./install.sh
Цей скрипт запускає системний юніт firebird-superserver, і Firebird готовий до роботи.
Конфігураційний файл та його оптимізація
Зверніть увагу, що типовий конфігураційний файл Firebird firebird.conf налаштований дуже скромно. Ви можете перевірити вміст firebird.conf (незакоментовані рядки) за допомогою команди:
grep -v ^# firebird.conf | grep -v ^$
Для типового firebird.conf наведена вище команда нічого не поверне, це означає, що всі значення є типовими.
Якщо ви налаштовуєте виробничу систему, розгляньте можливість використання оптимізованих конфігураційних файлів Firebird: /uk/optimized-firebird-configuration/
Часте запитання №1
Часте запитання: “чому просто не використати репозиторій і не встановити Firebird за допомогою yum або apt?”. Звичайно, це можливо, але є 2 вагомі причини:
-
репозиторій може містити стару версію (тобто попередній мінорний реліз),
-
ми хочемо контролювати середовище, щоб переконатися, що все встановлено та налаштовано правильно.
Також ми віддаємо перевагу встановленню в /opt, це зручніше для крос-платформових скриптів і є хорошою практикою адміністрування.
Контакти
Будь ласка, надсилайте запитання, пропозиції та можливі помилки на [email protected]