Firebird 3 installeren op moderne versies Linux: CentOS8 en Ubuntu 19

In dit artikel beschrijven we de minimale stappen die nodig zijn voor een optimale installatie van Firebird DBMS versie 3.0 op nieuwe distributies. LinuxDe volgende voorbeelden werden geselecteerd: CentOS 8 en Ubuntu 19.

Om de Firebird-distributie aan het doelsysteem te “leveren”, wordt in deze handleiding de optie voor het downloaden van het tar.gz-archief geselecteerd met behulp van een link van de officiële projectwebsite (firebirdsql.org).

Voor de meest ongeduldigen: ga direct de strijd aan:

Snelle installatie

Het bestand bewerken /etc/sysctl.confdoor de regel toe te voegen:

vm.max_map_count = 256000

Sla het bestand op en pas de instelling toe:

sudo sysctl -p /etc/sysctl.conf

Verdere instructies kunnen variëren. CentOS 8 en Ubuntu 19, maar ССЫЛКА и КАТАЛОГ geef een link aan van de officiële Firebird-projectwebsite voor het downloaden van de distributie en de map waarin de distributie zal worden uitgepakt tijdens het downloadproces.
Momenteel (maart 2020) is de huidige release Firebird 3.0.5 (hier is de link naar de 64-bits versie).

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

De daadwerkelijke installatie van het Firebird DBMS:

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

Als je beter wilt begrijpen wat deze acties doen, lees dan verder.

Het grootste deel

Een korte inleiding

Er wordt aangenomen dat het besturingssysteem al in een minimale versie is geïnstalleerd en dat de toegang tot openbare opslagplaatsen of hun lokale kopieën is geconfigureerd.

Er wordt van uitgegaan dat de lezer over basiskennis beschikt van Linux en Firebird DBMS.

planning

Op de DBMS-server wordt aanbevolen om afzonderlijke secties toe te wijzen voor tijdelijke bestanden (/tmp), databasebestanden en lokale back-ups.

Tijdelijke bestanden zijn onder meer lock-bestanden, sorteerbestanden, “materialisatie”-bestanden van globale tijdelijke tabellen (GTT) en monitoringtabellen. De bestanden voor het sorteren en globale tijdelijke tabellen bevinden zich in /tmp, mon$-table-bestanden en lock-bestanden – in /tmp/firebird.

Sorteerbestanden worden “verwijderd” (unlink) onmiddellijk na het aanmaken, zodat ze niet kunnen worden “gezien” in de directorylijst - alleen in de lijst met proceshandvatten (gemarkeerd als deleted):

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

In de pseudo-directorylijst /proc/…/fd/ symlinks worden weergegeven en feitelijke informatie over het bestand wordt gegeven door:

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

waar НОМЕР – descriptor (descriptor) van het betreffende bestand.

In plaats van te bellen "pgrep исполняемый-файл"Je kunt onmiddellijk de identificatie van het betreffende proces vervangen.

Tijdelijke bestanden kunnen erg groot zijn, dus /tmp Het wordt aanbevolen om minimaal 20-30 GB toe te wijzen. Houd er rekening mee dat de grootte van de sorteerbestanden alleen afhangt van de hoeveelheid gegevens die expliciet of impliciet in het verzoek is gesorteerd, en dat een enkele gebruiker gigabytes aan tijdelijke bestanden kan “creëren”.

Het gedeelte voor databasebestanden moet alle databasebestanden bevatten. plus minimaal een kopie van het grootste databasebestand. Het is noodzakelijk om de komende jaren rekening te houden met de groei van databasebestanden.

De sectie lokale back-ups moet minimaal één back-uparchief van alle databases bevatten, plus een back-up van de grootste database. Het is wenselijk dat deze sectie ook ruimte bevat voor het herstellen van de grootste database. Er moet rekening worden gehouden met de groei van back-ups en back-uparchieven in de toekomst gedurende meerdere jaren.

Voorbereidende voorbereiding

De Firebird 3.0 DBMS-server wijst systeemgeheugen dynamisch toe en maakt het vrij, wat tot fragmentatie ervan kan leiden. Nadat bijvoorbeeld een groot aantal gebruikers in één keer de verbinding met de superserver heeft verbroken, kunnen er fouten optreden bij het maken van nieuwe verbindingen.

Geheugenfragmentatie wordt bestuurd door een systeemparameter vm.max_map_count, standaard is 64K. Het wordt aanbevolen om de waarde ervan vier keer te verhogen:

sudo sysctl vm.max_map_count=256000

Voeg het bestand toe zodat de nieuwe waarde wordt ingesteld wanneer het systeem opnieuw opstart /etc/sysctl.conf lijn:

