Instalando Firebird 3 en versiones modernas de Linux: CentOS 8 y Ubuntu 19
(C) Basil Sidorov, IBSurgeon, 22-May-2020
Este artículo está dedicado a la instalación rápida de Firebird 3.0 en las nuevas distribuciones de Linux: CentOS 8 y Ubuntu 19 (también funciona para 18).
La primera sección es una guía de instalación rápida para instalar Firebird 3.0 lo más rápido posible, sin detalles. La segunda parte describe los detalles.
Instalación rápida de Firebird 3 en CentOS 8 y Ubuntu 19
- Agregue al archivo /etc/sysctl.conf la siguiente línea:
vm.max_map_count = 256000
- Guarde sysctl.conf y aplique la nueva configuración:
sudo sysctl -p /etc/sysctl.conf
Las siguientes instrucciones son ligeramente diferentes para CentOS 8 y Ubuntu 19.
Tenga en cuenta que hemos utilizado el enlace explícito a la última versión de distribución de Firebird 3.0 desde FirebirdSQL.org, actualmente (mayo de 2020), es 3.0.5, y aquí está el enlace para la versión de 64 bits:
https://github.com/FirebirdSQL/firebird/releases/download/R3.0.5/Firebird-3.0.5.33220-0.amd64.tar.gz
En el futuro, cuando aparezca 3.0.6, etc., necesitará usar el enlace correcto a la nueva versión: se publicará en www.firebirdsql.org.
- Instale los paquetes
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
Como resultado, tendrá todos los archivos de instalación de Firebird listos en /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
- Y luego, instale Firebird:
cd /tmp/Firebird-3.0.5.33220-0.amd64 sudo ./install.sh
después, verifique que Firebird esté ejecutándose: el comando siguiente mostrará todos los procesos relacionados con Firebird o que se ejecutan bajo el usuario firebird:
ps aux | grep firebird
Eso es todo si solo necesita instalar Firebird 3.0.
Si desea saber qué significan los comandos anteriores, ¡siga leyendo!
Parte principal: detalles de la instalación de Firebird 3 en Linux
En este artículo, asumimos que el sistema operativo se instaló en la versión mínima y que ya tiene acceso a los repositorios públicos o sus copias locales.
Planificación de la asignación de espacio
En el servidor destinado a servir bases de datos Firebird, recomendamos asignar volúmenes separados para archivos temporales (/tmp), archivos de base de datos y copias de seguridad locales.
Volumen para archivos temporales
Los archivos temporales de Firebird incluyen archivos de bloqueo, archivos de ordenación, archivos para “materializar” tablas temporales globales (GTT) y tablas de monitoreo. Los archivos de ordenación y los archivos GTT se encuentran en /tmp, los archivos mon$- y de bloqueo están en /tmp/firebird.
Los archivos de ordenación se desvinculan inmediatamente después de su creación, por eso no puede verlos en la carpeta (a diferencia de Windows) con el comando ls.
Para ver estos archivos, debe solicitar los descriptores de archivo del proceso de Firebird (y están marcados como eliminados):
sudo ls -lhF /proc/`pgrep firebird`/fd
Para obtener detalles sobre un archivo de ordenación específico, ejecute el comando
sudo stat -L /proc/`pgrep firebird`/fd/NUMBER
donde NUMBER es un descriptor de archivo del archivo.
Los archivos temporales pueden ser grandes, por lo que se recomienda asignar 20-30 Gb para /tmp.
Tenga en cuenta que el tamaño de ordenación no depende del tamaño de la base de datos: algunas consultas erróneas con el producto directo pueden generar fácilmente un archivo de ordenación de 100 Gb a partir de una base de datos de 3 Mb.
Volumen para archivos de base de datos
El volumen para los archivos de base de datos debe ser lo suficientemente grande para mantener todos los archivos de base de datos más, como mínimo, el tamaño de la base de datos más grande, para posibles manipulaciones en el lugar.
Además, recuerde que las bases de datos crecen con el tiempo y reserve algo de espacio libre para ellas también.
Se recomienda encarecidamente colocar el volumen para los archivos de base de datos en la unidad/SAN/hardware más rápido que tenga, con la mayor capacidad de E/S aleatoria.
Volumen para archivos de copia de seguridad local
El volumen para los archivos de copia de seguridad local debe ser lo suficientemente grande para tener copias de seguridad de todas las bases de datos más el tamaño del archivo de base de datos más grande (no la copia de seguridad, es para una posible restauración de prueba). Por supuesto, recuerde el crecimiento de las copias de seguridad de la base de datos. El volumen para los archivos de copia de seguridad local puede estar en unidades relativamente lentas. Los archivos de copia de seguridad de Firebird tienen una estructura lineal, por lo que para una unidad de copia de seguridad es suficiente tener alta velocidad secuencial.
Preparación
El motor de Firebird asigna y desasigna memoria dinámicamente, lo que puede provocar fragmentación de la memoria.
Por ejemplo, puede ocurrir después de desconectar a muchos usuarios de una instancia de Firebird SuperServer. La fragmentación de la memoria está controlada por el parámetro del sistema v m.max_map_count, que tiene un valor predeterminado de 65K. Se recomienda aumentarlo al menos 4 veces y hacer que esta configuración sea permanente.
Agregue la siguiente línea a /etc/sysctl.conf:
vm.max_map_count = 256000
y aplíquela
sudo sysctl -p /etc/sysctl.conf
Instalación de paquetes necesarios
Firebird 3 depende de varios paquetes de Linux: ncurses, ICU, tommath. También necesitamos las utilidades gzip, tar y curl o wget.
CentOS 8
CentOS usa un nuevo administrador de paquetes dnf, que es invocado de manera transparente por yum. Nos gusta yum, así que usemos yum. Primero, renueve la caché de metadatos:
sudo yum makecache
El paquete libtommath se encuentra en el repositorio separado EPEL (E(xtra)P(ackages for)E(nterprise)L(inux)), por lo que debemos verificar que esté habilitado:
yum -C repolist
La opción -C (–cache-only) hace que yum use solo la caché.
Si no ve el repositorio epel en el resultado de yum -C repolist, instálelo:
sudo yum install epel-release && sudo yum makecache
En caso de problemas, edite el archivo /etc/yum.repos.d/epel.repo y reemplace https:// por http://, e intente yum makecache nuevamente.
Luego, verifiquemos que tenemos todos los paquetes necesarios (64 bits en el ejemplo):
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
Instalando paquetes faltantes en 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]
Instalando paquetes faltantes en Ubuntu 19:
sudo apt‑get install libncurses5 libtommath1
Creando enlaces simbólicos
Libtommath.so.1 y libncurses.so.6 son compatibles con libtommath.so.0 y libncurses.so.5, será suficiente para Firebird crear enlaces simbólicos a las versiones de bibliotecas existentes.
Primero, busquemos libtommath.so.1 (libncurses.so.? está en la misma carpeta):
find /usr -name libtommath.so.1
En CentOS8 se encuentra en:
/usr/lib64/libtommath.so.1
En Ubuntu 19:
/usr/lib/x86_64-linux-gnu/libtommath.so.1
Creemos los enlaces simbólicos
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
para verificar los resultados:
ls -lhF $(dirname `find /usr -name libtommath.so.1`) | grep "lib\(ncurses\|tommath\)\.so\."
en CentOS8 da:
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*
En Ubuntu da:
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
Obteniendo la distribución de lanzamiento de Firebird 3.0
Los lanzamientos de Firebird para Linux están disponibles en www.firebirdsql.org como archivos tar.gz. Supongamos que URL es el enlace de descarga al archivo tar.gz de lanzamiento de Firebird. Necesitamos descargar y descomprimir el archivo; para esto podemos usar curl o wget.
curl
curl -L URL | tar -zxC /tmp
wget
wget -O- URL | tar -zxC /tmp
Como resultado, se creará la carpeta /tmp/Firebird‑3.0.5.33220‑0.amd64 con 3 archivos: install.sh, buildroot.tar.gz y manifest.txt.
Instalando Firebird
Como requisitos previos, hemos configurado vm.max_map_count, verificado e instalado ICU, ncurses y tommath, y creado enlaces simbólicos.
Después de eso, el paso final es fácil: ejecute
sudo ./install.sh
Este script inicia la unidad de sistema firebird-superserver y Firebird está listo para funcionar.
Archivo de configuración y su optimización
Tenga en cuenta que el archivo de configuración predeterminado de Firebird firebird.conf está configurado de manera muy modesta. Puede verificar el contenido de firebird.conf (líneas no comentadas) con el comando:
grep -v ^# firebird.conf | grep -v ^$
Para el firebird.conf predeterminado, el comando anterior no devolverá nada, lo que significa que todos los valores son predeterminados.
Si está configurando un sistema de producción, considere usar archivos de configuración de Firebird optimizados: /es/optimized-firebird-configuration/
Pregunta frecuente #1
La pregunta frecuente es “¿por qué no simplemente usar el repositorio e instalar Firebird usando yum o apt?”. Por supuesto, es posible, pero hay 2 grandes razones:
-
el repositorio puede contener la versión anterior (es decir, la versión menor anterior),
-
nos gusta controlar el entorno para asegurar que todo esté instalado y configurado correctamente.
Además, preferimos la instalación en /opt, es más fácil para scripts multiplataforma y una buena práctica de administración.
Contactos
No dude en enviar preguntas, sugerencias y posibles errores a [email protected]