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.conf
agregando 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 8sudo 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 19sudo 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 Serecomienda 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 /tmp
archivos 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 /tmp
recomienda 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 Elservidor 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.conf
lí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 Losarchivos 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
, tar
y curl
o wget
. Versión de la UCI, gzip
, tar
y 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 8CentOS 8 utiliza el nuevo administrador de paquetes, dnf
y 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é" ( -C
o --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
, gzip
y ncurses
estamos ubicados en el pseudo-repositorio del instalador ( anaconda
), y tar
- está excluido de la instalación mínima del sistema. Versiones principales libncurses
y 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 faltantes:sudo yum install \
libicu libtommath tar
Ubuntu 19Utilidades están diseñados para la gestión de paquetes apt
, apt‑get
y 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 curl
instalado wget
. Instale los paquetes faltantes:sudo apt‑get install \
libncurses5 libtommath1
Creación de enlaces simbólicosDado libtommath.so.1
que son libncurses.so.6
compatibles con versiones anteriores libtommath.so.0
y 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, curl
enví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 tar
indicar el uso del gzip
filtro 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.amd64
con tres archivos: install.sh
, buildroot.tar.gz
y manifest.txt
.Instalación de FirebirdDurante 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.5
y 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 systemd
unidad 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.conf
solo 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 ServerMode
en 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.conf
individualmente para cada base de datos. Para un super servidor es útil, por ejemplo, establecer un valor pequeño DefaultDbCachePages
en firebird.conf
y 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.