Installere Firebird 3 på moderne versjoner av Linux: CentOS8 og Ubuntu 19

I denne artikkelen vil vi beskrive minimumssettet med handlinger som kreves for optimal installasjon av Firebird DBMS versjon 3.0 på nye Linux-distribusjoner. CentOS 8 og Ubuntu 19 er valgt for eksempler.

For å "levere" Firebird-distribusjonen til målsystemet, i denne veiledningen, velges alternativet for å laste ned tar.gz-arkivet ved å bruke en lenke fra det offisielle prosjektets nettsted (firebirdsql.org).

For de mest utålmodige, gå rett ut i kamp:

Rask installasjon

Redigerer filen /etc/sysctl.confved å legge til linjen:

vm.max_map_count = 256000

Lagre filen og bruk innstillingen:

sudo sysctl -p /etc/sysctl.conf

Ytterligere instruksjoner er forskjellige for CentOS 8 og Ubuntu 19, men ССЫЛКА и КАТАЛОГ angi en lenke fra det offisielle Firebird-prosjektets nettsted for nedlasting av distribusjonen og katalogen som distribusjonen skal pakkes ut i under nedlastingsprosessen.
For øyeblikket (mars 2020) er den nåværende utgivelsen Firebird 3.0.5 (her er lenken til 64-bitsversjonen).

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

Selve installasjonen av Firebird DBMS:

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

Hvis du vil forstå bedre hva disse handlingene gjør, les videre.

Hoveddel

En kort ingress

Det antas at operativsystemet allerede er installert i en minimal versjon og tilgang til offentlige depoter eller deres lokale kopier er konfigurert.

Det forutsettes at leseren har grunnleggende kunnskap om Linux og Firebird DBMS.

Планирование

På DBMS-serveren anbefales det å tildele separate seksjoner for midlertidige filer (/tmp), databasefiler og lokale sikkerhetskopier.

Midlertidige inkluderer låsefiler, sorteringsfiler, "materialiserings"-filer av globale midlertidige tabeller (GTT) og overvåkingstabeller. Filene for sortering og globale midlertidige tabeller ligger i /tmp, mon$-table-filer og låse-filer – inn /tmp/firebird.

Sorteringsfiler "slettes" (unlink) umiddelbart etter opprettelse, så de kan ikke "ses" i katalogoppføringen - bare i listen over prosesshåndtak (merket som deleted):

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

I pseudokatalogoppføringen /proc/…/fd/ symbolkoblinger vises, og faktisk informasjon om filen er gitt av:

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

der НОМЕР – deskriptor (deskriptor) av filen av interesse.

I stedet for å ringe "pgrep исполняемый-файл"Du kan umiddelbart erstatte identifikatoren for prosessen av interesse.

Midlertidige filer kan være veldig store, så /tmp Det anbefales å tildele minst 20-30 GB. Det bør tas i betraktning at størrelsen på sorteringsfiler bare avhenger av mengden data som er eksplisitt eller implisitt sortert i forespørselen, og en enkelt bruker kan "lage" gigabyte med midlertidige filer.

Seksjonen for databasefiler må romme alle databasefiler. pluss, som et minimum, en kopi av den største databasefilen. Det er nødvendig å ta hensyn til veksten av databasefiler i fremtiden i flere år fremover.

Den lokale sikkerhetskopieringsdelen må inneholde minst ett sikkerhetskopiarkiv av alle databaser pluss en sikkerhetskopi av den største databasen. Det er ønskelig at denne delen også inneholder plass for å gjenopprette den største databasen. Veksten av sikkerhetskopier og sikkerhetskopiarkiver i fremtiden i flere år bør tas i betraktning.

Foreløpig forberedelse

Firebird 3.0 DBMS-serveren tildeler og frigjør systemminne dynamisk, noe som kan føre til fragmentering. For eksempel, etter at et stort antall brukere er koblet fra superserveren på en gang, kan det oppstå feil når du oppretter nye tilkoblinger.

Minnefragmentering styres av en systemparameter vm.max_map_count, standard er 64K. Det anbefales å øke verdien med fire ganger:

sudo sysctl vm.max_map_count=256000

Slik at den nye verdien settes når systemet starter på nytt, legg til i filen /etc/sysctl.conf linje:

