Sazkirina Firebird 3 li ser Guhertoyên Modern Linux: CentOS8 û Ubuntu 19

Di vê gotarê de, em ê komek gavên herî kêm ên ku ji bo sazkirina çêtirîn a Firebird DBMS guhertoya 3.0 li ser belavkirinên nû yên Linux-ê hewce ne diyar bikin. CentOS 8 û Ubuntu 19 ji bo nimûne têne hilbijartin.

Ji bo "radestkirina" belavkirina Firebird ji pergala armancê re, di vê rêbernameyê de vebijarka dakêşana arşîva tar.gz ji lînka ji malpera fermî ya projeyê (firebirdsql.org).

Ji bo yên herî bêsebir - tavilê di şer de:

Sazkirina bilez

Guhertina pelê /etc/sysctl.confbi lêzêdekirina rêzê:

vm.max_map_count = 256000

Pelê hilînin û mîhengê bicîh bikin:

sudo sysctl -p /etc/sysctl.conf

Rêbernameyên din ji bo CentOS 8 û Ubuntu 19 cûda dibin, lê ССЫЛКА и КАТАЛОГ girêdanek ji malpera fermî ya projeya Firebird-ê ji bo dakêşana belavkirinê û pelrêça ku belavkirin dê di dema dakêşandinê de bê pakkirin destnîşan bikin.
Vê gavê (Adar 2020), serbestberdana Firebird 3.0.5 têkildar e (li vir e ji bo guhertoya 64-bit).

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

Sazkirina rastîn a Firebird DBMS:

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

Heke hûn dixwazin çêtir fam bikin ka van kiryaran ji çi re xizmet dikin, bixwînin.

Beşek sereke

Pêşgotineke biçûk

Tê texmîn kirin ku OS-ê jixwe di guhertoya herî kêm de hatî saz kirin û gihîştina depoyên giştî an kopiyên wan ên herêmî hatî mîheng kirin.

Tê texmîn kirin ku xwendevan zanîna bingehîn a Linux û Firebird DBMS heye.

Pîlankirinî

Li ser servera DBMS, tê pêşniyar kirin ku ji bo pelên demkî beşên cuda veqetînin (/tmp), pelên databas û paşkêşên herêmî.

Demkî pelên kilîtkirî, pelên cûrbecûr, pelên "materyalîzekirinê" yên tabloyên demkî yên gerdûnî (GTT) û tabloyên çavdêriyê hene. Pelên tabloya demkî birêkûpêk û gerdûnî tê de ne /tmp, pelên mon$-tablo û pelên kilîtkirî - in /tmp/firebird.

Pelên birêkûpêk têne "hilweşandin" (unlink) tavilê piştî afirandinê, ji ber vê yekê ew nikanin di navnîşa pelrêçayê de "dîtin" - tenê di navnîşa destikên pêvajoyê de (wek binavkirî deleted):

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

Di navnîşek pseudo-directory /proc/…/fd/ symlinks têne xuyang kirin, û agahdariya rastîn di derbarê pelê de ji hêla:

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

ko НОМЕР - ravekerê (descriptor) pelê balkêş.

Li şûna ku bang bikin "pgrep исполняемый-файл» hûn dikarin tavilê nasnameya pêvajoya berjewendiyê biguhezînin.

Pelên demkî dikarin pir mezin bin, lewra ji bo /tmp tê pêşniyar kirin ku herî kêm 20-30 GB veqetînin. Bînin bîra xwe ku mezinahiya pelên birêkûpêk tenê bi hêjeya daneya ku di daxwaznameyê de bi eşkere an nepenî hatine veqetandin ve girêdayî ye, û bikarhênerek yek dikare pelên demkî gigabayt "biafirîne".

Di beşa pelên databasê de divê pelên hemî databasan hebin. plus bi kêmanî kopiyek pelê databasa herî mezin. Pêdivî ye ku ji bo çend salên pêş de mezinbûna pelên databasê di pêşerojê de were hesibandin.

Divê beşa hilanînê ya herêmî bi kêmî ve yek arşîvek hilanînê ya hemî databasan û paşvekêşana databasa herî mezin hebe. Tê xwestin ku ev beş jî cîhek hebe ku databasa herî mezin were vegerandin. Divê di pêşerojê de ji bo çend salan mezinbûna hilanînê û arşîvên hilanînê were hesibandin.

Amadekariyên pêşîn

Pêşkêşkara Firebird 3.0 DBMS bi dînamîk bîranîna pergalê vediqetîne û azad dike, ku dikare bibe sedema perçebûna wê. Mînakî, piştî ku hejmareke mezin ji bikarhêner di heman demê de ji superserver veqetiyan, dibe ku di dema girêdanên nû de xeletî çêbibin.

Parçebûna bîranînê ji hêla pîvanek pergalê ve tê kontrol kirin vm.max_map_count, standard 64K e. Tê pêşniyar kirin ku nirxa wê çar qat zêde bikin:

sudo sysctl vm.max_map_count=256000

Ji bo danîna nirxa nû dema ku pergalê ji nû ve tê destpêkirin, li pelê zêde bikin /etc/sysctl.conf xet:

