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.conf
adicionando 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 8sudo 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 19sudo 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 principalPreâmbulo pequenoSupõ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, é /tmp
recomendá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 Oservidor 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.conf
linha 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 Osexecutá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
, tar
e curl
ou wget
. A versão da UTI gzip
, tar
e 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 OCentOS 8 usa o novo gerenciador de pacotes - dnf
e é 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" ( -C
ou --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
, gzip
e ncurses
estamos localizados no pseudo-repositório do instalador ( anaconda
), e tar
- é excluído da instalação mínima do sistema. Versões principais libncurses
e 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
Osutilitários Ubuntu 19 são projetados para gerenciamento de pacotes apt
, apt‑get
e 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 curl
instalado wget
. Instale os pacotes ausentes:sudo apt‑get install \
libncurses5 libtommath1
Criando links simbólicosComo libtommath.so.1
eles são libncurses.so.6
compatíveis com versões anteriores libtommath.so.0
e 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 curl
envia 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 tar
indicar o uso do gzip
filtro 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.amd64
com três arquivos: install.sh
, buildroot.tar.gz
e manifest.txt
.Instalando o FirebirdDurante 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.5
e 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 systemd
unidade 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.conf
somente 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 ServerMode
em 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.conf
individualmente para cada banco de dados. Para uma superserver é útil, por exemplo, para definir um valor pequeno DefaultDbCachePages
em firebird.conf
e 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.