vm.max_map_count = 256000

Det anbefales å gi en kommentar slik at årsaken til å endre denne parameteren er klar. Du kan først redigere filen og deretter bruke innstillingene som er lagret i den:

sudo sysctl -p /etc/sysctl.conf

Installerer nødvendige pakker

Kjørbare filer av Firebird 3.0 Linux DBMS avhenger av ncurses-bibliotekene (libncurses.so.5), ICU (ikke knyttet til versjon og vises ikke i utdata ldd) og tommath (libtommath.so.0). For å laste ned og pakke ut monteringsarkivet trenger du verktøy gzip, tar и curl eller wget. ICU-versjoner, gzip, tar и curl/wget – er ubetydelige.

Arbeid med pakker avhenger av systemet og pakkebehandlingen som brukes i systemet, så vi vil vurdere dem én etter én.

8 CentOS

CentOS 8 bruker en ny pakkebehandling – dnf og det kalles "gjennomsiktig" etter kommando yum. Siden for våre formål er det ingen forskjell mellom dem - i eksemplene vil det være yum.

Oppdater metadatabufferen: sudo yum makecache

Libtomath-pakken ligger i et eget E(xtra)P(pakker for)E(nterprise)L(inux), så vi sjekker at den allerede er inkludert:

yum -C repolist

Alternativ "bare fra cache" (-C eller --cache-only) brukes til å eliminere unødvendige kontroller og nedlastinger, noe som gjør yum raskere. Hvis det ikke er noe epel-lager i listen, installer det og oppdater metadatabufferen:

sudo yum install epel-release &&
sudo yum makecache

Vi bekrefter forespørsler, om nødvendig, kontrollerer verdiene til pgp-nøkler med de som allerede er kjent fra en pålitelig kilde.

Hvis det er problemer med å laste arkivmetainformasjon fra https-ressurser, må du redigere filen /etc/yum.repos.d/epel.repo, erstatte https://http:// og gjenta hurtigbufferoppdateringskommandoen.

Vi sjekker statusen til de nødvendige pakkene (kommandoen er komplisert, i eksempelutgangen er 32-biters pakken filtrert):

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

Det ser vi curl, gzip и ncurses vert i installasjonsprogrammets pseudo-repository (anaconda), a tar – ekskludert fra minimum systeminstallasjon. Hovedversjoner libncurses и libtommath mer enn nødvendig: 6 og 1 i stedet for henholdsvis 5 og 0. Hvis den samme pakken er både installert og tilgjengelig, er det utgitt en oppdatering for den. Installer de manglende pakkene:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Verktøy er utviklet for å administrere pakker apt, apt‑get и apt‑cache. Den første er designet for interaktivt arbeid, og de to siste er designet for bruk i skript. Pakkenavnene er litt forskjellige og inkluderer versjonen.

Vi sjekker statusen til de nødvendige pakkene (kommandoen er kombinert, eksempelutgangen er forkortet og 32-biters pakker filtreres ut):

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]

Pakker som firkantede parenteser indikerer installed/upgradable – installert. Tilgjengelig, men ikke installert ncurses5, i stedet for curl installert wget. Installer de manglende pakkene:

sudo apt‑get install 
libncurses5 libtommath1

Lage symbolkoblinger

Siden libtommath.so.1 и libncurses.so.6 bakoverkompatibel med libtommath.so.0 и libncurses.so.5, så er det for Firebird nok å lage symbolkoblinger til de eksisterende versjonene av bibliotekene.

Finne libtommath.so.1 (libncurses.so.? ligger i samme katalog):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Vi lager symbolkoblinger.

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

La oss sjekke resultatet (kommandoen er komplisert, utdataeksemplene er forkortet):

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

Laster ned Firebird DBMS-distribusjonssettet.

Den offisielle nettsiden til Firebird-prosjektet (firebirdsql.org) publiserer lenker til distribusjoner av "offisielle" utgivelser og "daglige" bygg (øyeblikksbilder).

Offisielle Linux-utgivelser er tilgjengelige som arkiver (tar.gz) og deb/rpm-pakker, men bygg er kun tilgjengelig som arkiver. Vi vil vurdere "generisk installasjonsprogram" (generisk installasjonsprogram fra tar.gz).