vm.max_map_count = 256000

Tête pêşniyar kirin ku şîroveyek were kirin da ku sedema guheztina vê parametreyê diyar bibe. Hûn dikarin pêşî pelê biguherînin û dûv re mîhengên ku tê de hatine tomarkirin bicîh bikin:

sudo sysctl -p /etc/sysctl.conf

Sazkirina pakêtên pêwîst

Berhemên Firebird 3.0 Linux DBMS bi pirtûkxaneyên ncurses ve girêdayî ne (libncurses.so.5), ICU (bêyî referansa guhertoyê û bêyî dîmenderê di encam de ldd) û tometa (libtommath.so.0). Karûbar hewce ne ku arşîva civînê dakêşin û pak bikin gzip, tar и curl an wget. Guhertoyên ICU, gzip, tar и curl/wget - ne girîng in.

Karkirina bi pakêtan re bi pergalê û bi rêveberê pakêtê yê ku di pergalê de tê bikar anîn ve girêdayî ye, ji ber vê yekê em ê wan yek bi yek binirxînin.

CentOS 8

CentOS 8 rêveberek pakêtek nû bikar tîne - dnf û li ser fermanê "şefaf" tê gotin yum. Ji ber ku ji bo mebestên me ferqek di navbera wan de tune - di mînakan de dê hebin yum.

Cache metadata nûve bike: sudo yum makecache

Pakêta libtomath di depoyek E(xtra)P(ji bo)E(nterprise)L(inux) veqetandî de ye, ji ber vê yekê kontrol bikin ku ew jixwe tê de ye:

yum -C repolist

Vebijarka tenê cache (-C an --cache-only) ji bo rakirina kontrol û dakêşanên nehewce tê bikar anîn, ku yum zûtir dimeşîne. Ger di navnîşê de depoya epel tune be, wê saz bikin û cache metadata nûve bikin:

sudo yum install epel-release &&
sudo yum makecache

Ger hewce be, em daxwazan piştrast dikin, bi yên ku ji berê ve ji çavkaniyek pêbawer têne zanîn nirxên bişkokên pgp-ê kontrol dikin.

Ger dema barkirina meta-agahdariya depoyê ji çavkaniyên https-ê pirsgirêk hebin, wê hingê pelê biguherînin. /etc/yum.repos.d/epel.repo, li şûna https:// li ser http:// û fermana nûvekirina cache dubare bike.

Rewşa pakêtên pêwîst kontrol bikin (ferman tevlihev e, di derana nimûneyê de pakêtek 32-bit tê fîltrekirin):

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

Em wê yekê dibînin curl, gzip и ncurses li pseudo-depoya sazkerê hatî danîn (anaconda), û tar - Ji sazkirina pergalê ya herî kêm tê derxistin. Guhertoyên sereke libncurses и libtommath bêtir ji pêwîst: 6 û 1 li şûna 5 û 0, rêzê. Ger heman pakêt hem sazkirî û hem jî berdest be, nûvekirinek ji bo wê hatîye berdan. Pakêtên winda saz bikin:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Karûbarên rêveberiya pakêtê apt, apt‑get и apt‑cache. Ya yekem ji bo xebata înteraktîf hatî çêkirin, û duyên dawîn ji bo karanîna di nivîsan de ne. Navên pakêtê hinekî cûda ne û guhertoyê jî vedihewîne.

Rewşa pakêtên pêwîst kontrol bikin (ferman tê pêçan, nimûneya derketinê kurt dibe û pakêtên 32-bit têne fîlter kirin):

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]

Pakêtên bi çargoşe installed/upgradable - saz kirin. Berdest e lê nayê sazkirin ncurses5, di şona curl saz kirin wget. Pakêtên winda saz bikin:

sudo apt‑get install 
libncurses5 libtommath1

Afirandina semyan

Ji ber ku libtommath.so.1 и libncurses.so.6 paşverû lihevhatî bi libtommath.so.0 и libncurses.so.5, wê hingê ji bo Firebird-ê bes e ku meriv ji guhertoyên berdest ên pirtûkxaneyan re girêdanên sembolan çêbike.

Dîtin libtommath.so.1 (libncurses.so.? di heman pelrêça de cih digire):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Em girêdanên sembolan çêdikin.

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

Em encamê kontrol dikin (ferman tevlihev e, mînakên derketinê têne kurt kirin):

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

Barkirina kîtê belavkirinê ya Firebird DBMS.

Malpera fermî ya projeya Firebird (firebirdsql.org) lînkên belavkirina weşanên "fermî" û avahiyên "rojane" (avakirina wêneya wêneyê) diweşîne.

Daxuyaniyên fermî yên ji bo Linux wekî arşîv (tar.gz) û pakêtên deb/rpm hene, dema ku avahî tenê wekî arşîv hene. Em ê "sazkerê gelemperî" (sazkerê gelemperî ji tar.gz) bifikirin.

Pêdivî ye ku arşîva meclîsê were dakêşandin û pakkirin, lê em ê van herdu pêvajoyan bi hev re bikin. Vekirina pakkirinê tê kirin /tmp, URL lînka arşîva dakêşandî destnîşan dike.

