Instalación de Firebird 3 en versiones modernas de Linux: CentOS8 y Ubuntu 19

En este artículo, describimos el conjunto mínimo de pasos necesarios para instalar de manera óptima Firebird versión 3.0 en las nuevas distribuciones de Linux. Por ejemplo, se seleccionaron CentOS 8 y Ubuntu 19.

Para la "entrega" de la distribución de Firebird al sistema de destino, en esta guía, se seleccionó la opción de descargar el archivo tar.gz desde el enlace desde el sitio web oficial del proyecto ( firebirdsql.org ).

Para los más impacientes, inmediatamente en la batalla:

Instalación rápida


Edite el archivo /etc/sysctl.confagregando la línea:

vm.max_map_count = 256000

Guarde el archivo y aplique la configuración:

sudo sysctl -p /etc/sysctl.conf

Las instrucciones adicionales difieren para CentOS 8 y Ubuntu 19, pero también indican el enlace desde el sitio web oficial del proyecto Firebird para descargar el paquete de distribución y el directorio en el que se desempaquetará el paquete de distribución durante el proceso de arranque.
Por el momento (marzo de 2020), la versión Firebird 3.0.5 es relevante ( aquí hay un enlace a la versión de 64 bits).

CentOS 8

sudo yum -y install epel-release
sudo yum -y makecache
sudo yum -y install libicu libtommath tar
ln -s libncurses.so.5 \
/usr/lib64/libncurses.so.5
ln -s libtommath.so.1 \
/usr/lib64/libtommath.so.0
curl -L |tar -zxC /tmp

Ubuntu 19

sudo apt-get -y install libncurses5 libtommath1
ln -s libtommath.so.1 \
/usr/lib/x86_64-linux-gnu/libtommath.so.0
wget -O- |tar -zxC /tmp

Realmente instalando el DBMS Firebird:

cd /tmp/
sudo ./install.sh

Si desea comprender mejor para qué sirven estas acciones, siga leyendo.

La parte principal.

Un pequeño preámbulo.

Se supone que el sistema operativo ya está instalado en la versión mínima y el acceso a los repositorios públicos o sus copias locales está configurado.

Se supone que el lector tiene conocimientos básicos de Linux y Firebird DBMS.

Planificación Se

recomienda asignar secciones separadas para archivos temporales ( /tmp), archivos de base de datos y copias de seguridad locales en el servidor DBMS .

Los archivos temporales incluyen archivos de bloqueo, archivos de clasificación, archivos de "materialización" de tablas temporales globales (GTT) y tablas de monitoreo. Los archivos de clasificación y las tablas temporales globales se encuentran en los /tmparchivos mon $ table y los archivos de bloqueo /tmp/firebird.

Los archivos de clasificación se "eliminan" ( unlink) inmediatamente después de la creación, por lo tanto, no se pueden "ver" en la lista del directorio, solo en la lista de identificadores de proceso (marcados como deleted):

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

En la /proc/…/fd/lista del pseudo- directorio, se muestran los enlaces simbólicos, y la información real sobre el archivo viene dada por:

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

donde está el descriptor (descriptor) del archivo de interés.

En lugar de llamar " pgrep -", puede sustituir inmediatamente el identificador del proceso de interés.

Los archivos temporales pueden ser muy grandes, por lo tanto, se /tmprecomienda asignar al menos 20-30 GB para. Tenga en cuenta que el tamaño de la clasificación de archivos depende solo de la cantidad de datos que se ordena explícita o implícitamente en la solicitud y un solo usuario puede "crear" gigabytes de archivos temporales.

La sección para archivos de base de datos debe contener todos los archivos de base de datos. más al menos una copia del archivo de base de datos más grande. Debe tener en cuenta el crecimiento de los archivos de la base de datos en el futuro durante varios años por adelantado.

La sección de copias de seguridad locales debe contener al menos un archivo de copia de seguridad de todas las bases más la copia de seguridad de la base más grande. Es aconsejable que esta sección también tenga un lugar para restaurar la base más grande. Debe tener en cuenta el crecimiento de las copias de seguridad y los archivos de copias de seguridad en el futuro durante varios años más.

Preparación preliminar El

servidor Firebird 3.0 DBMS asigna y libera dinámicamente la memoria del sistema, lo que puede conducir a la fragmentación. Por ejemplo, después de que una gran cantidad de usuarios se desconectan del super servidor al mismo tiempo, pueden ocurrir errores con las nuevas conexiones.

La fragmentación de la memoria es controlada por el parámetro del sistema vm.max_map_count, por defecto - 64K. Se recomienda aumentar su valor cuatro veces:

