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
- Adicione ao arquivo /etc/sysctl.conf a seguinte linha:
vm.max_map_count = 256000
- 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.
- 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:
/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
- 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):
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
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
Criando links simbólicos
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:
/usr/lib64/libtommath.so.1
No Ubuntu 19:
/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á:
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á:
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:
-
o repositório pode conter a versão antiga (ou seja, versão menor anterior),
-
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]