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

En este artículo describiremos el conjunto mínimo de acciones necesarias para una instalación óptima de Firebird DBMS versión 3.0 en nuevas distribuciones de Linux. Se seleccionan CentOS 8 y Ubuntu 19 como ejemplos.

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

Para los más impacientes, vayan directamente a la batalla:

Instalación rápida

Editando 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

Otras instrucciones difieren para CentOS 8 y Ubuntu 19, pero ССЫЛКА и КАТАЛОГ indique un enlace del sitio web oficial del proyecto Firebird para descargar la distribución y el directorio en el que se descomprimirá la distribución durante el proceso de descarga.
Actualmente (marzo de 2020) la versión actual es Firebird 3.0.5 (aquí está el enlace a la versión de 64 bits).

8 CentOS

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

La instalación real del DBMS de Firebird:

cd /tmp/КАТАЛОГ
sudo ./install.sh

Si quieres entender mejor qué hacen estas acciones, sigue leyendo.

principal

Un breve preámbulo

Se supone que el sistema operativo ya está instalado en una 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

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

Los temporales incluyen archivos de bloqueo, archivos de clasificación, archivos de “materialización” de tablas temporales globales (GTT) y tablas de monitoreo. Los archivos para ordenar y tablas temporales globales se encuentran en /tmp, archivos mon$-table y archivos lock – en /tmp/firebird.

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

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

En el listado del pseudodirectorio /proc/…/fd/ Se muestran enlaces simbólicos y la información real sobre el archivo la proporciona:

sudo stat -L /proc/`pgrep firebird`/fd/НОМЕР

donde НОМЕР – 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 que /tmp Se recomienda asignar al menos 20-30 GB. Hay que tener en cuenta que el tamaño de la clasificación de archivos depende únicamente de la cantidad de datos ordenados explícita o implícitamente en la solicitud, y un solo usuario puede "crear" gigabytes de archivos temporales.

La sección de archivos de bases de datos debe contener todos los archivos de bases de datos. además, como mínimo, una copia del archivo de base de datos más grande. Es necesario tener en cuenta el crecimiento de los archivos de bases de datos en el futuro durante varios años.

La sección de copias de seguridad locales debe contener al menos un archivo de copia de seguridad de todas las bases de datos más una copia de seguridad de la base de datos más grande. Es deseable que esta sección también contenga espacio para restaurar la base de datos más grande. Se 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.

Preparacion preliminar

El servidor DBMS Firebird 3.0 asigna y libera dinámicamente la memoria del sistema, lo que puede provocar su fragmentación. Por ejemplo, después de que una gran cantidad de usuarios se desconectan del superservidor a la vez, pueden ocurrir errores al realizar nuevas conexiones.

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

sudo sysctl vm.max_map_count=256000

Para que el nuevo valor se establezca cuando el sistema se reinicie, agregue al archivo /etc/sysctl.conf línea:

vm.max_map_count = 256000

Es recomendable hacer un comentario para que quede claro el motivo del cambio de 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 paquetes requeridos

Los archivos ejecutables del DBMS de Linux Firebird 3.0 dependen de las bibliotecas ncurses (libncurses.so.5), ICU (no vinculado a la versión y no mostrado en la salida ldd) y tommath (libtommath.so.0). Para descargar y descomprimir el archivo de ensamblaje, necesitará utilidades gzip, tar и curl o wget. Versiones UCI, gzip, tar и curl/wget – son insignificantes.

Trabajar con paquetes depende del sistema y del administrador de paquetes utilizado en el sistema, por lo que los consideraremos uno por uno.

8 CentOS

CentOS 8 utiliza un nuevo administrador de paquetes – dnf y se llama “transparentemente” por comando yum. Dado que para nuestros propósitos no hay diferencia entre ellos - en los ejemplos habrá yum.

Actualice la caché de metadatos: sudo yum makecache

El paquete libtomath está ubicado en un repositorio E(xtra)P(ackages for)E(nterprise)L(inux) separado, por lo que verificamos que ya esté incluido:

yum -C repolist

Opción "solo desde caché" (-C o --cache-only) se utiliza para eliminar comprobaciones y descargas innecesarias, lo que hace que yum sea más rápido. Si no hay ningún repositorio de epel en la lista, instálelo y actualice la caché de metadatos:

sudo yum install epel-release &&
sudo yum makecache

Confirmamos las solicitudes, si es necesario, comprobando los valores de las claves pgp con las ya conocidas de una fuente confiable.

Si hay problemas para cargar la metainformación del repositorio desde los recursos https, edite el archivo /etc/yum.repos.d/epel.repo, reemplazando https:// en http:// y repita el comando de actualización de caché.