sudo sysctl vm.max_map_count=256000

Para establecer el nuevo valor cuando se reinicia el sistema, agregue la /etc/sysctl.conflínea al archivo :

vm.max_map_count = 256000

Es aconsejable hacer un comentario para que se entienda la razón para cambiar este parámetro. Primero puede editar el archivo y luego aplicar la configuración guardada en él:

sudo sysctl -p /etc/sysctl.conf

Instalación de los paquetes necesarios Los

archivos ejecutables de Firebird 3.0 Linux DBMS dependen de las bibliotecas ncurses ( libncurses.so.5), ICU (sin enlace de versión y sin visualización en la salida ldd) y tommath ( libtommath.so.0). Para descargar y descomprimir el archivo de ensamblaje, se requieren utilidades gzip, tary curlo wget. Versión de la UCI, gzip, tary curl/ wget- son insignificantes.

El trabajo con paquetes depende del sistema y del administrador de paquetes utilizado en el sistema, por lo tanto, los consideraremos uno por uno.

CentOS 8

CentOS 8 utiliza el nuevo administrador de paquetes, dnfy se llama "transparentemente" en el comando yum. Dado que no hay diferencia entre ellos para nuestros propósitos, habrá ejemplos yum.

Actualización de la caché de metadatos:sudo yum makecache

El paquete libtomath se encuentra en un repositorio E (xtra) P (paquetes para) E (nterprise) L (inux) separado, por lo que verificamos que ya esté conectado:

yum -C repolist

La opción "solo desde el caché" ( -Co --cache-only) se usa para eliminar comprobaciones y descargas innecesarias, acelerando yum. Si no hay un repositorio de epel en la lista, instálelo y actualice el caché de metadatos:

sudo yum install epel-release &&
sudo yum makecache

Confirmamos las solicitudes, si es necesario, verificando los valores de pgp-keys con los ya conocidos de una fuente confiable.

Si tiene problemas para descargar repositorio de meta-información de recursos https, a continuación, editar el archivo /etc/yum.repos.d/epel.repo, reemplazándolo https://con http://y repetir el comando de actualización de memoria caché.

Verifique el estado de los paquetes necesarios (el comando está plegado, en el ejemplo de salida, se filtra el paquete de 32 bits):

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

Vemos eso curl, gzipy ncursesestamos ubicados en el pseudo-repositorio del instalador ( anaconda), y tar- está excluido de la instalación mínima del sistema. Versiones principales libncursesy libtommathmás de lo requerido: 6 y 1 en lugar de 5 y 0, respectivamente. Si el mismo paquete está instalado y disponible, se ha publicado una actualización para él. Instale los paquetes faltantes:

sudo yum install \
libicu libtommath tar

Ubuntu 19

Utilidades están diseñados para la gestión de paquetes apt, apt‑gety apt‑cache. El primero está diseñado para el trabajo interactivo, y los dos últimos, para usar en scripts. Los nombres de los paquetes son ligeramente diferentes e incluyen una versión.

Verificamos el estado de los paquetes necesarios (el comando es complejo, el ejemplo de salida se reduce y los paquetes de 32 bits se filtran):

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]

Paquetes para los cuales installed/ upgradable- se instalan entre corchetes . Disponible, pero no instalado ncurses5, en lugar de curlinstalado wget. Instale los paquetes faltantes:

sudo apt‑get install \
libncurses5 libtommath1

Creación de enlaces simbólicos

Dado libtommath.so.1que son libncurses.so.6compatibles con versiones anteriores libtommath.so.0y libncurses.so.5, es suficiente para Firebird crear enlaces simbólicos a versiones existentes de bibliotecas.

Encontramos libtommath.so.1( libncurses.so.?ubicado en el mismo directorio):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

/usr/lib/x86_64-linux-gnu/libtommath.so.1

Crea enlaces simbólicos.

CentOS:

sudo ln -s libtommath.so.1 \
/usr/lib64/libtommath.so.0
sudo ln -s libncurses.so.6 \
/usr/lib64/libncurses.so.5

Ubuntu:

sudo ln -s libtommath.so.1 \
/usr/lib/x86_64-linux-gnu/libtommath.so.0

Verifique el resultado (el comando está plegado, los ejemplos de salida se acortan):

ls -lhF \
$(dirname `find /usr -name libtommath.so.1`) |
grep "lib\(ncurses\|tommath\)\.so\."

CentOS:

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

Descargando el kit de distribución Firebird DBMS.

El sitio web oficial del proyecto Firebird (firebirdsql.org) publica enlaces a distribuciones de los lanzamientos "oficiales" (lanzamientos) y ensamblajes "diarios" (compilación instantánea).

