Instalación de Firebird 3 en versións modernas de Linux: CentOS8 e Ubuntu 19

Neste artigo imos describir o conxunto mínimo de accións necesarias para a instalación óptima do DBMS Firebird versión 3.0 en novas distribucións de Linux. CentOS 8 e Ubuntu 19 son seleccionados para exemplos.

Para "entregar" a distribución de Firebird ao sistema de destino, nesta guía, selecciónase a opción de descargar o arquivo tar.gz mediante unha ligazón do sitio web oficial do proxecto (firebirdsql.org).

Para os máis impacientes, vai directamente á batalla:

Instalación rápida

Editando o ficheiro /etc/sysctl.confengadindo a liña:

vm.max_map_count = 256000

Garda o ficheiro e aplica a configuración:

sudo sysctl -p /etc/sysctl.conf

Outras instrucións difiren para CentOS 8 e Ubuntu 19, pero ССЫЛКА и КАТАЛОГ indicar unha ligazón do sitio web oficial do proxecto Firebird para descargar a distribución e o directorio no que se desempaquetará a distribución durante o proceso de descarga.
Actualmente (marzo de 2020) a versión actual é Firebird 3.0.5 (aquí está o enlace á 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

A instalación real do DBMS Firebird:

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

Se queres comprender mellor o que fan estas accións, continúa lendo.

Corpo principal

Un pequeno preámbulo

Suponse que o SO xa está instalado nunha versión mínima e está configurado o acceso aos repositorios públicos ou ás súas copias locais.

Suponse que o lector ten coñecementos básicos de Linux e do DBMS Firebird.

Planificación

No servidor DBMS recoméndase asignar seccións separadas para ficheiros temporais (/tmp), ficheiros de bases de datos e copias de seguridade locais.

Os temporais inclúen ficheiros de bloqueo, ficheiros de clasificación, ficheiros de "materialización" de táboas temporais globais (GTT) e táboas de seguimento. Os ficheiros para a clasificación e as táboas temporais globais atópanse en /tmp, ficheiros mon$-table e ficheiros de bloqueo – en /tmp/firebird.

Os ficheiros de clasificación son "borrados" (unlink) inmediatamente despois da creación, polo que non se poden "ver" na lista de directorios, só na lista de identificadores de procesos (marcados como deleted):

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

Na listaxe de pseudodirectorios /proc/…/fd/ móstranse ligazóns simbólicas e a información real sobre o ficheiro vén dada por:

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

onde НОМЕР – descriptor (descriptor) do ficheiro de interese.

En vez de chamar "pgrep исполняемый-файл"Podes substituír inmediatamente o identificador do proceso de interese.

Os ficheiros temporais poden ser moi grandes, polo tanto /tmp Recoméndase asignar polo menos 20-30 GB. Débese ter en conta que o tamaño dos ficheiros de clasificación depende só da cantidade de datos ordenados de forma explícita ou implícita na solicitude e un só usuario pode "crear" gigabytes de ficheiros temporais.

A sección de ficheiros de base de datos debe acomodar todos os ficheiros de base de datos. ademais, como mínimo, unha copia do ficheiro de base de datos máis grande. É necesario ter en conta o crecemento dos ficheiros de bases de datos no futuro durante varios anos.

A sección de copias de seguridade locais debe conter polo menos un arquivo de copia de seguridade de todas as bases de datos máis unha copia de seguridade da base de datos máis grande. É desexable que esta sección conteña tamén espazo para restaurar a base de datos máis grande. Débese ter en conta o crecemento de copias de seguridade e arquivos de copia de seguridade no futuro durante varios anos.

Preparación previa

O servidor DBMS Firebird 3.0 asigna e libera de forma dinámica a memoria do sistema, o que pode provocar a súa fragmentación. Por exemplo, despois de que un gran número de usuarios se desconecten do superservidor á vez, poden producirse erros ao facer novas conexións.

A fragmentación da memoria está controlada por un parámetro do sistema vm.max_map_count, o valor predeterminado é 64K. Recoméndase aumentar o seu valor catro veces:

sudo sysctl vm.max_map_count=256000

Para que o novo valor se estableza cando o sistema se reinicie, engádese ao ficheiro /etc/sysctl.conf liña:

vm.max_map_count = 256000

É recomendable facer un comentario para que quede claro o motivo da modificación deste parámetro. Primeiro pode editar o ficheiro e despois aplicar a configuración gardada nel:

sudo sysctl -p /etc/sysctl.conf

Instalación dos paquetes necesarios

Os ficheiros executables do DBMS Firebird 3.0 Linux dependen das bibliotecas ncurses (libncurses.so.5), UCI (non vinculada á versión e non se mostra na saída ldd) e tomath (libtommath.so.0). Para descargar e desempaquetar o arquivo de montaxe, necesitará utilidades gzip, tar и curl ou wget. versións da UCI, gzip, tar и curl/wget - son insignificantes.

Traballar con paquetes depende do sistema e do xestor de paquetes utilizado no sistema, polo que os consideraremos un por un.

CentOS 8

CentOS 8 usa un novo xestor de paquetes - dnf e chámase "de forma transparente" por orde yum. Xa que para os nosos propósitos non hai diferenza entre eles - nos exemplos haberá yum.

Actualiza a caché de metadatos: sudo yum makecache

O paquete libtomath está situado nun repositorio E(xtra)P(paquetes para)E(nterprise)L(inux) separado, polo que comprobamos que xa está incluído:

yum -C repolist

Opción "só desde a caché" (-C ou --cache-only) utilízase para eliminar comprobacións e descargas innecesarias, facendo que yum sexa máis rápido. Se non hai un repositorio epel na lista, instáleo e actualice a caché de metadatos:

sudo yum install epel-release &&
sudo yum makecache

Confirmamos solicitudes, se é necesario, comprobando os valores das claves pgp cos xa coñecidos dunha fonte de confianza.

Se hai problemas para cargar a metainformación do repositorio dos recursos https, edite o ficheiro /etc/yum.repos.d/epel.repo, substituíndo https:// en http:// e repita o comando de actualización da caché.

Comprobamos o estado dos paquetes necesarios (o comando é complicado, na saída de exemplo fíltrase o 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 iso curl, gzip и ncurses aloxado no pseudo-repositorio do instalador (anaconda), e tar – excluído da instalación mínima do sistema. Versións principais libncurses и libtommath máis do necesario: 6 e 1 en lugar de 5 e 0, respectivamente. Se o mesmo paquete está instalado e dispoñible, lanzouse unha actualización para el. Instala os paquetes que faltan:

sudo yum install 
libicu libtommath tar

Ubuntu 19

As utilidades están deseñadas para xestionar paquetes apt, apt‑get и apt‑cache. O primeiro está deseñado para o traballo interactivo e os dous últimos están deseñados para o seu uso en guións. Os nomes dos paquetes son lixeiramente diferentes e inclúen a versión.

Comprobamos o estado dos paquetes necesarios (o comando combínase, a saída de exemplo acúrtase e os paquetes de 32 bits son filtrados):

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 os que indican os corchetes installed/upgradable – instalado. Dispoñible pero non instalado ncurses5, en vez de curl instalado wget. Instala os paquetes que faltan:

sudo apt‑get install 
libncurses5 libtommath1

Creando ligazóns simbólicas

Desde libtommath.so.1 и libncurses.so.6 retrocompatible con libtommath.so.0 и libncurses.so.5, entón para Firebird abonda con crear ligazóns simbólicas ás versións existentes das bibliotecas.

Atopar libtommath.so.1 (libncurses.so.? situado no mesmo 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

Comprobamos o resultado (o comando é complicado, os exemplos de saída acúrtanse):

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 o kit de distribución Firebird DBMS.

O sitio web oficial do proxecto Firebird (firebirdsql.org) publica ligazóns a distribucións de versións "oficiais" e compilacións "diarias" (construcións de instantáneas).

As versións oficiais de Linux están dispoñibles como arquivos (tar.gz) e paquetes deb/rpm, pero as compilacións só están dispoñibles como arquivos. Consideraremos o "instalador xenérico" (instalador xenérico de tar.gz).

Hai que descargar e desempaquetar o arquivo de compilación, pero combinaremos ambos procesos. A desembalaxe faise en /tmp,URL indica a ligazón ao arquivo descargable.

rizo:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Por defecto curl envía os datos descargados a stdout pero non xestiona as redireccións e engadimos "‑L", a wget, pola contra: xestiona as redireccións, pero escribe datos nun ficheiro e poñemos "‑O‑" Para tar indicar o uso gzip-filtro e o directorio no que se realizará o desempaquetado. Cando se complete o proceso, aparecerá un directorio como este Firebird‑3.0.5.33220‑0.amd64 con tres ficheiros: install.sh, buildroot.tar.gz и manifest.txt.

Instalando Firebird

Durante a preparación preliminar, axustamos o valor do parámetro do sistema vm.max_map_count, comprobouse a dispoñibilidade e instalou as bibliotecas de UCI, ncurses e tommath. Asegúrate de que as versións de ncurses e tommath sexan correctas (libncures.so.5 и libtommath.so.0) e creou as ligazóns simbólicas necesarias.

A instalación real é moi sinxela. Vaia ao directorio onde se desempaquetou o arquivo de distribución de Firebird, comprobe e, se é necesario, configure a bandeira "executábel" para o script. install.sh:

chmod +x install.sh

executa o script de instalación:

sudo ./install.sh

Premendo a tecla Intro confirmamos o inicio da instalación e, tras recibir a solicitude, introducimos o contrasinal sysdba.

O script de instalación comeza automaticamente systemd-unidade firebird-superserver (arquitectura silenciosa Firebird 3.0). O servizo Firebird funcionará cos parámetros predeterminados para o superservidor: unha caché de páxinas de 2048 páxinas (por base de datos), un búfer de clasificación de 64 MB (compartido) e conectar só clientes da versión XNUMX. Ver opcións firebird.conf:

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

Teña en conta que os novos valores de firebird.conf só se activará despois de reiniciar o servizo Firebird.

Ao seleccionar os valores dos parámetros, hai que ter en conta que hai tres "consumidores" principais: a caché de páxina (para a base de datos), o búfer de clasificación (compartido) e a memoria asignada polo servidor para as conexións de clientes. Só pode xestionar os dous primeiros: a cantidade de memoria para as conexións do cliente depende do número e do texto das consultas almacenadas na caché, dos seus plans e dos obxectos de base de datos implicados nas consultas. As estimacións da memoria de conexión do cliente realízanse só empíricamente e poden cambiar a medida que cambian as aplicacións do cliente e/ou os obxectos da base de datos.

Para un superservidor en hosts cunha pequena cantidade de memoria (ata 12-16 GB), non debes asignar máis dun terzo ou un cuarto da cantidade total de RAM para a caché de páxinas e o búfer de clasificación.

Se o número de bases de datos non está fixado e pode cambiar, a cantidade total de memoria caché de páxinas debe dividirse polo número máximo de bases de datos que pode haber no servidor. O tamaño da caché de páxinas especifícase en páxinas e debe converterse en bytes por separado.

Para cambiar á arquitectura clásica, debes, como mínimo, especificar explícitamente ServerMode в firebird.conf, reduce alí a caché da páxina (non máis de 2K), reduce o búfer de clasificación (o volume total permitido de todo tipo dividido polo número máximo de conexións), desactiva e detén a unidade firebird-superserver, activa e inicia a unidade firebird-classic.socket.

Usar a arquitectura superclásica en Firebird 3.0 non ten moito sentido: a "fiabilidade" é como un superservidor e o mesmo búfer de clasificación xeral. Non hai caché de páxina común e as "perdas" para sincronizar conexións diferentes entre si son as mesmas que na clásica.

Cómpre lembrar que en Firebird 3.0 pódense establecer algúns parámetros (caché de páxinas, tamaños de ficheiros de bloqueo, táboas hash e algúns outros) databases.conf individualmente para cada base de datos. Para un superservidor é útil, por exemplo, establecer un valor pequeno DefaultDbCachePages в firebird.conf e instale cachés de páxinas individuais para as bases de datos necesarias databases.conf.

Fai preguntas sobre o artigo nos comentarios ou escribe cartas ao noso enderezo de asistencia [protexido por correo electrónico].

Fonte: www.habr.com

Engadir un comentario