Cette page a été traduite automatiquement. Lisez l'original en anglais. English

Bibliothèque IBSurgeon

Comment installer Firebird 3.0 et 4.0 sur Linux

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

В этой статье мы описываем установку Firebird версий 3 и 4 на популярных версиях Linux: CentOS 7, Oracle Linux 7/8, Debian 9/10, Ubuntu 18/20 и OpenSUSE 15.0.

Чтобы получить дистрибутив Firebird для Linux, используйте tar-архив с официального сайта Firebird:

Мы предполагаем, что установка выполняется от имени 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 и добавьте следующую строку:

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

Планирование дискового пространства

В целом, мы рекомендуем выделить 3 отдельных раздела на сервере с базой данных Firebird: для временных файлов, для баз данных и для локальных резервных копий.

Раздел для временных файлов

Основные временные файлы: файлы блокировок, файлы сортировки, файлы для глобальных временных таблиц и BLOB-объектов, файлы с данными мониторинга.

По умолчанию в Linux файлы сортировки и файлы с данными для глобальных временных таблиц находятся в /tmp, файлы для данных mon$ и таблиц блокировок - в /tmp/firebird.

Как определить правильный размер раздела для временных файлов?

Потенциально, файлы сортировки и BLOB-файлы могут быть довольно большими, поэтому практическая рекомендация - иметь раздел для временных файлов для производственной системы с приличным количеством пользователей около 30-40 ГБ. Чтобы определить правильный размер более точно, мы рекомендуем следить за фактическими размерами временных файлов.

Небольшая проблема для такого мониторинга заключается в том, что файлы сортировки удаляются сразу после создания, поэтому их невозможно увидеть обычной командой “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 мы не создаем домашнюю папку (переключатель -M), указываем только базовую папку (-b).

Оболочка 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

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), или создали необходимые символические ссылки.

Опционально, мы могли создать пользователя и группу 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.