Як встановити 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 или пользователя с правами sudo, и что компьютер с 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.
Подробнее об установке 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
Планирование дискового пространства
В целом мы рекомендуем выделить 3 отдельных раздела на сервере с базой данных Firebird: для временных файлов, для баз данных и для локальных резервных копий.
Раздел для временных файлов
Основные временные файлы - это файлы блокировок, файлы сортировки, файлы для глобальных временных таблиц и BLOB-объектов, файлы с данными мониторинга.
По умолчанию в Linux файлы сортировки и файлы с данными для глобальных временных таблиц находятся в /tmp, файлы для данных mon$ и таблиц блокировок - в /tmp/firebird.
Как определить правильный размер раздела для временных файлов?
Потенциально файлы сортировки и BLOB-файлы могут быть довольно большими, поэтому практическая рекомендация - иметь раздел для временных файлов для производственной системы с приличным количеством пользователей около 30-40 ГБ. Чтобы определить правильный размер более точно, мы рекомендуем следить за фактическими размерами временных файлов.
Небольшая проблема для такого мониторинга заключается в том, что файлы сортировки удаляются сразу после создания, поэтому их невозможно увидеть обычной командой “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 мы не создаем домашнюю папку (переключатель -M), указываем только базовую папку (-b).
Shell nologin з перемикачем -s запобігає стандартному входу на сервер.
Встановлення необхідних пакетів
Firebird 3.0 та 4.0 залежать від бібліотек ncurses (libncurses.so.5), ICU (без прив’язки до версії, і вони не відображаються у виводі ldd) та tommath (libtommath.so.0).
Залежно від дистрибутива Linux, нам потрібно використовувати назви бібліотек з версіями або без них. Практичні команди для копіювання показані вище, а нижче ми їх описуємо.
CentOS та Oracle Linux
Версія 7 містить необхідні пакети за замовчуванням, версія 8 вимагає встановлення ncurses-compat-libs та створення символічного посилання 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) або створили необхідні символічні посилання.
За бажанням, ми могли створити користувача та групу 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.