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:
- Firebird 4: https://firebirdsql.org/en/firebird-4-0/
- Firebird 3: https://firebirdsql.org/en/firebird-3-0/
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:
vm.max_map_count = 256000
luego aplique
sysctl -p /etc/sysctl.conf
2. Instale el repositorio necesario para libtommath
Para CentOS 7
yum install epel-release;
Para CentOS 8
dnf install epel-release;
Para Oracle Linux 7
yum install oracle-epel-release-el7;
Para Oracle Linux 8
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
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;
La versión de ICU puede variar:
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
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:
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.
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
vm.max_map_count = 256000
Para aplicarla, reinicie el servidor o ejecute el comando:
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:
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:
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
- 12 errores comunes al hacer copias de seguridad de bases de datos
- Consejos y trucos de Firebird Gbak
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:
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
apt-cache search libicu5
en OpenSUSE 15
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:
./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:
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.