Esta página foi traduzida por máquina. Leia o original em inglês. English

Biblioteca IBSurgeon

Instalando o Firebird 3 em versões modernas do Linux: CentOS 8 e Ubuntu 19

(C) Basil Sidorov, IBSurgeon, 22-Maio-2020

Este artigo é dedicado à instalação rápida do Firebird 3.0 nas novas distribuições Linux: CentOS 8 e Ubuntu 19 (também funciona para o 18).

A primeira seção é um guia de instalação rápida para instalar o Firebird 3.0 o mais rápido possível, sem detalhes. A segunda parte descreve os detalhes.

Instalação Rápida do Firebird 3 no CentOS 8 e Ubuntu 19

  1. Adicione ao arquivo /etc/sysctl.conf a seguinte linha:

vm.max_map_count = 256000

  1. Salve o sysctl.conf e aplique as novas configurações:

sudo sysctl -p /etc/sysctl.conf

As próximas instruções são ligeiramente diferentes para CentOS 8 e Ubuntu 19.

Observe que usamos o link explícito para a distribuição da versão mais recente do Firebird 3.0 do FirebirdSQL.org, atualmente (maio de 2020), é a 3.0.5, e aqui está o link para a versão de 64 bits:

https://github.com/FirebirdSQL/firebird/releases/download/R3.0.5/Firebird-3.0.5.33220-0.amd64.tar.gz

No futuro, quando a 3.0.6, etc. aparecer, você precisará usar o link correto para o novo lançamento - ele será publicado em www.firebirdsql.org.

  1. Instale os pacotes

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, você terá todos os arquivos de instalação do Firebird prontos em /tmp/firebird:

Code
/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
  1. E então, instale o Firebird:

cd /tmp/Firebird-3.0.5.33220-0.amd64 sudo ./install.sh

depois, verifique se o Firebird está em execução - o comando abaixo mostrará todos os processos relacionados ao Firebird ou em execução sob o usuário firebird:

ps aux | grep firebird

Isso é tudo se você só precisa instalar o Firebird 3.0.

Se você gostaria de saber o que os comandos acima significam, continue lendo!

Parte principal: detalhes da instalação do Firebird 3 no Linux

Neste artigo, assumimos que o sistema operacional foi instalado na versão mínima, e você já tem acesso aos repositórios públicos ou suas cópias locais.

Planejamento da alocação de espaço

No servidor destinado a servir bancos de dados Firebird, recomendamos alocar volumes separados para arquivos temporários (/tmp), arquivos de banco de dados e backups locais.

Volume para arquivos temporários

Os arquivos temporários do Firebird incluem arquivos de bloqueio, arquivos de classificação, arquivos para “materializar” tabelas temporárias globais (GTT) e tabelas de monitoramento. Os arquivos de classificação e os arquivos GTT estão localizados em /tmp, os arquivos mon$- e de bloqueio estão em /tmp/firebird.

Os arquivos de classificação são desvinculados imediatamente após a criação, por isso você não pode vê-los na pasta (diferente do Windows) com o comando ls.

Para ver esses arquivos, você precisa solicitar os identificadores de arquivo do processo Firebird (e eles são marcados como excluídos):

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

Para obter detalhes sobre um arquivo de classificação específico, execute o comando

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

onde NUMBER é um descritor de arquivo do arquivo.

Os arquivos temporários podem ser grandes, por isso é recomendado alocar 20-30Gb para /tmp.

Observe que o tamanho da classificação não depende do tamanho do banco de dados: algumas consultas errôneas com o produto direto podem facilmente produzir um arquivo de classificação de 100Gb de um banco de dados de 3Mb.

Volume para arquivos de banco de dados

O volume para arquivos de banco de dados deve ser grande o suficiente para manter todos os arquivos de banco de dados mais, no mínimo, o tamanho do maior banco de dados, para possíveis manipulações no local.

Além disso, lembre-se de que os bancos de dados crescem ao longo do tempo e reserve algum espaço livre para eles também.

É altamente recomendável colocar o volume para os arquivos de banco de dados na unidade/SAN/hardware mais rápido que você tiver, com as maiores capacidades de E/S aleatória.

Volume para arquivos de backup local

O volume para arquivos de backup local deve ser grande o suficiente para ter backups de todos os bancos de dados mais o tamanho do maior arquivo de banco de dados (não backup - é para possível restauração de teste). Claro, lembre-se do crescimento dos backups de banco de dados. O volume para arquivos de backup local pode estar em unidades relativamente lentas. Os arquivos de backup do Firebird têm uma estrutura linear, então para uma unidade de backup é suficiente ter alta velocidade sequencial.

