Instalando Firebird 3 em versões modernas do Linux: CentOS8 e Ubuntu 19

Neste artigo descreveremos o conjunto mínimo de ações necessárias para uma instalação ideal do Firebird DBMS versão 3.0 em novas distribuições Linux. CentOS 8 e Ubuntu 19 são selecionados como exemplos.

Para “entregar” a distribuição Firebird ao sistema alvo, neste guia, a opção de baixar o arquivo tar.gz é selecionada através de um link do site oficial do projeto (firebirdsql.org).

Para os mais impacientes, vá direto para a batalha:

Instalação rápida

Editando o arquivo /etc/sysctl.confadicionando a linha:

vm.max_map_count = 256000

Salve o arquivo e aplique a configuração:

sudo sysctl -p /etc/sysctl.conf

Outras instruções diferem para CentOS 8 e Ubuntu 19, mas ССЫЛКА и КАТАЛОГ indique um link do site oficial do projeto Firebird para download da distribuição e o diretório no qual a distribuição será descompactada durante o processo de download.
Atualmente (março de 2020) a versão atual é Firebird 3.0.5 (aqui está o link para a versão de 64 bits).

8 CentOS

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 instalação real do Firebird DBMS:

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

Se você quiser entender melhor o que essas ações fazem, continue lendo.

Parte principal

Um breve preâmbulo

Presume-se que o SO já esteja instalado em uma versão mínima e o acesso aos repositórios públicos ou suas cópias locais esteja configurado.

Presume-se que o leitor tenha conhecimentos básicos de Linux e do SGBD Firebird.

planejamento

No servidor DBMS é recomendado alocar seções separadas para arquivos temporários (/tmp), arquivos de banco de dados e backups locais.

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

Os arquivos de classificação são “excluídos” (unlink) imediatamente após a criação, para que não possam ser “vistos” na listagem de diretórios - apenas na lista de identificadores de processos (marcados como deleted):

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

Na listagem do pseudodiretório /proc/…/fd/ links simbólicos são exibidos e as informações reais sobre o arquivo são fornecidas por:

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

onde НОМЕР – descritor (descritor) do arquivo de interesse.

Em vez de ligar "pgrep исполняемый-файл"Você pode substituir imediatamente o identificador do processo de interesse.

Arquivos temporários podem ser muito grandes, então /tmp Recomenda-se alocar pelo menos 20-30 GB. Deve-se levar em consideração que o tamanho da ordenação dos arquivos depende apenas da quantidade de dados ordenados explícita ou implicitamente na solicitação, podendo um único usuário “criar” gigabytes de arquivos temporários.

A seção para arquivos de banco de dados deve acomodar todos os arquivos de banco de dados. além de, no mínimo, uma cópia do maior arquivo de banco de dados. É necessário levar em conta o crescimento dos arquivos de banco de dados no futuro durante vários anos.

A seção de backups locais deve conter pelo menos um arquivo de backup de todos os bancos de dados, além de um backup do maior banco de dados. É desejável que esta seção também contenha espaço para restaurar o maior banco de dados. O crescimento de backups e arquivos de backup no futuro durante vários anos deve ser levado em consideração.

Preparação preliminar

O servidor SGBD Firebird 3.0 aloca e libera memória do sistema dinamicamente, o que pode levar à sua fragmentação. Por exemplo, após um grande número de usuários serem desconectados do superservidor de uma só vez, podem ocorrer erros ao fazer novas conexões.

A fragmentação da memória é controlada por um parâmetro do sistema vm.max_map_count, o padrão é 64K. Recomenda-se aumentar seu valor em quatro vezes:

sudo sysctl vm.max_map_count=256000

Para que o novo valor seja definido quando o sistema for reinicializado, adicione ao arquivo /etc/sysctl.conf linha:

vm.max_map_count = 256000

É aconselhável fazer um comentário para que fique claro o motivo da alteração deste parâmetro. Você pode primeiro editar o arquivo e depois aplicar as configurações salvas nele:

