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

Neste artigo, descrevemos o conjunto mínimo de etapas necessárias para a instalação ideal do Firebird versão 3.0 em novas distribuições Linux. Por exemplo, foram selecionados o CentOS 8 e o Ubuntu 19.

Para "entregar" a distribuição do Firebird ao sistema de destino, neste guia, foi selecionada a opção de baixar o arquivo tar.gz do link do site oficial do projeto ( firebirdsql.org ).

Para os mais impacientes - imediatamente na batalha:

Instalação rápida


Edite 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 o CentOS 8 e o Ubuntu 19, mas também indicam o link do site oficial do projeto Firebird para baixar o pacote de distribuição e o diretório no qual o pacote de distribuição será descompactado durante o processo de inicialização.
Atualmente (março de 2020), o Firebird 3.0.5 é relevante ( aqui está um link para a versão 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

Na verdade, instalando o Firebird DBMS:

cd /tmp/
sudo ./install.sh

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

Parte principal

Preâmbulo pequeno

Supõe-se que o sistema operacional já esteja instalado na versão mínima e o acesso aos repositórios públicos ou às suas cópias locais esteja configurado.

Supõe-se que o leitor tenha conhecimento básico do Linux e do Firebird DBMS.

Planejamento É

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

Temporário incluem arquivos de bloqueio, arquivos de classificação, arquivos de "materialização" de tabelas temporárias globais (GTTs) e tabelas de monitoramento. Os arquivos de classificação e as tabelas temporárias globais estão localizados /tmp, e os arquivos de tabela $ mon e os arquivos de bloqueio estão localizados /tmp/firebird.

Os arquivos de classificação são "excluídos" ( unlink) imediatamente após a criação, portanto, não podem ser "vistos" na lista de diretórios - apenas na lista de identificadores de processo (marcados como deleted):

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

Na lista de pseudo- /proc/…/fd/diretórios, os 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 é o descritor (descritor) do arquivo de interesse.

Em vez de chamar " pgrep -", você pode substituir imediatamente o identificador do processo de interesse.

Os arquivos temporários podem ser muito grandes, portanto, é /tmprecomendável alocar pelo menos 20 a 30 GB para. Lembre-se de que o tamanho dos arquivos de classificação depende apenas da quantidade de dados que é explícita ou implicitamente classificada na solicitação e que um único usuário pode "criar" gigabytes de arquivos temporários.

A seção para arquivos de banco de dados deve conter todos os arquivos de banco de dados. além de pelo menos uma cópia do maior arquivo de banco de dados. Deve levar em consideração o crescimento dos arquivos de banco de dados no futuro por vários anos de antecedência.

A seção de backups locais deve conter pelo menos um arquivo de backup de todas as bases, mais o backup da maior base. É aconselhável que esta seção também tenha um local para restaurar a maior base. Ele deve levar em consideração o crescimento de backups e arquivos de backup no futuro nos próximos anos.

Preparação preliminar O

servidor DBMS do Firebird 3.0 aloca e libera dinamicamente a memória do sistema, o que pode levar à fragmentação. Por exemplo, depois que um grande número de usuários se desconecta do super servidor de uma só vez, podem ocorrer erros com novas conexões.

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

sudo sysctl vm.max_map_count=256000

Para definir o novo valor quando o sistema reiniciar, adicione a /etc/sysctl.conflinha ao arquivo :

vm.max_map_count = 256000

É recomendável fazer um comentário para que o motivo da alteração desse parâmetro seja entendido. Você pode editar o arquivo e aplicar as configurações salvas nele:

sudo sysctl -p /etc/sysctl.conf

Instalar os pacotes necessários Os

executáveis ​​do DBMS do Linux do Firebird 3.0 dependem das bibliotecas ncurses ( libncurses.so.5), ICU (sem ligações de versão e sem saída ldd) e das bibliotecas tommath ( libtommath.so.0). Para baixar e descompactar o conjunto arquivar, utilitários são necessários gzip, tare curlou wget. A versão da UTI gzip, tare curl/ wget- é insignificante.

O trabalho com pacotes depende do sistema e do gerenciador de pacotes usado no sistema; portanto, nós os consideraremos um a um.

CentOS 8 O

CentOS 8 usa o novo gerenciador de pacotes - dnfe é chamado "transparentemente" sob comando yum. Como não há diferença entre eles para nossos propósitos, haverá exemplos yum.

Atualizando o cache de metadados:sudo yum makecache

O pacote libtomath está localizado em repositórios separados E (xtra) P (ackages para) E (nterprise) L (inux), portanto, verificamos se ele já está conectado:

yum -C repolist

A opção "only from the cache" ( -Cou --cache-only) é usada para eliminar verificações e downloads desnecessários, acelerando o yum. Se não houver 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 de pgp-keys com os já conhecidos de uma fonte confiável.

Se você tiver problemas para fazer o download das metainformações do repositório a partir de recursos https, edite o arquivo /etc/yum.repos.d/epel.repo, substituindo-o https://por http://e repita o comando cache update.

Verifique o status dos pacotes necessários (o comando é dobrado, no exemplo de saída, 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

Vemos isso curl, gzipe ncursesestamos localizados no pseudo-repositório do instalador ( anaconda), e tar- é excluído da instalação mínima do sistema. Versões principais libncursese libtommathmais 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

Os

utilitários Ubuntu 19 são projetados para gerenciamento de pacotes apt, apt‑gete apt‑cache. O primeiro é projetado para o trabalho interativo, e os dois últimos - para uso em scripts. Os nomes dos pacotes são ligeiramente diferentes e incluem uma versão.

Verificamos o status dos pacotes necessários (o comando é complexo, o exemplo de saída é reduzido 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 installed/ upgradable- são instalados entre colchetes . Disponível, mas não instalado ncurses5, em vez de curlinstalado wget. Instale os pacotes ausentes:

sudo apt‑get install \
libncurses5 libtommath1

Criando links simbólicos

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

Nós encontramos 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

Crie 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

Verifique o resultado (o comando é dobrado, 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 do Firebird DBMS.

O site oficial do projeto Firebird (firebirdsql.org) publica links para distribuições de lançamentos "oficiais" (lançamentos) e assembléias "diárias" (criação de instantâneos).

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

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

ondulação:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Por padrão, ele curlenvia os dados carregados para a saída padrão, mas não processa redirecionamentos e adicionamos " ‑L", mas wget, pelo contrário: processa redirecionamentos, mas grava dados em um arquivo e colocamos " ‑O‑". Para tarindicar o uso do gzipfiltro e o diretório no qual a descompactação será executada. Após a conclusão do processo será tipo de diretório Firebird‑3.0.5.33220‑0.amd64com três arquivos: install.sh, buildroot.tar.gze manifest.txt.

Instalando o Firebird

Durante a preparação preliminar, ajustamos o valor do parâmetro do sistema vm.max_map_count, verificamos a disponibilidade e instalamos as bibliotecas ICU, ncurses e tommath. Garantimos que as versões de ncurses e tommath ( libncures.so.5e libtommath.so.0) estavam corretas e criamos os links simbólicos necessários.

Na verdade a instalação é muito simples. Vamos para o diretório em que o arquivo do kit de distribuição Firebird foi descompactado, verificamos e, se necessário, definimos o sinalizador "executável" para o script install.sh:

chmod +x install.sh

execute o script de instalação:

sudo ./install.sh

pressionando a tecla Enter, confirmamos o início da instalação e, após o recebimento da solicitação, digite a senha do sysdba.

O script de instalação inicia automaticamente uma systemdunidade firebird-superserver(a arquitetura padrão do Firebird 3.0). O serviço Firebird funcionará com parâmetros padrão para um super servidor: um cache de página de 2048 páginas (por base), um buffer de classificação de 64 MB (compartilhado) e conectando apenas clientes da terceira versão. Exibir opções firebird.conf:

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

Observe que novos valores de firebird.confsomente serão ativados depois que o serviço Firebird for reiniciado.

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

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

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

Para mudar para a arquitetura clássica, você deve especificar pelo menos explicitamente ServerModeem firebird.conf, reduzir o cache de página no mesmo lugar (não mais de 2K), reduzir o buffer de ordenação (a quantidade total admissível de todos os tipos, dividido pelo número máximo de conexões), desativar e parar a unidade firebird-superserver, habilitar e correr unidade firebird-classic.socket.

O uso da arquitetura superclássica no Firebird 3.0 não faz muito sentido: "confiabilidade" - como um super servidor, possui o mesmo buffer de classificação geral. Não há cache de página geral e a "perda" de sincronizar conexões diferentes entre si é a mesma de um clássico.

Deve-se lembrar que no Firebird 3.0 alguns dos parâmetros (cache de página, tamanhos de arquivo de bloqueio, tabelas de hash e outros) podem ser configurados databases.confindividualmente para cada banco de dados. Para uma superserver é útil, por exemplo, para definir um valor pequeno DefaultDbCachePagesem firebird.confe definir caches de páginas individuais para as bases de dados necessárias databases.conf.

Faça perguntas sobre o artigo nos comentários ou escreva cartas para o nosso endereço de suporte support@ibase.ru.

All Articles