Preparação

O mecanismo Firebird aloca e desaloca memória dinamicamente, o que pode levar à fragmentação de memória.

Por exemplo, isso pode acontecer após desconectar muitos usuários da instância Firebird SuperServer. A fragmentação de memória é controlada pelo parâmetro do sistema v m.max_map_count, que tem valor padrão de 65K. É recomendado aumentá-lo pelo menos 4x e tornar essa configuração permanente.

Adicione a seguinte linha ao /etc/sysctl.conf:

vm.max_map_count = 256000

e aplique-a

sudo sysctl -p /etc/sysctl.conf

Instalação dos pacotes necessários

O Firebird 3 depende de vários pacotes Linux: ncurses, ICU, tommath. Além disso, precisamos dos utilitários gzip, tar e curl ou wget.

CentOS 8

O CentOS usa um novo gerenciador de pacotes dnf, que é invocado de forma transparente pelo yum. Nós gostamos do yum, então vamos usar o yum. Primeiro, renove o cache de metadados:

sudo yum makecache

O pacote libtommath está situado no repositório separado EPEL (E(xtra)P(ackages for)E(nterprise)L(inux)), então precisamos verificar se ele está habilitado:

yum -C repolist

A opção -C (–cache-only) faz o yum usar apenas o cache.

Se você não vir o repositório epel no resultado de yum -C repolist, instale-o:

sudo yum install epel-release && sudo yum makecache

Em caso de problemas, edite o arquivo /etc/yum.repos.d/epel.repo e substitua https:// por http://, e tente yum makecache novamente.

Então, vamos verificar se temos todos os pacotes necessários (64 bits no exemplo):

Code
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 pacotes ausentes no CentOS 8

sudo yum install libicu libtommath tar

Ubuntu 19

Code
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 pacotes ausentes no Ubuntu 19:

sudo apt‑get install libncurses5 libtommath1

Libtommath.so.1 e libncurses.so.6 são compatíveis com libtommath.so.0 e libncurses.so.5, será suficiente para o Firebird criar links simbólicos para as versões existentes das bibliotecas.

Primeiro, vamos encontrar libtommath.so.1 (libncurses.so.? está na mesma pasta):

find /usr -name libtommath.so.1

No CentOS8 ele está localizado em:

Code
/usr/lib64/libtommath.so.1

No Ubuntu 19:

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

Vamos criar links 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 os resultados:

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

no CentOS8 isso dá:

Code
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*

No Ubuntu isso dá:

Code
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

Obtendo a distribuição do lançamento do Firebird 3.0

Os lançamentos Linux do Firebird estão disponíveis em www.firebirdsql.org como arquivos tar.gz. Vamos supor que URL seja o link de download para o arquivo tar.gz do lançamento do Firebird. Precisamos baixar e descompactar o arquivo, para isso podemos usar curl ou wget.

curl

curl -L URL | tar -zxC /tmp

wget

wget -O- URL | tar -zxC /tmp

Como resultado, será criada a pasta /tmp/Firebird‑3.0.5.33220‑0.amd64 com 3 arquivos: install.sh, buildroot.tar.gz e manifest.txt.

Instalando o Firebird

Como pré-requisitos, definimos vm.max_map_count, verificamos e instalamos ICU, ncurses e tommath, e criamos links simbólicos.

Depois disso, o passo final é fácil - execute

sudo ./install.sh

Este script inicia a unidade de sistema firebird-superserver e o Firebird está pronto para funcionar.

Arquivo de configuração e sua otimização

Observe que o arquivo de configuração padrão do Firebird firebird.conf está configurado de forma muito modesta. Você pode verificar o conteúdo do firebird.conf (linhas não comentadas) com o comando:

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

Para o firebird.conf padrão, o comando acima não retornará nada, o que significa que todos os valores são padrão.

Se você está configurando um sistema de produção, considere usar arquivos de configuração otimizados do Firebird: /br/optimized-firebird-configuration/

Pergunta Frequente #1

A pergunta frequente é “por que simplesmente não usar o repositório e instalar o Firebird usando yum ou apt?”. Claro, é possível, mas há 2 grandes razões:

  1. o repositório pode conter a versão antiga (ou seja, versão menor anterior),

  2. gostamos de controlar o ambiente para garantir que tudo esteja instalado e configurado corretamente.

Além disso, preferimos a instalação em /opt, é mais fácil para scripts multiplataforma e boa prática de administração.

Contatos

Sinta-se à vontade para enviar perguntas, sugestões e possíveis erros para [email protected]