vm.max_map_count = 256000

Het is raadzaam om een ​​opmerking te maken, zodat de reden voor het wijzigen van deze parameter duidelijk is. U kunt het bestand eerst bewerken en vervolgens de daarin opgeslagen instellingen toepassen:

sudo sysctl -p /etc/sysctl.conf

Vereiste pakketten installeren

Firebird 3.0 DBMS uitvoerbare bestanden Linux afhankelijk van ncurses-bibliotheken (libncurses.so.5), ICU (niet gebonden aan versie en niet weergegeven in uitvoer ldd) en tommath (libtommath.so.0). Om het montagearchief te downloaden en uit te pakken, hebt u hulpprogramma's nodig gzip, tar и curl of wget. ICU-versies, gzip, tar и curl/wget – zijn onbeduidend.

Het werken met pakketten hangt af van het systeem en van de pakketbeheerder die in het systeem wordt gebruikt, dus we zullen ze één voor één bekijken.

CentOS 8

CentOS Versie 8 gebruikt een nieuwe pakketbeheerder – dnf en het wordt op commando “transparant” genoemd yum. Omdat er voor onze doeleinden geen verschil tussen hen is, zal dat in de voorbeelden wel het geval zijn yum.

Update de metagegevenscache: sudo yum makecache

Het libtomath-pakket bevindt zich in een aparte E(xtra)P(ackages for)E(nterprise)L(inux)-repository, dus we controleren of het al is opgenomen:

yum -C repolist

Optie "alleen uit cache" (-C of --cache-only) wordt gebruikt om onnodige controles en downloads te elimineren, waardoor yum sneller wordt. Als er geen epel-repository in de lijst staat, installeer deze dan en update de metadata-cache:

sudo yum install epel-release &&
sudo yum makecache

We bevestigen verzoeken, indien nodig, waarbij we de waarden van pgp-sleutels controleren met de waarden die al bekend zijn van een vertrouwde bron.

Als er problemen zijn met het laden van meta-informatie uit de https-bronnen, bewerk dan het bestand /etc/yum.repos.d/epel.repo, vervangen https:// op http:// en herhaal de cache-updateopdracht.

We controleren de status van de vereiste pakketten (de opdracht is ingewikkeld, in de voorbeelduitvoer wordt het 32-bits pakket gefilterd):

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

We zien dat curl, gzip и ncurses gehost in de pseudo-repository van het installatieprogramma (anaconda), en tar – uitgesloten van de minimale systeeminstallatie. Belangrijke versies libncurses и libtommath meer dan nodig: 6 en 1 in plaats van respectievelijk 5 en 0. Als hetzelfde pakket zowel geïnstalleerd als beschikbaar is, is er een update voor uitgebracht. Installeer de ontbrekende pakketten:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Hulpprogramma's zijn ontworpen om pakketten te beheren apt, apt‑get и apt‑cache. De eerste is ontworpen voor interactief werk en de laatste twee zijn ontworpen voor gebruik in scripts. De pakketnamen zijn enigszins verschillend en bevatten de versie.

We controleren de status van de vereiste pakketten (de opdracht wordt gecombineerd, de voorbeelduitvoer wordt ingekort en 32-bits pakketten worden eruit gefilterd):

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]

Pakketten waarvoor de vierkante haakjes dit aangeven installed/upgradable – geïnstalleerd. Beschikbaar maar niet geïnstalleerd ncurses5, in plaats van curl geïnstalleerd wget. Installeer de ontbrekende pakketten:

sudo apt‑get install 
libncurses5 libtommath1

Symlinks maken

Sinds libtommath.so.1 и libncurses.so.6 achterwaarts compatibel met libtommath.so.0 и libncurses.so.5, dan is het voor Firebird voldoende om symlinks naar de bestaande versies van de bibliotheken te maken.

We vinden libtommath.so.1 (libncurses.so.? bevindt zich in dezelfde map):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

We creëren symlinks.

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

Laten we het resultaat controleren (de opdracht is ingewikkeld, de uitvoervoorbeelden zijn ingekort):

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

De Firebird DBMS-distributiekit downloaden.

De officiële website van het Firebird-project (firebirdsql.org) publiceert links naar distributies van “officiële” releases en “dagelijkse” builds (snapshot-builds).

Officiële Linux-releases zijn beschikbaar als archieven (tar.gz) en deb/rpm-pakketten, maar builds zijn alleen beschikbaar als archieven. We zullen het "generieke installatieprogramma" overwegen (generieke installatieprogramma van tar.gz).

