Instalante Firebird 3 en Modernaj Linuksaj Versioj: CentOS8 kaj Ubuntu 19

En ĉi tiu artikolo ni priskribos la minimuman aron da agoj necesaj por optimuma instalo de la Firebird DBMS versio 3.0 en novaj Linuksaj distribuoj. CentOS 8 kaj Ubuntu 19 estas elektitaj por ekzemploj.

Por "liveri" la distribuadon de Firebird al la celsistemo, en ĉi tiu gvidilo, la opcio elŝuti la arkivon tar.gz estas elektita per ligilo de la oficiala retejo de la projekto (firebirdsql.org).

Por la plej senpaciencaj, iru rekte en batalon:

Rapida instalado

Redaktante la dosieron /etc/sysctl.confaldonante la linion:

vm.max_map_count = 256000

Konservu la dosieron kaj apliku la agordon:

sudo sysctl -p /etc/sysctl.conf

Pliaj instrukcioj malsamas por CentOS 8 kaj Ubuntu 19, sed ССЫЛКА и КАТАЛОГ indiku ligilon de la oficiala retejo de la projekto Firebird por elŝuti la distribuon kaj la dosierujon en kiu la distribuo estos malpakita dum la elŝuta procezo.
Nuntempe (marto 2020) la nuna eldono estas Firebird 3.0.5 (jen la ligilo al la 64-bita versio).

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

La fakta instalado de la Firebird DBMS:

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

Se vi volas pli bone kompreni, kion faras ĉi tiuj agoj, legu plu.

Ĉefa parto

Mallonga preambulo

Oni supozas, ke la OS jam estas instalita en minimuma versio kaj aliro al publikaj deponejoj aŭ iliaj lokaj kopioj estas agordita.

Oni supozas, ke la leganto havas bazan scion pri Linukso kaj la Firebird DBMS.

Planado

Sur la DBMS-servilo rekomendas asigni apartajn sekciojn por provizoraj dosieroj (/tmp), datumbazaj dosieroj kaj lokaj sekurkopioj.

Provizoraj inkluzivas ŝlosajn dosierojn, ordigajn dosierojn, "materialigajn" dosierojn de tutmondaj provizoraj tabeloj (GTT) kaj monitoraj tabeloj. La dosieroj por ordigo kaj tutmondaj provizoraj tabeloj troviĝas en /tmp, mon$-tabelaj dosieroj kaj ŝlosi-dosieroj – en /tmp/firebird.

Ordigaj dosieroj estas "forigitaj" (unlink) tuj post kreado, do ili ne povas esti "viditaj" en la dosieruja listo - nur en la listo de procezaj teniloj (markitaj kiel deleted):

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

En la pseŭda dosieruja listo /proc/…/fd/ simbolligoj estas montrataj, kaj realaj informoj pri la dosiero estas donitaj de:

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

kie НОМЕР – priskribilo (priskribilo) de la interesa dosiero.

Anstataŭ voki "pgrep исполняемый-файл"Vi povas tuj anstataŭigi la identigilon de la interesa procezo.

Provizoraj dosieroj povas esti tre grandaj, do /tmp Oni rekomendas asigni almenaŭ 20-30 GB. Oni devas konsideri, ke la grandeco de ordigaj dosieroj dependas nur de la kvanto de datumoj eksplicite aŭ implicite ordigitaj en la peto, kaj ununura uzanto povas "krei" gigabajtojn da provizoraj dosieroj.

La sekcio por datumbazaj dosieroj devas akomodi ĉiujn datumbazajn dosierojn. krome, minimume, kopio de la plej granda datumbaza dosiero. Necesas konsideri la kreskon de datumbazaj dosieroj estonte dum pluraj jaroj.

La lokaj sekurkopioj devas enhavi almenaŭ unu rezervan arkivon de ĉiuj datumbazoj plus sekurkopion de la plej granda datumbazo. Estas dezirinde, ke ĉi tiu sekcio ankaŭ enhavas spacon por restarigi la plej grandan datumbazon. La kresko de sekurkopioj kaj rezervaj arkivoj estonte dum pluraj jaroj estu konsiderata.

Prepara preparado

La Firebird 3.0 DBMS-servilo dinamike asignas kaj liberigas sisteman memoron, kio povas konduki al ĝia fragmentiĝo. Ekzemple, post kiam granda nombro da uzantoj estas malkonektita de la superservilo tuj, eraroj povas okazi dum farado de novaj ligoj.

Memorfragmentiĝo estas kontrolita per sistema parametro vm.max_map_count, defaŭlta estas 64K. Oni rekomendas pliigi ĝian valoron je kvar fojojn:

sudo sysctl vm.max_map_count=256000

Por ke la nova valoro estas agordita kiam la sistemo rekomencas, aldonu al la dosiero /etc/sysctl.conf linio:

vm.max_map_count = 256000