Las versiones oficiales de Linux están disponibles como archivos (tar.gz) y paquetes deb / rpm, y las compilaciones solo están disponibles como archivos. Examinaremos el "instalador genérico" (instalador genérico de tar.gz).

El archivo de ensamblaje debe descargarse y descomprimirse, pero combinaremos ambos procesos. El desempaquetado se realiza en /tmp, la URL indica un enlace al archivo descargable.

rizo:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Por defecto, curlenvía los datos cargados a la salida estándar, pero no maneja las redirecciones y agregamos " ‑L", sino wget, por el contrario: procesa las redirecciones, pero escribe datos en un archivo y colocamos " ‑O‑". Para tarindicar el uso del gzipfiltro y el directorio en el que se realizará el desempaquetado. Una vez finalizado el proceso será tipo de directorio Firebird‑3.0.5.33220‑0.amd64con tres archivos: install.sh, buildroot.tar.gzy manifest.txt.

Instalación de Firebird

Durante la preparación preliminar, ajustamos el valor del parámetro del sistema vm.max_map_count, verificamos la disponibilidad e instalamos las bibliotecas ICU, ncurses y tommath. Nos aseguramos de que las versiones de ncurses y tommath ( libncures.so.5y libtommath.so.0) fueran correctas y creamos los enlaces simbólicos necesarios.

En realidad, la instalación es muy simple. Vamos al directorio donde se descomprimió el archivo del kit de distribución de Firebird, verificamos y, si es necesario, establecemos el indicador "ejecutable" para el script install.sh:

chmod +x install.sh

ejecuta el script de instalación:

sudo ./install.sh

Al presionar la tecla Intro, confirmamos el inicio de la instalación y, una vez recibida la solicitud, ingrese la contraseña de sysdba.

El script de instalación inicia automáticamente una systemdunidad firebird-superserver(arquitectura predeterminada de Firebird 3.0). El servicio Firebird funcionará con los parámetros predeterminados para un súper servidor: un caché de páginas de 2048 páginas (por base), un búfer de clasificación de 64 MB (compartido) y conectando solo clientes de la tercera versión. Ver opciones firebird.conf:

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

Tenga en cuenta que los nuevos valores de firebird.confsolo se activarán después de reiniciar el servicio Firebird.

Al seleccionar los valores de los parámetros, se debe tener en cuenta que hay tres "consumidores" principales: caché de página (para la base de datos), búfer de clasificación (compartido) y memoria asignada por el servidor para las conexiones del cliente. Solo puede administrar los dos primeros: la cantidad de memoria para las conexiones del cliente depende del número y el texto de las solicitudes almacenadas en caché, sus planes y los objetos de la base de datos involucrados en las solicitudes. La evaluación de la memoria de las conexiones del cliente se realiza solo empíricamente y puede cambiar cuando cambian las aplicaciones del cliente y / o los objetos de la base de datos.

Para un súper servidor en hosts con una pequeña cantidad de memoria (hasta 12-16 GB), no debe asignar más de un tercio o un cuarto de la RAM total para el caché de páginas y el búfer de clasificación.

Si el número de bases de datos no es fijo y puede cambiar, la memoria total de la memoria caché de la página debe dividirse por el número máximo de bases de datos que pueden estar en el servidor. El tamaño de la memoria caché de la página se establece en páginas y debe convertirse por separado en bytes.

Para cambiar a la arquitectura clásica, debe especificar al menos explícitamente ServerModeen firebird.conf, reducir el caché de páginas en el mismo lugar (no más de 2K), reducir la holgura de clasificación (la cantidad total admisible de todo tipo, dividido por el número máximo de conexiones), desactivar y detener la unidad firebird-superserver, habilitar y ejecutar unidad firebird-classic.socket.

El uso de la arquitectura superclásica en Firebird 3.0 no tiene mucho sentido: "confiabilidad", como un súper servidor y el mismo búfer de clasificación general. No hay caché de página general y la "pérdida" para sincronizar diferentes conexiones entre ellos es la misma que la de un clásico.

Debe recordarse que en Firebird 3.0 algunos de los parámetros (caché de página, tamaños de archivo de bloqueo, tablas hash y algunos otros) se pueden configurar databases.confindividualmente para cada base de datos. Para un super servidor es útil, por ejemplo, establecer un valor pequeño DefaultDbCachePagesen firebird.confy establecer cachés de página individuales en las bases de datos necesarias en databases.conf.

Haga preguntas sobre el artículo en los comentarios o escriba cartas a nuestra dirección de soporte support@ibase.ru.

All Articles