Byggarkivet må lastes ned og pakkes ut, men vi vil kombinere begge prosessene. Utpakking er gjort i /tmp,URL angir lenken til det nedlastbare arkivet.

krøll:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Som standard curl sender de nedlastede dataene til stdout, men håndterer ikke omdirigeringer og vi legger til "‑L", men wgettvert imot: håndterer omdirigeringer, men skriver data til en fil og vi legger "‑O‑" Til tar angi bruk gzip-filter og katalogen som utpakkingen skal utføres i. Når prosessen er fullført, vil en katalog som denne vises Firebird‑3.0.5.33220‑0.amd64 med tre filer: install.sh, buildroot.tar.gz и manifest.txt.

Installerer Firebird

Under den foreløpige forberedelsen justerte vi verdien på systemparameteren vm.max_map_count, sjekket for tilgjengelighet og installerte ICU, ncurses og tommath-bibliotekene. Pass på at versjonene av ncurses og tommath er riktige (libncures.so.5 и libtommath.so.0) og opprettet de nødvendige symbolkoblingene.

Selve installasjonen er veldig enkel. Gå til katalogen der Firebird-distribusjonsarkivet ble pakket ut, sjekk og sett om nødvendig "kjørbar"-flagget for skriptet install.sh:

chmod +x install.sh

kjør installasjonsskriptet:

sudo ./install.sh

Ved å trykke på Enter-tasten bekrefter vi starten på installasjonen, og ved mottak av forespørselen, skriv inn sysdba-passordet.

Installasjonsskriptet starter automatisk systemd-enhet firebird-superserver (silent Firebird 3.0-arkitektur). Firebird-tjenesten vil fungere med standardparametrene for superserveren: en sidebuffer på 2048 sider (per database), en sorteringsbuffer på 64 MB (delt) og kobler kun til versjon XNUMX-klienter. Vis alternativer firebird.conf:

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

Vær oppmerksom på at de nye verdiene fra firebird.conf aktiveres først etter å ha startet Firebird-tjenesten på nytt.

Når du velger parameterverdier, bør det tas i betraktning at det er tre hoved "forbrukere": sidebufferen (for databasen), sorteringsbufferen (delt) og minnet som er tildelt av serveren for klienttilkoblinger. Du kan bare administrere de to første - mengden minne for klienttilkoblinger avhenger av antallet og teksten til hurtigbufrede spørringer, planene deres og databaseobjektene som er involvert i spørringene. Klientforbindelsesminneestimater gjøres kun empirisk og kan endres etter hvert som klientapplikasjoner og/eller databaseobjekter endres.

For en superserver på verter med en liten mengde minne (opptil 12-16 GB), bør du ikke tildele mer enn en tredjedel eller en fjerdedel av den totale mengden RAM for sidebufferen og sorteringsbufferen.

Hvis antallet databaser ikke er fast og kan endres, bør den totale mengden sidebufferminne deles på det maksimale antallet databaser som kan være på serveren. Størrelsen på sidebufferen er spesifisert i sider og må konverteres separat til byte.

For å bytte til den klassiske arkitekturen, må du som et minimum spesifisere eksplisitt ServerMode в firebird.conf, reduser sidebufferen der (ikke mer enn 2K), reduser sorteringsbufferen (det totale tillatte volumet av alle slag delt på maksimalt antall tilkoblinger), deaktiver og stopp enheten firebird-superserver, aktiver og start enheten firebird-classic.socket.

Å bruke den superklassiske arkitekturen i Firebird 3.0 gir ikke mye mening: "pålitelighet" er som en superserver og den samme generelle sorteringsbufferen. Det er ingen felles sidebuffer, og "tapene" for å synkronisere forskjellige forbindelser med hverandre er de samme som i den klassiske.

Det bør huskes at i Firebird 3.0 kan noen parametere (sidebuffer, låsefilstørrelser, hashtabeller og noen andre) settes i databases.conf individuelt for hver database. For en superserver er det for eksempel nyttig å sette en liten verdi DefaultDbCachePages в firebird.conf og installer individuelle sidebuffere for de nødvendige databasene i databases.conf.

Still spørsmål om artikkelen i kommentarfeltet, eller skriv brev til vår støtteadresse [e-postbeskyttet].

Kilde: www.habr.com

Legg til en kommentar