Estas konsilinde fari komenton por ke la kialo por ŝanĝi ĉi tiun parametron estu klara. Vi povas unue redakti la dosieron kaj poste apliki la agordojn konservitajn en ĝi:

sudo sysctl -p /etc/sysctl.conf

Instalante bezonatajn pakaĵojn

Efektiveblaj dosieroj de la Firebird 3.0 Linukso DBMS dependas de la ncurses-bibliotekoj (libncurses.so.5), ICU (ne ligita al versio kaj ne montrita en eligo ldd) kaj tomath (libtommath.so.0). Por elŝuti kaj malpaki la kunigarkivon, vi bezonos ilojn gzip, tar и curlwget. ICU-versioj, gzip, tar и curl/wget – estas sensignifaj.

Labori kun pakaĵoj dependas de la sistemo kaj de la pakaĵadministrilo uzata en la sistemo, do ni konsideros ilin unu post la alia.

CentOS 8

CentOS 8 uzas novan pakaĵadministrilon - dnf kaj ĝi estas nomita "travideble" per komando yum. Ĉar por niaj celoj ne estas diferenco inter ili - en la ekzemploj estos yum.

Ĝisdatigu la kaŝmemoron de metadatumoj: sudo yum makecache

La libtomath-pakaĵo troviĝas en aparta E(xtra)P(ackages por)E(nterprise)L(inux) deponejo, do ni kontrolas ke ĝi jam estas inkluzivita:

yum -C repolist

Opcio "nur el kaŝmemoro" (-C--cache-only) estas uzata por forigi nenecesajn kontrolojn kaj elŝutojn, igante yum pli rapida. Se ne estas epel-deponejo en la listo, instalu ĝin kaj ĝisdatigu la metadatuman kaŝmemoron:

sudo yum install epel-release &&
sudo yum makecache

Ni konfirmas petojn, se necese, kontrolante la valorojn de pgp-ŝlosiloj kun tiuj jam konataj de fidinda fonto.

Se estas problemoj pri ŝargado de metainformoj de deponejo el https-resursoj, tiam redaktu la dosieron /etc/yum.repos.d/epel.repo, anstataŭigante https:// sur http:// kaj ripetu la kaŝmemoron ĝisdatigi komandon.

Ni kontrolas la staton de la postulataj pakaĵoj (la komando estas komplika, en la ekzempla eligo la 32-bita pako estas filtrita):

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

Ni vidas tion curl, gzip и ncurses gastigita en la instalilo pseŭdo-deponejo (anaconda), kaj tar – ekskludita de la minimuma sisteminstalado. Gravaj versioj libncurses и libtommath pli ol bezonata: 6 kaj 1 anstataŭ 5 kaj 0, respektive. Se la sama pako estas kaj instalita kaj disponebla, ĝisdatigo estis publikigita por ĝi. Instalu la mankantajn pakaĵojn:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Iloj estas dizajnitaj por administri pakaĵojn apt, apt‑get и apt‑cache. La unua estas dizajnita por interaga laboro, kaj la lastaj du estas dezajnitaj por uzo en skriptoj. La pakaj nomoj estas iomete malsamaj kaj inkluzivas la version.

Ni kontrolas la staton de la postulataj pakaĵoj (la komando estas kombinita, la ekzempla eligo estas mallongigita, kaj 32-bitaj pakaĵoj estas filtritaj):

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]

Pakoj por kiuj la kvadrataj krampoj indikas installed/upgradable – instalita. Disponebla sed ne instalita ncurses5, anstataŭ curl instalita wget. Instalu la mankantajn pakaĵojn:

sudo apt‑get install 
libncurses5 libtommath1

Kreante simligojn

Ekde la libtommath.so.1 и libncurses.so.6 malantaŭen kongrua kun libtommath.so.0 и libncurses.so.5, tiam por Firebird sufiĉas krei simbolligojn al la ekzistantaj versioj de la bibliotekoj.

Trovu libtommath.so.1 (libncurses.so.? troviĝas en la sama dosierujo):

find /usr -name libtommath.so.1

Centos:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Ni kreas simbolligojn.

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

Ni kontrolu la rezulton (la komando estas komplika, la eligekzemploj estas mallongigitaj):

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

Elŝutante la distribuan ilaron Firebird DBMS.

La oficiala retejo de la projekto Firebird (firebirdsql.org) publikigas ligilojn al distribuoj de "oficialaj" eldonoj kaj "ĉiutagaj" konstruoj (fotografaj konstruoj).

Oficialaj Linuksaj eldonoj estas haveblaj kiel arkivoj (tar.gz) kaj deb/rpm-pakaĵoj, sed konstruaĵoj estas nur haveblaj kiel arkivoj. Ni konsideros la "generan instalilon" (generan instalilon de tar.gz).

La konstrua arkivo devas esti elŝutita kaj malpakita, sed ni kombinos ambaŭ procezojn. Malpakaĵo estas farita en /tmp,URL indikas la ligon al la elŝutebla arkivo.