sudo sysctl -p /etc/sysctl.conf

Instalando pacotes necessários

Os arquivos executáveis ​​do SGBD Firebird 3.0 Linux dependem das bibliotecas ncurses (libncurses.so.5), ICU (não vinculado à versão e não exibido na saída ldd) e Tommat (libtommath.so.0). Para baixar e descompactar o arquivo assembly, você precisará de utilitários gzip, tar и curl ou wget. Versões de UTI, gzip, tar и curl/wget – são insignificantes.

Trabalhar com pacotes depende do sistema e do gerenciador de pacotes utilizado no sistema, por isso iremos considerá-los um por um.

8 CentOS

CentOS 8 usa um novo gerenciador de pacotes – dnf e é chamado de “transparentemente” pelo comando yum. Como para nossos propósitos não há diferença entre eles - nos exemplos haverá yum.

Atualize o cache de metadados: sudo yum makecache

O pacote libtomath está localizado em um repositório E(xtra)P(ackages for)E(nterprise)L(inux) separado, então verificamos se ele já está incluído:

yum -C repolist

Opção "somente do cache" (-C ou --cache-only) é usado para eliminar verificações e downloads desnecessários, tornando o yum mais rápido. Se não houver nenhum repositório epel na lista, instale-o e atualize o cache de metadados:

sudo yum install epel-release &&
sudo yum makecache

Confirmamos as solicitações, se necessário, verificando os valores das chaves pgp com aquelas já conhecidas de fonte confiável.

Se houver problemas ao carregar metainformações do repositório de recursos https, edite o arquivo /etc/yum.repos.d/epel.repo, substituindo https:// em http:// e repita o comando de atualização de cache.

Verificamos o status dos pacotes necessários (o comando é complicado, na saída do exemplo o pacote de 32 bits é filtrado):

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

Nós vemos que curl, gzip и ncurses hospedado no pseudo-repositório do instalador (anaconda) e tar – excluído da instalação mínima do sistema. Versões principais libncurses и libtommath mais do que o necessário: 6 e 1 em vez de 5 e 0, respectivamente. Se o mesmo pacote estiver instalado e disponível, uma atualização foi lançada para ele. Instale os pacotes ausentes:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Utilitários são projetados para gerenciar pacotes apt, apt‑get и apt‑cache. O primeiro é projetado para trabalho interativo e os dois últimos são projetados para uso em scripts. Os nomes dos pacotes são ligeiramente diferentes e incluem a versão.

Verificamos o status dos pacotes necessários (o comando é combinado, a saída do exemplo é reduzida e os pacotes de 32 bits são 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]

Pacotes para os quais os colchetes indicam installed/upgradable – instalado. Disponível, mas não instalado ncurses5em vez de curl conjunto wget. Instale os pacotes ausentes:

sudo apt‑get install 
libncurses5 libtommath1

Criando links simbólicos

Desde libtommath.so.1 и libncurses.so.6 compatível com versões anteriores libtommath.so.0 и libncurses.so.5, então para o Firebird basta criar links simbólicos para as versões existentes das bibliotecas.

Nós achamos libtommath.so.1 (libncurses.so.? localizado no mesmo diretório):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Criamos links 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

Vamos verificar o resultado (o comando é complicado, os exemplos de saída são abreviados):

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

Baixando o kit de distribuição Firebird DBMS.

O site oficial do projeto Firebird (firebirdsql.org) publica links para distribuições de lançamentos “oficiais” e compilações “diárias” (compilações de snapshots).

As versões oficiais do Linux estão disponíveis como arquivos (tar.gz) e pacotes deb/rpm, mas as compilações estão disponíveis apenas como arquivos. Consideraremos o "instalador genérico" (instalador genérico de tar.gz).

O arquivo de construção precisa ser baixado e descompactado, mas combinaremos os dois processos. A descompactação é feita em /tmp,URL indica o link para o arquivo para download.

