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 (
Por la plej senpaciencaj, iru rekte en batalon:
Rapida instalado
Redaktante la dosieron /etc/sysctl.conf
aldonante 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 (
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
и curl
aŭ wget
. 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
aŭ --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