Установка 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: /ru/optimized-firebird-configuration/
Часто задаваемый вопрос №1
Частый вопрос: “почему бы просто не использовать репозиторий и не установить Firebird с помощью yum или apt?”. Конечно, это возможно, но есть 2 веские причины:
-
в репозитории может быть старая версия (т.е. предыдущий минорный релиз),
-
мы предпочитаем контролировать окружение, чтобы убедиться, что все установлено и настроено правильно.
Кроме того, мы предпочитаем установку в /opt - это проще для кроссплатформенных скриптов и хорошая практика администрирования.
Контакты
Пожалуйста, не стесняйтесь отправлять вопросы, предложения и сообщения об ошибках на [email protected]