Esta página fue traducida automáticamente. Lee el original en inglés. English

Biblioteca de IBSurgeon

Cómo instalar Firebird 3.0 y 4.0 en Linux

by Vasily Sidorov, 24 de agosto de 2022

En este artículo describimos la instalación de las versiones 3 y 4 de Firebird en las versiones populares de Linux: CentOS 7, Oracle Linux 7/8, Debian 9/10, Ubuntu18/20 y OpenSUSE15.0.

Para obtener la distribución de Firebird para Linux, utilice el archivo tar del sitio web oficial de Firebird:

Asumimos que la instalación se realiza con root o con sudoer, y que la computadora Linux tiene acceso a Internet.

Tenga en cuenta que algunos comandos requieren entrada del usuario. Tenga en cuenta que las líneas con punto y coma (;) al final significan que el comando se puede ejecutar como un comando de una sola línea.

Además, recomendamos leer las Notas de la versión de Firebird que desea instalar.

Requisitos previos

Los requisitos de bibliotecas del sistema para 4.0.1 y 3.0 se volvieron los mismos: enlace estático para ncurses5 y tommath0 y dinámico para ICU.

Dependiendo de la distribución, ncurses5 será una biblioteca del sistema (RH7/Debian) o estará disponible como un paquete para compatibilidad hacia atrás (RH8/Debian).

La biblioteca tommath tendrá la versión 0 o la versión 1 (son binariamente compatibles). Si no hay tommath0, crearemos un enlace simbólico.

Otras herramientas del sistema necesarias son tar y curl.

Instalamos estos paquetes explícitamente para que el administrador de paquetes los marque como controlados manualmente y no los desinstale automáticamente.

Instalación rápida

1. Especifique el recuento máximo de mapas.

Este paso es opcional, pero muy recomendado para sistemas de producción:

Abra el archivo /etc/sysctl.conf y agregue la siguiente línea:

Code
vm.max_map_count = 256000

luego aplique

Code
sysctl -p /etc/sysctl.conf

2. Instale el repositorio necesario para libtommath

Para CentOS 7

Code
yum install epel-release;

Para CentOS 8

Code
dnf install epel-release;

Para Oracle Linux 7

Code
yum install oracle-epel-release-el7;

Para Oracle Linux 8

Code
dnf install oracle-epel-release-el8;

Para otras distribuciones, los paquetes necesarios deberían estar disponibles en los repositorios principales.

3. Instale paquetes y herramientas

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;

La versión de ICU puede variar:

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

En las distribuciones que tienen libtommath1 (todas las anteriores excepto CentOS7 y Oracle Linux 7), es necesario crear el enlace simbólico 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;

El script de instalación de Firebird 4.0.1 y superiores puede crear el enlace simbólico automáticamente, pero para Firebird 3 debe crearse manualmente.

4. Descargue e instale Firebird

Después de la instalación de las herramientas y bibliotecas necesarias, podemos proceder con la descarga, descompresión y ejecución del paquete de instalación.

Asumimos que DOWNLOADLINK es un enlace de www.firebirdsql.org para descargar el Firebird necesario.

Code
curl -L DOWNLOADLINK | tar -zxC /tmp
cd /tmp/FIREBIRD_folder
sudo ./install.sh

Aquí DOWNLOADLINK - enlace a tar.gz, y FIREBIRD_folder - Firebird-version.build-0.architecture

donde la distribución se descomprimirá con el comando tar -zxC /tmp

Eso es todo lo necesario para la instalación rápida de Firebird 3 o 4 en Linux.

Opcionalmente, puede generar los archivos de configuración óptimos (firebird.conf y databases.conf) con Firebird Configuration Calculator.

Más detalles sobre la instalación de Firebird

Para aquellos que deseen configurar mejor la instalación de Firebird, proporcionamos una explicación detallada de los pasos anteriores.

Configuración de vm.max_map_count

Firebird desde la versión 3 utiliza eficazmente la arquitectura SuperServer con asignación dinámica intensiva de memoria. En caso de alta carga y alta frecuencia de conexiones y desconexiones, el motor puede alcanzar los límites de fragmentación de memoria en Linux, lo que se mostrará como error 11 (ENOMEM) o error 12 (munmap) en firebird.log.

El límite de fragmentación de memoria está controlado por el parámetro vm.max_map_count, que por defecto tiene el valor 65536.

Para mantener esta configuración después del reinicio del servidor, agregue la siguiente línea a /etc/sysctl.conf

Code
vm.max_map_count = 256000

Para aplicarla, reinicie el servidor o ejecute el comando:

Code
sudo sysctl -p /etc/sysctl.conf

Planificación del espacio en disco

En general, recomendamos asignar 3 particiones separadas en el servidor con la base de datos Firebird: para archivos temporales, para bases de datos y para copias de seguridad locales.

Partición para archivos temporales

Los principales archivos temporales son archivos de bloqueo, archivos de ordenamiento, archivos para tablas temporales globales y blobs, y archivos con datos de monitoreo.

Por defecto, en Linux, los archivos de ordenamiento y los archivos con datos para tablas temporales globales se encuentran en /tmp, los archivos para datos mon$ y tablas de bloqueo están en /tmp/firebird.

¿Cómo determinar el tamaño adecuado para la partición con archivos temporales?