buklo:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

defaŭlte curl sendas la elŝutitajn datumojn al stdout sed ne pritraktas alidirektojn kaj ni aldonas "‑L", a wget, male: pritraktas alidirektojn, sed skribas datumojn al dosiero kaj ni metas "‑O‑" Por tar indiki uzon gzip-filtrilo kaj la dosierujo, en kiu estos farita la malpakado. Kiam la procezo finiĝos, tia dosierujo aperos Firebird‑3.0.5.33220‑0.amd64 kun tri dosieroj: install.sh, buildroot.tar.gz и manifest.txt.

Instalante Firebird

Dum prepara preparado, ni ĝustigis la valoron de la sistema parametro vm.max_map_count, kontrolis haveblecon kaj instalis la ICU, ncurses kaj tommath-bibliotekojn. Certigu, ke la versioj de ncurses kaj tommath estas ĝustaj (libncures.so.5 и libtommath.so.0) kaj kreis la necesajn simbolligojn.

La reala instalado estas tre simpla. Iru al la dosierujo, kie la distribua arkivo de Firebird estis malpakita, kontrolu kaj, se necese, agordu la "efektivigeblan" flagon por la skripto. install.sh:

chmod +x install.sh

rulu la instalan skripton:

sudo ./install.sh

Premante la Enigu klavon ni konfirmas la komencon de la instalado, kaj post ricevo de la peto, enigu la sysdba pasvorton.

La instala skripto aŭtomate komenciĝas systemd-unuo firebird-superserver (silenta Firebird 3.0 arkitekturo). La servo Firebird funkcios kun la defaŭltaj parametroj por la superservilo: paĝa kaŝmemoro de 2048 paĝoj (po datumbazo), ordiga bufro de 64 MB (dividita) kaj konektanta nur versio XNUMX klientojn. Rigardu opciojn firebird.conf:

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

Bonvolu noti, ke la novaj valoroj de firebird.conf estos aktivigita nur post rekomenco de la Firebird-servo.

Elektante parametrajn valorojn, oni devas konsideri, ke ekzistas tri ĉefaj "konsumantoj": la paĝa kaŝmemoro (por la datumbazo), la ordiga bufro (dividita) kaj la memoro asignita de la servilo por klientkonektoj. Vi povas administri nur la unuajn du - la kvanto de memoro por klientkonektoj dependas de la nombro kaj teksto de kaŝmemoritaj demandoj, iliaj planoj kaj la datumbazaj objektoj implikitaj en la demandoj. Klientkonektmemortaksoj estas faritaj empirie nur kaj povas ŝanĝi kiel klientaplikoj kaj/aŭ datumbazaj objektoj ŝanĝiĝas.

Por superservilo en gastigantoj kun malgranda kvanto de memoro (ĝis 12-16 GB), vi ne devas asigni pli ol trionon aŭ kvaronon de la totala kvanto de RAM por la paĝa kaŝmemoro kaj ordiga bufro.

Se la nombro da datumbazoj ne estas fiksita kaj povas ŝanĝiĝi, la totala kvanto de paĝa kaŝmemoro devas esti dividita per la maksimuma nombro da datumbazoj kiuj povas esti sur la servilo. La grandeco de la paĝa kaŝmemoro estas specifita en paĝoj kaj devas esti aparte konvertita en bajtojn.

Por ŝanĝi al la klasika arkitekturo, vi devas, minimume, eksplicite specifi ServerMode в firebird.conf, reduktu la paĝan kaŝmemoron tie (ne pli ol 2K), reduktu la ordigan bufron (la totalan permeseblan volumon de ĉiuj specoj dividita per la maksimuma nombro da konektoj), malŝaltu kaj haltigu la unuon firebird-superserver, ebligu kaj lanĉu la unuon firebird-classic.socket.

Uzi la superklasikan arkitekturon en Firebird 3.0 ne havas multe da senco: "fidindeco" estas kiel superservilo kaj la sama ĝenerala ordiga bufro. Ne ekzistas komuna paĝa kaŝmemoro kaj la "perdoj" por sinkronigi malsamajn ligojn unu kun la alia estas la samaj kiel en la klasika.

Oni devas memori, ke en Firebird 3.0 iuj parametroj (paĝkaŝmemoro, ŝlosdosiergrandecoj, hashtabeloj kaj iuj aliaj) povas esti agordita en databases.conf individue por ĉiu datumbazo. Por superservilo estas utile, ekzemple, agordi malgrandan valoron DefaultDbCachePages в firebird.conf kaj instalu individuajn paĝajn kaŝmemorojn por la bezonataj datumbazoj en databases.conf.

Demandu pri la artikolo en la komentoj, aŭ skribu leterojn al nia subtena adreso [retpoŝte protektita].

fonto: www.habr.com

Aldoni komenton