ondulação:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Por padrão curl envia os dados baixados para stdout, mas não lida com redirecionamentos e adicionamos "‑L"E wget, pelo contrário: trata de redirecionamentos, mas grava dados em um arquivo e colocamos "‑O‑" Para tar indicar uso gzip-filter e o diretório no qual a descompactação será realizada. Quando o processo for concluído, um diretório como este aparecerá Firebird‑3.0.5.33220‑0.amd64 com três arquivos: install.sh, buildroot.tar.gz и manifest.txt.

Instalando Firebird

Durante a preparação preliminar, ajustamos o valor do parâmetro do sistema vm.max_map_count, verifiquei a disponibilidade e instalei as bibliotecas ICU, ncurses e tommath. Certifique-se de que as versões de ncurses e tommath estejam corretas (libncures.so.5 и libtommath.so.0) e criou os links simbólicos necessários.

A instalação real é muito simples. Vá até o diretório onde o arquivo de distribuição do Firebird foi descompactado, verifique e, se necessário, defina a flag “executável” do script install.sh:

chmod +x install.sh

execute o script de instalação:

sudo ./install.sh

Ao pressionar a tecla Enter confirmamos o início da instalação e, ao receber a solicitação, inserimos a senha do sysdba.

O script de instalação é iniciado automaticamente systemd-unidade firebird-superserver (arquitetura Firebird 3.0 silenciosa). O serviço Firebird funcionará com os parâmetros padrão do superservidor: cache de páginas de 2048 páginas (por banco de dados), buffer de classificação de 64 MB (compartilhado) e conectando apenas clientes da versão XNUMX. Ver opções firebird.conf:

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

Observe que os novos valores de firebird.conf será ativado somente após reiniciar o serviço Firebird.

Ao selecionar os valores dos parâmetros, deve-se levar em consideração que existem três “consumidores” principais: o cache da página (para o banco de dados), o buffer de classificação (compartilhado) e a memória alocada pelo servidor para conexões de clientes. Você só pode gerenciar os dois primeiros - a quantidade de memória para conexões de clientes depende do número e do texto das consultas em cache, de seus planos e dos objetos de banco de dados envolvidos nas consultas. As estimativas de memória de conexão do cliente são feitas apenas empiricamente e podem mudar conforme os aplicativos cliente e/ou objetos de banco de dados mudam.

Para um superservidor em hosts com pouca memória (até 12-16 GB), você não deve alocar mais de um terço ou um quarto da quantidade total de RAM para o cache de página e buffer de classificação.

Se o número de bancos de dados não for fixo e puder mudar, a quantidade total de memória cache de página deverá ser dividida pelo número máximo de bancos de dados que podem estar no servidor. O tamanho do cache de páginas é especificado em páginas e deve ser convertido separadamente em bytes.

Para mudar para a arquitetura clássica, você deve, no mínimo, especificar explicitamente ServerMode в firebird.conf, reduza o cache da página (não mais que 2K), reduza o buffer de classificação (o volume total permitido de todos os tipos dividido pelo número máximo de conexões), desative e pare a unidade firebird-superserver, habilite e inicie a unidade firebird-classic.socket.

Usar a arquitetura superclássica no Firebird 3.0 não faz muito sentido: “confiabilidade” é como um superservidor e o mesmo buffer de classificação geral. Não existe cache de páginas comum e as “perdas” para sincronizar diferentes conexões entre si são as mesmas do clássico.

Deve ser lembrado que no Firebird 3.0 alguns parâmetros (cache de páginas, tamanhos de arquivos de bloqueio, tabelas hash e alguns outros) podem ser configurados em databases.conf individualmente para cada banco de dados. Para um superservidor é útil, por exemplo, definir um valor pequeno DefaultDbCachePages в firebird.conf e instale caches de páginas individuais para os bancos de dados necessários em databases.conf.

Tire dúvidas sobre o artigo nos comentários ou escreva cartas para nosso endereço de suporte [email protegido].

Fonte: habr.com

Adicionar um comentário