Potencialmente, los archivos de ordenamiento y blob pueden ser bastante grandes, por lo que la recomendación práctica es tener una partición para archivos temporales para el sistema de producción con un número decente de usuarios de alrededor de 30-40Gb. Para determinar el tamaño adecuado con mayor precisión, recomendamos observar los tamaños reales de los archivos temporales.

El pequeño problema para tal monitoreo es que los archivos de ordenamiento se desvinculan inmediatamente después de su creación, por lo que no es posible verlos con el comando “ls” habitual. Para verlos, necesitamos verificar los manejadores del proceso (y estarán marcados como eliminados) con el siguiente comando:

Code
sudo ls -lhF /proc/`pgrep firebird`/fd

Como resultado de este comando, veremos el contenido de la pseudo-carpeta /proc/…/fd/

Para ver la información sobre el archivo específico en esta carpeta, debe usar el comando:

Code
sudo stat -L /proc/`pgrep firebird`/fd/NNNNN

donde NNNNN es el descriptor del archivo.

Puede usar este comando para las arquitecturas SuperServer y SuperClassic, cuando el motor se ejecuta como un solo proceso. Por supuesto, en lugar de pgrep firebird es posible especificar el número de manejador del proceso de Firebird.

Partición para archivos de bases de datos

La partición para archivos de bases de datos debe ser suficiente para almacenar todos los archivos de bases de datos más espacio libre igual al tamaño de la base de datos más grande, más reserva para crecimiento durante los próximos 2-3 años.

Partición para copias de seguridad locales

Como mínimo, la partición para copias de seguridad locales debe ser suficiente para almacenar todas las copias de seguridad locales más la copia de seguridad de la base de datos más grande.

Además, para realizar restauraciones, en la partición con copias de seguridad recomendamos tener espacio libre adicional, igual al tamaño de la base de datos más grande.

Más lectura sobre las copias de seguridad

Crear usuario firebird (opcional)

El script de instalación crea, si no existe, el usuario y grupo llamado “firebird” para realizar toda la actividad de Firebird usando este usuario (esta es una buena práctica para sistemas Linux).

También significa que los archivos de bases de datos y las carpetas donde se encuentran las bases de datos y las copias de seguridad deben tener propiedad o permisos para este usuario.

A veces tiene sentido crear el usuario y grupo “firebird” antes de la instalación:

Code
groupadd firebird &&
useradd -M -b /opt -s /sbin/nologin \
 -g firebird -u UID firebird

Para el usuario firebird no creamos carpeta de inicio (interruptor -M), solo especificamos la carpeta base (-b).

El shell nologin con el interruptor -s evita el inicio de sesión estándar en el servidor.

Instalar paquetes necesarios

Firebird 3.0 y 4.0 dependen de las bibliotecas ncurses (libncurses.so.5), ICU (sin enlace a la versión, y no se muestran en la salida de ldd) y tommath (libtommath.so.0).

Dependiendo de la distribución de Linux, necesitamos usar nombres de bibliotecas con o sin versiones. Los comandos prácticos de copiar y pegar se muestran arriba, y a continuación los describimos.

CentOS y Oracle Linux

La versión 7 contiene los paquetes necesarios por defecto, la versión 8 requiere la instalación de ncurses-compat-libs y la creación del enlace simbólico libtommath.so.0.

Debian, Ubuntu y OpenSUSE

En las versiones Debian 9 y 10, Ubuntu 18 y 20, OpenSUSE 15 tenemos que instalar libncurses5 y libtommath1, y para identificar la versión de ICU podemos usar la búsqueda del nombre incompleto:

en Ubuntu

Code
apt-cache search libicu5

en OpenSUSE 15

Code
zypper search libicu6

Detalles de la instalación de Firebird

Antes de la instalación hemos aumentado el parámetro del sistema vm.max_map_count, instalado las bibliotecas ICU, ncurses y tommath. Luego verificamos que tenemos las versiones correctas de ncurses y tommath (libncures.so.5 y libtommath.so.0) o creamos los enlaces simbólicos necesarios.

Opcionalmente, podríamos crear el usuario y grupo firebird.

Después de eso podemos instalar Firebird, para esto vamos a la carpeta donde se descomprimió el paquete de instalación y comenzamos la instalación:

Code
./install.sh

presione Enter para confirmar la instalación, y cuando se le solicite, especifique la contraseña para SYSDBA.

Inicialmente Firebird se instalará con el archivo de configuración por defecto. La configuración predeterminada se ejecuta como arquitectura SuperServer con valores modestos: caché (DefaultDbCachePages, también llamado Page buffers) por base de datos se establece en 2048, buffer para ordenamientos (TempCacheLimit) es 64M (para el servidor en v3 y por base de datos en v4).

Para ver los parámetros no comentados de firebird.conf, puede usar el siguiente comando:

Code
grep -v ^# firebird.conf | grep -v ^$

Si genera un archivo de configuración óptimo con Firebird Configuration Calculator o cambia parámetros manualmente, tenga en cuenta que los cambios se aplicarán después del reinicio del servicio de Firebird (en caso de SuperServer y SuperClassic, en caso de Classic se necesita reiniciar todos los procesos de Firebird).

Tenga en cuenta que desde Firebird 3 hay unidades systemd separadas para SuperServer, SuperClassic y Classic.