curl:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

by default curl daneyên dakêşandî ji stdout re dişîne, lê beralîkirinan nagire, ji ber vê yekê em lê zêde dikin "‑L", a wget, berevajî: beralîkirinan dike, lê daneyan li pelek dinivîse û em danîn "‑O‑". Bo tar bikaranîna nîşan bide gzip- Parzûn û pelrêça ku dê vekêşandin jê re were kirin. Piştî bidawîbûna pêvajoyê, pelrêça formê dê xuya bibe Firebird‑3.0.5.33220‑0.amd64 bi sê pelan: install.sh, buildroot.tar.gz и manifest.txt.

Sazkirina Firebird

Di dema amadekirina pêşîn de, me nirxa pîvana pergalê rast kir vm.max_map_count, pirtûkxaneyên ICU, ncurses û tommath kontrol kirin û saz kirin. Verast bikin ku guhertoyên ncurses û tommath rast in (libncures.so.5 и libtommath.so.0) û girêdanên pêdivî çêkir.

Sazkirina rastîn pir hêsan e. Herin pelrêça ku arşîva belavkirina Firebird lê vebû, kontrol bikin û, ger hewce be, ala "çêker" ji bo skrîptê saz bikin. install.sh:

chmod +x install.sh

skrîpta sazkirinê bimeşînin:

sudo ./install.sh

bi tikandina bişkojka Enter, em destpêkirina sazkirinê piştrast dikin, û piştî wergirtina daxwazê, em şîfreya sysdba dinivîsin.

Skrîpta sazkirinê bixweber dimeşe systemd-yekbûn firebird-superserver (mîmariya xwerû Firebird 3.0). Karûbarê Firebird dê bi mîhengên xwerû yên ji bo superserver bixebite: 2048 cache rûpel (her bingeh), 64 MB tampon celeb (hevbeş), û girêdan tenê ji bo xerîdarên guhertoya XNUMX. Mîhengan bibînin firebird.conf:

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

Têbînî ku nirxên nû ji firebird.conf dê tenê piştî destpêkirina karûbarê Firebird ji nû ve were çalak kirin.

Dema ku nirxên parametreyê hilbijêrin, divê were hesibandin ku sê "serfkarên" sereke hene: cacheya rûpelê (ji bo databasê), tampona celebê (hevbeş) û bîranîna ku ji hêla serverê ve ji bo girêdanên xerîdar ve hatî veqetandin. Hûn dikarin tenê du yên pêşîn îdare bikin - mîqdara bîra ji bo girêdanên xerîdar bi hejmar û nivîsa daxwazên cached, planên wan, û tiştên databasê yên ku di daxwazan de têkildar in ve girêdayî ye. Texmîna bîranînê ya girêdanên xerîdar tenê bi ezmûnî tête kirin û dema ku serîlêdanên xerîdar û/an tiştên databasê diguhezin dibe ku biguhezîne.

Ji bo superserverek li ser mêvandarên xwedan bîranînek piçûk (heta 12-16 GB), divê hûn ji sêyemek heya çaryeka tevahî RAM-ê ji bo cache rûpelê û tampon rêzkirinê veqetînin.

Ger hejmara bingehan ne sabît be û dikare biguhezîne, divê hêjmara giştî ya bîranîna cache ya rûpelê bi hejmara herî zêde ya bingehên ku dikarin li ser serverê bin ve were dabeş kirin. Mezinahiya cache ya rûpelê di rûpelan de tête diyar kirin û divê ji hev cuda veguhezîne baytê.

Ji bo veguherîna mîmariya klasîk, divê hûn bi kêmanî bi eşkere diyar bikin ServerMode в firebird.conf, cache rûpelê li heman cihî kêm bikin (ji 2K zêdetir nebe), tampona cûrbecûr kêm bikin (hejmara destûrî ya tevahî ya her cûre bi hejmara herî zêde ya girêdanan ve hatî dabeş kirin), yekîneyê neçalak bikin û rawestînin. firebird-superserver, yekîneyê çalak bike û bixebite firebird-classic.socket.

Bikaranîna mîmariya superklasîk di Firebird 3.0 de pir maqûl nake: "pêbawerî" mîna superserver û heman celeb tampon e. Keşeya rûpela hevpar tune û "wendahiyên" ji bo hevdengkirina girêdanên cihêreng bi hevûdu re mîna ya klasîk e.

Pêdivî ye ku ji bîr mekin ku di Firebird 3.0 de hin pîvan (kaşiya rûpelê, mezinahiyên pelê kilît, tabloyên haş û hinên din) dikarin di nav de werin danîn. databases.conf ferdî ji bo her bingehê. Ji bo superserverek kêrhatî ye, mînakî, danîna nirxek piçûk DefaultDbCachePages в firebird.conf û ji bo databasên pêwîst di nav de caşên rûpela kesane saz bikin databases.conf.

Di şîroveyan de pirsan li ser gotarê bipirsin, an ji navnîşana piştevaniya me re nameyan binivîsin [email parastî].

Source: www.habr.com

Add a comment