Como instalar o Firebird 3.0 e 4.0 no Linux
por Vasily Sidorov, 24 de agosto de 2022
Neste artigo, descrevemos a instalação das versões 3 e 4 do Firebird nas versões populares de Linux: CentOS 7, Oracle Linux 7/8, Debian 9/10, Ubuntu 18/20 e OpenSUSE 15.0.
Para obter a distribuição do Firebird para Linux, use o arquivo tar do site oficial do Firebird:
- Firebird 4: https://firebirdsql.org/en/firebird-4-0/
- Firebird 3: https://firebirdsql.org/en/firebird-3-0/
Assumimos que a instalação é feita com root ou com sudoer, e que o computador Linux tem acesso à Internet.
Observe que alguns comandos exigem entrada do usuário. Observe que linhas com ponto e vírgula (;) no final significam que o comando pode ser executado como um comando de linha única.
Além disso, recomendamos a leitura das Notas de Versão (Release Notes) da versão do Firebird que você pretende instalar.
Pré-requisitos
Os requisitos de bibliotecas do sistema para 4.0.1 e 3.0 tornaram-se os mesmos: vinculação estática para ncurses5 e tommath0 e dinâmica para ICU.
Dependendo da distribuição, o ncurses5 será uma biblioteca do sistema (RH7/Debian) ou estará disponível como um pacote para compatibilidade reversa (RH8/Debian).
A biblioteca tommath será com versão 0 ou versão 1 (elas são binariamente compatíveis). Se não houver tommath0, criaremos um link simbólico.
Outras ferramentas de sistema necessárias são tar e curl.
Instalamos esses pacotes explicitamente para que o gerenciador de pacotes os marque como controlados manualmente e não os desinstale automaticamente.
Instalação rápida
1. Especifique a contagem máxima de mapas.
Este passo é opcional, mas altamente recomendado para sistemas de produção:
Abra o arquivo /etc/sysctl.conf e adicione a seguinte linha:
vm.max_map_count = 256000
depois aplique
sysctl -p /etc/sysctl.conf
2. Instale o repositório necessário para libtommath
Para CentOS 7
yum install epel-release;
Para CentOS 8
dnf install epel-release;
Para Oracle Linux 7
yum install oracle-epel-release-el7;
Para Oracle Linux 8
dnf install oracle-epel-release-el8;
Para outras distribuições, os pacotes necessários devem estar disponíveis nos repositórios principais.
3. Instale pacotes e ferramentas
CentOS 7 / Oracle Linux 7
yum makecache;
yum install ncurses libicu libtommath;
yum install curl tar;
CentOS 8 / Oracle Linux 8
dnf makecache;
dnf install ncurses-compat-libs libicu libtommath;
dnf install curl tar;
Debian 9/10, Ubuntu 18/20
apt-get install libncurses5 libtommath1;
apt-get install curl tar;
Open SUSE 15
zypper install libncurses5 libtommath1;
zypper install curl tar;
A versão do ICU pode variar:
Debian 9
apt-get install libicu57
Debian 10
apt-get install libicu63
Ubuntu 18
apt-get install libicu60
Ubuntu 20
apt-get install libicu66
OpenSUSE 15.0
zypper install libicu60_2
Nas distribuições que possuem libtommath1 (todas acima, exceto CentOS7 e Oracle Linux 7), é necessário criar o link simbólico libtommath.so.0:
TM=libtommath.so;
for LIB in `find /lib* /usr/lib* -name ${TM}.1`;
do ln -s ${TM}.1 `dirname ${LIB}`/${TM}.0;
done;
unset TM;
O script de instalação do Firebird 4.0.1 e superiores pode criar o link simbólico automaticamente, mas para o Firebird 3 ele deve ser criado manualmente.
4. Baixe e instale o Firebird
Após a instalação das ferramentas e bibliotecas necessárias, podemos prosseguir com o download, descompactação e execução do pacote de instalação.
Assumimos que DOWNLOADLINK é um link de www.firebirdsql.org para baixar o Firebird necessário.
curl -L DOWNLOADLINK | tar -zxC /tmp
cd /tmp/FIREBIRD_folder
sudo ./install.sh
Aqui DOWNLOADLINK - link para tar.gz, e FIREBIRD_folder - Firebird-versão.build-0.arquitetura
onde a distribuição será descompactada pelo comando tar -zxC /tmp
Isso é tudo o que é necessário para a instalação rápida do Firebird 3 ou 4 no Linux.
Opcionalmente, você pode gerar os arquivos de configuração ideais (firebird.conf e databases.conf) com o Firebird Configuration Calculator.
Mais detalhes sobre a instalação do Firebird
Para aqueles que desejam configurar melhor a instalação do Firebird, fornecemos uma explicação detalhada das etapas acima.
Configuração de vm.max_map_count
O Firebird desde a versão 3 usa efetivamente a arquitetura SuperServer com alocação dinâmica intensiva de memória. Em caso de alta carga e alta frequência de conexões e desconexões, o mecanismo pode atingir os limites de fragmentação de memória no Linux, o que será exibido como erro 11 (ENOMEM) ou erro 12 (munmap) no firebird.log.
O limite de fragmentação de memória é controlado pelo parâmetro vm.max_map_count, que por padrão tem o valor 65536.
Para manter essa configuração após a reinicialização do servidor, adicione a seguinte linha ao /etc/sysctl.conf
vm.max_map_count = 256000
Para aplicá-la, reinicie o servidor ou execute o comando:
sudo sysctl -p /etc/sysctl.conf
Planejamento do espaço em disco
Em geral, recomendamos alocar 3 partições separadas no servidor com o banco de dados Firebird: para arquivos temporários, para bancos de dados e para backups locais.
Partição para arquivos temporários
Os principais arquivos temporários são arquivos de bloqueio, arquivos de classificação, arquivos para tabelas temporárias globais e blobs, arquivos com dados de monitoramento.
Por padrão, no Linux, os arquivos de classificação e os arquivos com dados para tabelas temporárias globais estão localizados em /tmp, os arquivos para dados mon$ e tabelas de bloqueio estão em /tmp/firebird.
Como determinar o tamanho adequado para a partição com arquivos temporários?
Potencialmente, os arquivos de classificação e blob podem ser bastante grandes, então a recomendação prática é ter uma partição para arquivos temporários para o sistema de produção com um número razoável de usuários em torno de 30-40Gb. Para determinar o tamanho adequado com mais precisão, recomendamos observar os tamanhos reais dos arquivos temporários.
O pequeno problema para esse monitoramento é que os arquivos de classificação são desvinculados imediatamente após a criação, portanto não é possível vê-los com o comando usual “ls”. Para visualizá-los, precisamos verificar os identificadores (handles) do processo (e eles serão marcados como excluídos) com o seguinte comando:
sudo ls -lhF /proc/`pgrep firebird`/fd
Como resultado deste comando, veremos o conteúdo da pseudo-pasta /proc/…/fd/
Para ver as informações sobre o arquivo específico nesta pasta, é necessário usar o comando:
sudo stat -L /proc/`pgrep firebird`/fd/NNNNN
onde NNNNN é o descritor do arquivo.
Você pode usar este comando para as arquiteturas SuperServer e SuperClassic, quando o mecanismo é executado como um único processo. Claro, em vez de pgrep firebird, é possível especificar o número do identificador do processo do Firebird.
Partição para arquivos de banco de dados
A partição para arquivos de banco de dados deve ser suficiente para armazenar todos os arquivos de banco de dados mais espaço livre igual ao tamanho do maior banco de dados, mais reserva para crescimento nos próximos 2-3 anos.
Partição para backups locais
No mínimo, a partição para backup local deve ser suficiente para armazenar todos os backups locais mais o backup do maior banco de dados.
Além disso, para realizar restaurações, na partição com backups, recomendamos ter espaço livre adicional, igual ao tamanho do maior banco de dados.
Mais leitura sobre backups
Criar usuário firebird (opcional)
O script de instalação cria, se não existir, usuário e grupo chamados “firebird” para realizar toda a atividade do Firebird usando este usuário (esta é uma prática recomendada para sistemas Linux).
Isso também significa que os arquivos de banco de dados e pastas onde os bancos de dados e backups estão localizados devem ter propriedade ou permissões para este usuário.
Às vezes, faz sentido criar usuário e grupo “firebird” antes da instalação:
groupadd firebird &&
useradd -M -b /opt -s /sbin/nologin \
-g firebird -u UID firebird
Para o usuário firebird, não criamos pasta pessoal (switch -M), especificamos apenas a pasta base (-b).
O shell nologin com o switch -s impede o login padrão no servidor.
Instalar pacotes necessários
O Firebird 3.0 e 4.0 depende das bibliotecas ncurses (libncurses.so.5), ICU (sem vínculo com a versão, e elas não são mostradas na saída do ldd) e tommath (libtommath.so.0).
Dependendo da distribuição Linux, precisamos usar nomes de bibliotecas com ou sem versões. Os comandos práticos de copiar e colar são mostrados acima, e abaixo os descrevemos.
CentOS e Oracle Linux
A versão 7 contém os pacotes necessários por padrão, a versão 8 requer a instalação de ncurses-compat-libs e a criação do link simbólico libtommath.so.0.
Debian, Ubuntu e OpenSUSE
Nas versões Debian 9 e 10, Ubuntu 18 e 20, OpenSUSE 15, temos que instalar libncurses5 e libtommath1, e para identificar a versão do ICU, podemos usar a busca pelo nome incompleto:
no Ubuntu
apt-cache search libicu5
no OpenSUSE 15
zypper search libicu6
Detalhes da instalação do Firebird
Antes da instalação, aumentamos o parâmetro do sistema vm.max_map_count, instalamos as bibliotecas ICU, ncurses e tommath. Em seguida, verificamos se temos as versões corretas de ncurses e tommath (libncures.so.5 e libtommath.so.0) ou criamos os links simbólicos necessários.
Opcionalmente, poderíamos criar usuário e grupo firebird.
Depois disso, podemos instalar o Firebird. Para isso, vamos para a pasta onde o pacote de instalação foi descompactado e iniciamos a instalação:
./install.sh
pressione Enter para confirmar a instalação e, quando solicitado, especifique a senha para SYSDBA.
Inicialmente, o Firebird será instalado com o arquivo de configuração padrão. A configuração padrão executa como arquitetura SuperServer com valores modestos: cache (DefaultDbCachePages, também chamado de Page buffers) por banco de dados é definido como 2048, buffer para classificações (TempCacheLimit) é 64M (para o servidor no v3 e por banco de dados no v4).
Para visualizar os parâmetros não comentados do firebird.conf, você pode usar o seguinte comando:
grep -v ^# firebird.conf | grep -v ^$
Se você gerar o arquivo de configuração ideal com o Firebird Configuration Calculator ou alterar parâmetros manualmente, observe que as alterações serão aplicadas após a reinicialização do serviço do Firebird (no caso de SuperServer e SuperClassic, no caso de Classic, é necessário reiniciar todos os processos do Firebird).
Observe que desde o Firebird 3, existem unidades systemd separadas para SuperServer, SuperClassic e Classic.