I denne artikel beskriver vi det minimale sæt af handlinger, der er nødvendige for en optimal installation af database management systemet Firebird version 3.0 på nye Linux-distributioner. Vi har valgt CentOS 8 og Ubuntu 19 som eksempler.
For at 'levere' Firebird-distributionen til målsystemet, vælger vi i denne vejledning at downloade tar.gz-arkivet via linket fra det officielle projektwebsted ().
For de mest utålmodige – lad os komme direkte til sagen:
Hurtig installation
Redigér filen /etc/sysctl.conf, og tilføj linjen:
vm.max_map_count = 256000
Gem filen og anvend indstillingen:
sudo sysctl -p /etc/sysctl.conf
De følgende instruktioner adskiller sig for CentOS 8 og Ubuntu 19, men LINK og MAPPER henviser til linket fra det officielle Firebird-projektwebsted til download af distributionen og mappen hvor distributionen vil blive udpakket under downloadprocessen.
I øjeblikket (marts 2020) er udgivelsen af Firebird 3.0.5 aktuel ( til 64-bit versionen).
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 LINK|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- LINK|tar -zxC /tmp
Selve installationen af database management systemet Firebird:
cd /tmp/MAPPER
sudo ./install.sh
Hvis du ønsker bedre at forstå, hvad disse handlinger tjener til – læs videre.
Hoveddel
En kort præambel
Det antages, at operativsystemet allerede er installeret i sin minimale version og at adgangen til offentlige repositoryer eller deres lokale kopier er konfigureret.
Det forudsættes også, at læseren har grundlæggende viden om Linux og database management systemet Firebird.
Planlægning
På database serveren anbefales det at afsætte separate partitioner til midlertidige filer (/tmp), databasefiler og lokale backupfiler.
Midlertidige filer omfatter lock-filer, sorteringsfiler, 'materialisering' af globale midlertidige tabeller (GTT) og overvågningstabeller. Sorteringsfiler og globale midlertidige tabeller findes i /tmp, mon$-tabeller og lock-filer findes i /tmp/firebird.
Sorteringsfiler 'fjernes' (unlink) straks efter oprettelse, så de kan ikke 'ses' i kataloglisten – kun i descriptorlisten (handles) for processen (markeret som deleted):
sudo ls -lhF /proc/`pgrep firebird`/fd
I listen fra pseudokataloget /proc/…/fd/ vises symbolske links, og den faktiske information om filen gives af:
sudo stat -L /proc/`pgrep firebird`/fd/NUMMER
hvor NUMMER er descriptoren for den ønskede fil.
I stedet for at kalde 'pgrep executable-file' kan du straks indsætte identifikatoren for den ønskede proces.
Tidsfiler kan være meget store, så det anbefales at afsætte mindst 20-30 GB. Man skal være opmærksom på, at størrelsen på sorteringsfiler afhænger af mængden af data, der eksplicit eller implicit sorteres i forespørgslen, og en enkelt bruger kan "skabe" gigabyte af tidsfiler. /tmp Sektionen for databaser skal kunne rumme filer fra alle databaser plus, som minimum, en kopi af filen fra den største database. Man skal tage højde for væksten af databasefilerne over de kommende år.
Sektionen til lokale backups skal mindst rumme én backuparchive fra alle databaser plus backupen af den største database. Det er ønskeligt, at der også er plads til at genskabe den største database. Man skal tage højde for væksten af backups og backup-arkiver over de kommende år.
Forberedelse.
Forberedelse.
Firebird 3.0 database serveren allokerer dynamisk og frigiver systemhukommelse, hvilket kan føre til fragmentering. For eksempel kan der opstå fejl ved nye forbindelser efter at mange brugere pludselig er koblet fra superserveren.
Fragmenteringen af hukommelsen styres af systemparameteren vm.max_map_count, som som standard er 64K. Det anbefales at fordoble værdien:
sudo sysctl vm.max_map_count=256000
For at den nye værdi skal gælde ved genstart af systemet, tilføjer vi rækken i filen /etc/sysctl.conf linje:
vm.max_map_count = 256000
Det er ønskeligt at lave en kommentar, så formålet med ændringen af denne parameter er forståelig. Man kan først redigere filen og derefter anvende de indstillinger, der er gemt i den:
sudo sysctl -p /etc/sysctl.conf
Installation af nødvendige pakker
Kørbare filer til Firebird 3.0 Linux afhænger af ncurses biblioteker (libncurses.so.5), ICU (uden versionsbinding og uden visning i output ldd) og tommath (libtommath.so.0). For at downloade og udpakke byggearkivet vil der være behov for værktøjer som gzip, tar og curl eller wget. Versionerne af ICU er uvæsentlige. gzip, tar og curl/wget Arbejdet med pakker afhænger af systemet og den pakkeadministrator, der bruges i systemet, så vi vil betragte dem i rækkefølge.
CentOS 8 bruger en ny pakkeadministrator -
CentOS 8
dnf og den kan "transparent" kaldes med kommandoen yum. Da der ikke er nogen forskel mellem dem for vores formål - vil eksemplerne viseOpdaterer metadata cache: Da der ikke er nogen forskel mellem dem for vores formål - vil eksemplerne vise.
sudo yum makecache Pakken libtomath findes i et separat E(xtra)P(ackages for)E(nterprise)L(inux) repository, så vi tjekker, at den allerede er tilsluttet:
yum -C repolist
yum -C repolist
Indstillingen «kun fra cache» (-C eller --cache-only) bruges til at udelukke unødvendige kontroller og downloads, hvilket fremskynder arbejdet med yum. Hvis epel-repoet ikke er på listen – installerer vi det og opdaterer metadata-cachen:
sudo yum install epel-release &&
sudo yum makecache
Bekræft anmodningerne og sammenlign pgp-nøgleværdierne med dem, der allerede er kendt fra en pålidelig kilde, hvis nødvendigt.
Hvis der opstår problemer med at downloade metainformationer fra https-ressourcer, redigerer vi filen /etc/yum.repos.d/epel.repo, og erstatter https:// og få en fungerende kommando. http:// og gentager kommandoen for at opdatere cachen.
Kontroller status for de nødvendige pakker (kommandoen er sammensat, i eksemplet er den 32-bit pakke filtreret fra):
yum -C list
ncurses libicu libtommath
gzip tar curl wget |
grep -v i686
Installerede pakker
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
Tilgængelige pakker
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
Vi ser, at curl, gzip og ncurses er placeret i anaconda-installationspseudorepoet (anaconda), mens tar er udelukket fra den minimale systeminstallation. Hovedversionerne libncurses og libtommath er større end nødvendigt: 6 og 1 i stedet for 5 og 0, henholdsvis. Hvis den samme pakke både er installeret og tilgængelig – er der udgivet en opdatering for den. Installer de manglende pakker:
sudo yum install
libicu libtommath tar
Ubuntu 19
Til pakkeadministration bruges værktøjerne apt, apt‑get og apt‑cache. Den første er beregnet til interaktiv brug, mens de to sidste er til brug i scripts. Pakkernes navne er lidt forskellige og inkluderer versionen.
Kontroller status for de nødvendige pakker (kommandoen er sammensat, eksemplet er forkortet, og 32-bit pakker er filtreret fra):
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, for hvilke der i firkantede parenteser er angivet installed/upgradable – er installeret. Tilgængelig, men ikke installeret ncurses5, i stedet for curl installeret wget. Installer de manglende pakker:
sudo apt‑get install
libncurses5 libtommath1
Oprettelse af symlinks
Da libtommath.so.1 og libncurses.so.6 er bagudkompatible med libtommath.so.0 og libncurses.so.5, er det tilstrækkeligt at oprette symlinks til de eksisterende versionsbiblioteker for Firebird.
Find libtommath.so.1 (libncurses.so.? placeret i denne samme mappe):
find /usr -name libtommath.so.1
CentOS:
/usr/lib64/libtommath.so.1
Ubuntu:
/usr/lib/x86_64-linux-gnu/libtommath.so.1
Opret 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
Kontroller resultatet (kommandoen er sammensat, eksemplerne 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
Downloading the Firebird DBMS distribution.
Links to the official releases and daily builds of Firebird are published on the official project website (firebirdsql.org).
Official releases for Linux are available as archives (tar.gz) and deb/rpm packages, while builds are only available as archives. We will consider the 'generic installer' (generic installer from tar.gz).
The archive of the build needs to be downloaded and unpacked, but we will combine both processes. The unpacking is done in /tmp, URL denotes the link to the downloaded archive.
curl:
curl -L URL | tar -zxC /tmp
wget:
wget -O– URL | tar -zxC /tmp
By default curl sends the downloaded data to standard output but doesn’t handle redirects, and we add '-L', while wget, on the contrary: handles redirects but writes data to a file, and we use '-O-'. For tar we specify the use of gzip-filter and the directory where the unpacking will occur. Upon completion, a directory like Firebird-3.0.5.33220-0.amd64 will appear with three files: install.sh, buildroot.tar.gz og manifest.txt.
Installing Firebird
In the preliminary preparation, we adjusted the value of the system parameter vm.max_map_count, checked for the presence and installed the ICU, ncurses, and tommath libraries. We verified the versions of ncurses and tommath (libncures.so.5 og libtommath.so.0) and created the necessary symlinks.
The actual installation is quite simple. Navigate to the directory where the Firebird distribution archive was unpacked, check and, if necessary, set the 'executable' flag for the script install.sh:
chmod +x install.sh
and launch the installation script:
sudo ./install.sh
Pressing the Enter key confirms the start of the installation, and when prompted, we enter the sysdba password.
The installation script automatically starts systemd-unit firebird-superserver (default architecture for Firebird 3.0). The Firebird service will run with default parameters for the superserver: a page cache of 2048 pages (per database), a sort buffer of 64 MB (global), and connections only from third-version clients. To view the parameters firebird.conf:
grep -v ^# firebird.conf | grep -v ^$
It should be noted that new values from firebird.conf vil kun blive aktiveret efter genstart af Firebird-tjenesten.
Når værdierne for parametrene vælges, bør man tage højde for, at der er tre hoved«forbrugere»: sidecache (til databasen), sorteringsbuffer (fælles) og det mindste, der tildeles serveren til klientforbindelser. Man kan kun styre de to første – mængden af hukommelse til klientforbindelser afhænger af antallet og indholdet af cachede forespørgsler, deres planer og objekterne, der anvendes i forespørgslerne. Vurderingen af hukommelsen til klientforbindelser gøres kun empirisk og kan ændre sig med ændringer i klientapplikationer og/eller databaseobjekter.
For superservere på hosting med lav hukommelse (op til 12-16 GB) bør man ikke tildele mere end en tredjedel til tre fjerdedele af den totale RAM til sidecache og sorteringsbuffer.
Hvis antallet af databaser ikke er fast og kan ændres – skal den samlede mængde hukommelse til sidecachen deles med det maksimale antal databaser, der kan være på serveren. Størrelsen på sidecachen angives i sider, og den skal omregnes til byte.
For at skifte til classic-arkitektur kræves det minimum at angive ServerMode i firebird.conf, reducere sidecachen der (højst 2K), reducere sorteringsbufferen (den samlede tilladte størrelse af alle sorteringer divideret med det maksimale antal forbindelser), forbyde og stoppe enheden firebird-superserver, tillade og starte enheden firebird-classic.socket.
Brugen af superclassic-arkitektur i Firebird 3.0 giver ikke meget mening: "pålidelighed" – som ved superserveren og en fælles sorteringsbuffer. Der er ingen fælles sidecache, og "tabet" ved synkronisering af forskellige forbindelser er det samme som ved classic.
Det bør huskes, at i Firebird 3.0 kan nogle parametre (sidecache, størrelser af lock-filer, hash-tabeller og nogle andre) angives i databases.conf individuelt for hver database. For superserveren kan det være nyttigt, for eksempel at angive en lav værdi DefaultDbCachePages i firebird.conf og etablere individuelle sidecacher til de nødvendige databaser i databases.conf.
Spørgsmål til artiklen kan stilles i kommentarerne, eller du kan sende e-mails til vores supportadresse support@ibase.ru.
Kilde: habr.com