Comprobamos el estado de los paquetes requeridos (el comando es complicado, en el resultado del ejemplo 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, gzip и ncurses alojado en el pseudo-repositorio del instalador (anaconda), y tar – excluidos de la instalación mínima del sistema. Versiones principales libncurses и libtommath má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 que faltan:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Las utilidades están diseñadas para gestionar paquetes. apt, apt‑get и apt‑cache. El primero está diseñado para trabajo interactivo y los dos últimos están diseñados para su uso en guiones. Los nombres de los paquetes son ligeramente diferentes e incluyen la versión.

Verificamos el estado de los paquetes requeridos (el comando se combina, la salida del ejemplo se acorta 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 los corchetes indican installed/upgradable – instalado. Disponible pero no instalado ncurses5en lugar de curl establecer wget. Instale los paquetes que faltan:

sudo apt‑get install 
libncurses5 libtommath1

Creando enlaces simbólicos

Desde libtommath.so.1 и libncurses.so.6 compatible con versiones anteriores libtommath.so.0 и libncurses.so.5, entonces para Firebird es suficiente crear enlaces simbólicos a las versiones existentes de las bibliotecas.

Encontrar 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

Creamos 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

Comprobemos el resultado (el comando es complicado, los ejemplos de salida están acortados):

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 lanzamientos "oficiales" y compilaciones "diarias" (compilaciones instantáneas).

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

Es necesario descargar y descomprimir el archivo de compilación, pero combinaremos ambos procesos. El desembalaje se realiza en /tmp,URL indica el enlace al archivo descargable.

rizo:

curl -L URL | tar -zxC /tmp

obtener:

wget -O– URL | tar -zxC /tmp

Por defecto curl envía los datos descargados a stdout pero no maneja redirecciones y agregamos "‑L"Y wget, por el contrario: maneja redirecciones, pero escribe datos en un archivo y le ponemos "‑O‑" Para tar indicar uso gzip-filter y el directorio en el que se realizará el descomprimido. Cuando se complete el proceso, aparecerá un directorio como este. Firebird‑3.0.5.33220‑0.amd64 con tres archivos: install.sh, buildroot.tar.gz и manifest.txt.

Instalación de pájaro de fuego

Durante la preparación preliminar, ajustamos el valor del parámetro del sistema. vm.max_map_count, verificó la disponibilidad e instaló las bibliotecas ICU, ncurses y tommath. Asegúrese de que las versiones de ncurses y tommath sean correctas (libncures.so.5 и libtommath.so.0) y creó los enlaces simbólicos necesarios.

La instalación real es muy sencilla. Vaya al directorio donde se descomprimió el archivo de distribución de Firebird, verifique y, si es necesario, configure el indicador "ejecutable" para el script install.sh:

chmod +x install.sh

ejecute el script de instalación:

sudo ./install.sh

Pulsando la tecla Enter confirmamos el inicio de la instalación, y al recibir la solicitud ingresamos la contraseña sysdba.

El script de instalación se inicia automáticamente. systemd-unidad firebird-superserver (arquitectura silenciosa Firebird 3.0). El servicio Firebird funcionará con los parámetros predeterminados para el superservidor: un caché de páginas de 2048 páginas (por base de datos), un búfer de clasificación de 64 MB (compartido) y conectando solo clientes de la versión XNUMX. Ver opciones firebird.conf:

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

Tenga en cuenta que los nuevos valores de firebird.conf se activará solo 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: el caché de la página (para la base de datos), el búfer de clasificación (compartido) y la 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 de la cantidad y el texto de las consultas almacenadas en caché, sus planes y los objetos de la base de datos involucrados en las consultas. Las estimaciones de la memoria de conexión del cliente se realizan únicamente de forma empírica y pueden cambiar a medida que cambian las aplicaciones del cliente y/o los objetos de la base de datos.

Para un superservidor 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 cantidad total de RAM para el caché de páginas y el búfer de clasificación.

Si la cantidad de bases de datos no es fija y puede cambiar, la cantidad total de memoria caché de la página debe dividirse por la cantidad máxima de bases de datos que puede haber en el servidor. El tamaño del caché de la página se especifica en páginas y debe convertirse por separado a bytes.

Para cambiar a la arquitectura clásica, debe, como mínimo, especificar explícitamente ServerMode в firebird.conf, reduzca el caché de la página allí (no más de 2K), reduzca el búfer de clasificación (el volumen total permitido de todo tipo dividido por el número máximo de conexiones), desactive y detenga la unidad firebird-superserver, habilitar e iniciar la unidad firebird-classic.socket.

Usar la arquitectura superclásica en Firebird 3.0 no tiene mucho sentido: la "confiabilidad" es como un superservidor y el mismo búfer de clasificación general. No existe un caché de página común y las "pérdidas" al sincronizar diferentes conexiones entre sí son las mismas que en la clásica.

Debe recordarse que en Firebird 3.0 algunos parámetros (caché de página, tamaños de archivos de bloqueo, tablas hash y algunos otros) se pueden configurar en databases.conf individualmente para cada base de datos. Para un superservidor es útil, por ejemplo, establecer un valor pequeño DefaultDbCachePages в firebird.conf e instalar cachés de páginas individuales para las bases de datos requeridas en databases.conf.

Haga preguntas sobre el artículo en los comentarios o escriba cartas a nuestra dirección de soporte [email protected].

Fuente: habr.com

Añadir un comentario