Het buildarchief moet worden gedownload en uitgepakt, maar we zullen beide processen combineren. Het uitpakken is binnen gedaan /tmp,URL geeft de link naar het downloadbare archief aan.

Krul:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Bij verstek curl stuurt de gedownloade gegevens naar stdout maar verwerkt geen omleidingen en we voegen toe "‑L", A wget, integendeel: verwerkt omleidingen, maar schrijft gegevens naar een bestand en we plaatsen "‑O‑" Voor tar gebruik aangeven gzip-filter en de map waarin het uitpakken zal worden uitgevoerd. Wanneer het proces is voltooid, verschijnt een map zoals deze Firebird‑3.0.5.33220‑0.amd64 met drie bestanden: install.sh, buildroot.tar.gz и manifest.txt.

Firebird installeren

Tijdens de voorbereidende voorbereiding hebben we de waarde van de systeemparameter aangepast vm.max_map_count, gecontroleerd op beschikbaarheid en de ICU-, ncurses- en tommath-bibliotheken geïnstalleerd. Zorg ervoor dat de versies van ncurses en tommath correct zijn (libncures.so.5 и libtommath.so.0) en creëerde de nodige symlinks.

De daadwerkelijke installatie is heel eenvoudig. Ga naar de map waar het Firebird-distributiearchief is uitgepakt, controleer en stel indien nodig de vlag "uitvoerbaar" voor het script in install.sh:

chmod +x install.sh

voer het installatiescript uit:

sudo ./install.sh

Door op de Enter-toets te drukken bevestigen we de start van de installatie en na ontvangst van het verzoek voeren we het sysdba-wachtwoord in.

Het installatiescript start automatisch systemd-eenheid firebird-superserver (stille Firebird 3.0-architectuur). De Firebird-service werkt met de standaardparameters voor de superserver: een paginacache van 2048 pagina's (per database), een sorteerbuffer van 64 MB (gedeeld) en die alleen versie XNUMX-clients verbindt. Bekijk opties firebird.conf:

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

Houd er rekening mee dat de nieuwe waarden vanaf firebird.conf wordt pas geactiveerd na het opnieuw opstarten van de Firebird-service.

Bij het selecteren van parameterwaarden moet er rekening mee worden gehouden dat er drie belangrijke “consumenten” zijn: de paginacache (voor de database), de sorteerbuffer (gedeeld) en het geheugen dat door de server is toegewezen voor clientverbindingen. U kunt alleen de eerste twee beheren: de hoeveelheid geheugen voor clientverbindingen hangt af van het aantal en de tekst van de in de cache opgeslagen query's, hun plannen en de databaseobjecten die bij de query's betrokken zijn. Schattingen van het clientverbindingsgeheugen worden alleen empirisch gemaakt en kunnen veranderen naarmate clienttoepassingen en/of databaseobjecten veranderen.

Voor een superserver op hosts met een kleine hoeveelheid geheugen (tot 12-16 GB), mag u niet meer dan een derde of een kwart van de totale hoeveelheid RAM toewijzen voor de paginacache en sorteerbuffer.

Als het aantal databases niet vastligt en kan veranderen, moet de totale hoeveelheid paginacachegeheugen worden gedeeld door het maximale aantal databases dat op de server kan staan. De grootte van de paginacache wordt gespecificeerd in pagina's en moet afzonderlijk worden omgezet in bytes.

Om over te stappen naar de klassieke architectuur moet je dit minimaal expliciet specificeren ServerMode в firebird.conf, verklein de paginacache daar (niet meer dan 2K), verklein de sorteerbuffer (het totaal toegestane volume van alle soorten gedeeld door het maximale aantal verbindingen), schakel het apparaat uit en stop het firebird-superserver, schakel het apparaat in en start het firebird-classic.socket.

Het gebruik van de superklassieke architectuur in Firebird 3.0 heeft niet veel zin: “betrouwbaarheid” is als een superserver en dezelfde algemene sorteerbuffer. Er is geen gemeenschappelijke paginacache en de “verliezen” bij het synchroniseren van verschillende verbindingen met elkaar zijn hetzelfde als bij de klassieke.

Houd er rekening mee dat in Firebird 3.0 sommige parameters (paginacache, bestandsgroottes vergrendelen, hashtabellen en enkele andere) kunnen worden ingesteld in databases.conf individueel voor elke database. Voor een superserver is het bijvoorbeeld handig om een ​​kleine waarde in te stellen DefaultDbCachePages в firebird.conf en installeer individuele paginacaches voor de vereiste databases in databases.conf.

Stel vragen over het artikel in de reacties of schrijf brieven naar ons ondersteuningsadres support@ibase.ru.

Bron: www.habr.com

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster