Iga Firebird versioonil on oma andmebaasi diskistruktuuride vormingu versioon â O(n)D(isk)S(tructure). Kuni versioonini 2.5 vĂ”is Firebird kasutada varasemate versioonide ODS-sid, see tĂ€hendab, et vanade versioonide andmebaasid avati uue versiooniga ja töötasid ĂŒhilduvuses, kuid Firebird 3.0 töötab ainult andmebaasidega enda ODS versioonis 12.0.
3.0-le ĂŒlemiseks tuleb 2.5 andmebaas vormindada uueks formaadiks backup/restore abil. Loomulikult eeldame, et andmebaas on eelnevalt konverteerimiseks ette valmistatud â st metaandmed ja pĂ€ringud on kontrollitud Firebird 3.0 ĂŒhilduvuse suhtes.
Kui jĂ€rgida standardset lĂ€henemist, tĂ€hendab see, et tuleb teha varukoopia versioonist 2.5, seejĂ€rel paigaldada 3.0 ja teha taastamine. See menetlus on vastuvĂ”etav, kui on piisavalt aega, kuid suurte andmebaaside migreerimisel vĂ”i korraga mitme kĂŒmne andmebaasi migreerimisel, kui aeg on Ă”hus, vĂ”ib kasutada vooluhulgakonversiooni, mis on 30-40% kiirem. Kuidas tĂ€pselt seda teha (Windowsi ja Linuxi all), loe allpool.
Ăldine idee on see, et kiirus kasuks tulemiseks kasutame torujuhet:
gbak -b ⊠andmebaas25 stdout | gbak -c ⊠stdin andmebaas30Gbak versioonilt 2.5 genereerib varukoopia jooneformaadis ja suunab selle stdout'isse, mille gbak versioon 3.0 haarab kohe stdin'ist ja loob uue andmebaasi.
Sellise torujuhtme korraldamine tuleb kindlasti teha kohalikult (faili) meetodil, kuna vĂ”rguĂŒhendus (isegi localhost'i kaudu) aeglustab mĂ€rgatavalt protsessi.
Allpool kĂ€sitleme ĂŒksikasju Windowsi ja Linuxi kohta.
Windows
Windowsi puhul on kĂ”ige lihtsam teha tĂ€ielikku iseseisvat Firebird kogumit. Selleks vĂ”tame , muudame fbemded.dll nime fbclient.dll-iks, lisame arhiivist âtavaliseâ 2.5 utiliidi gbak.exe ja (valikuline) â isql.exe.
Firebird 3.0 kasutab ja ei vaja mingit tÀiendavat seadistamist.
KĂ”ige minimaalne variant (mis ei vaja VS2008/VS2010 jooksutegurite raamatukogusid sihtsĂŒsteemis) sisaldab jĂ€rgmisi faile:
25/gbak.exe
25/fbclient.dll
25/firebird.conf
25/firebird.log
25/firebird.msg
25/ib_util.dll
25/icudt30.dll
25/icuin30.dll
25/icuuc30.dll
25/Microsoft.VC80.CRT.manifest
25/msvcp80.dll
25/msvcr80.dll
30/fbclient.dll
30/firebird.conf
30/firebird.msg
30/gbak.exe
30/ib_util.dll
30/icudt52.dll
30/icudt52l.dat
30/icuin52.dll
30/icuuc52.dll
30/msvcp100.dll
30/msvcr100.dll
30/intl/fbintl.conf
30/intl/fbintl.dll
30/plugins/engine12.dllKogen administrator suudab mĂ€rgata, et 2.5 versioonis ei ole faile intl/fbintl.dll ja intl/fbintl.conf. See on tĂ”epoolest nii, kuna gbak ei kasuta ĂŒhenduse karakteristikku ja ei konverteeri andmeid erinevate karakteristikute vahel, kuid Firebird 3.0 "vastuvĂ”tul" on need failid vajalikud indeksite loomisel.
Firebird 3.0 seadistustes firebird.conf soovitatakse lisada:
MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1Samuti on soovitatav mÀÀrata erinevad IpcName vÀÀrtused versioonidele 2.5 ja 3.0.
Muud mÔÔtmete valides firebird.conf lĂ€htume lihtsast pĂ”himĂ”ttest: andmete muutmisprotsessis töötab ĂŒhes protsessis gbak 2.5, teises â 3.0, seejĂ€rel lĂ”petab 2.5 töö ja 3.0 alustab indeksite loomist.
Indeksite loomise etapi kiirendamiseks 3.0 soovitatakse suurendada TempCacheLimiti vÀÀrtust ~40% RAM-ist (kui see on dedikeeritud server, loomulikult).
NÀiteks, kui serveril on 16 GB RAM-i, vÔib seada
TempCacheLimit=6GLoomulikult vĂ”ib sellist vÀÀrtust kasutada alles 64-bitise Firebird 3 korral, kuna ĂŒkski 32-bitine protsess ei saa eraldada enam kui 2 gigabaiti mĂ€lu.
Versioonis 2.5 seda parameetrit muuta ei ole vaja - see ei saa niikuinii olla suurem kui 2 gigabaiti ning backup'i kiirus sellele ei mÔju.
Enne toimingu sooritamist tuleb kontrollida, et andmebaasi pealkirjas on lehekĂŒlje vahemĂ€lu seadistatud vÀÀrtusele 0 (kĂ€sk gstat -h andmebaasinimi, vaata rida Page buffers).
Kui vahemĂ€lu on andmebaasi pealkirjas selgelt mÀÀratud, siis see ĂŒletab vÀÀrtusi firebird.conf-s (ja databases.conf-s versioonis 3.0) ning ebanormaalselt suurte vÀÀrtuste korral vĂ”ib see pĂ”hjustada liigset mĂ€lu kasutamist ja swap'isse minekut.
SeejĂ€rel kopeerime failid sihtsĂŒsteemi.
Konversioon toimub pĂ€rast "sĂŒsteemi" teenuse Firebird 2.5 seiskamist, kĂ€sureal, tĂ”stes Ă”igusi kohalikuks administreerijaks (nĂ€ide):
set ISC_USER=omanik
"25/gbak" -z -b -g -v -st t -y 25.log andmebaas25 stdout|^
"30/gbak" -z -c -v -st t -y 30.log stdin andmebaas30Selles nĂ€ites kasutatakse "otsest kaldkirja" ĂŒlakomade sees (lubatud "unix-style"), ja "kĂŒbar" (sĂŒmbol "^") varjab reavahetuse sĂŒmbolit, mis on mugav pikkade kĂ€skude sisestamisel. Valik -st(atus) ilmus Firebird 2.5.8-s ja vĂ”imaldab protokollida andmeid gbak'i protsessi aja kohta (detailsed andmed - dokumentatsioonis).
Linux
Linuxis sĂ”ltub Firebird 3 tommath raamatukogust. CentOS (RHEL) puhul asub see raamatukogu epel-repositooriumis, Ubuntu (Debian) sĂŒsteemis.
CentOS-i jaoks tuleb esmalt aktiveerida epel-reposiit ja alles seejÀrel tegeleda
yum install libtommathUbuntu jaoks ei ole vaja aktiveerida tĂ€iendavaid reposiite, kuid Ubuntu 16 ja Ubuntu 18 jaoks installitakse erinevad pakettide versioonid â libtommath0 ja libtommath1, vastavalt.
Firebird 3.0 otsib tommath.so.0 ja Ubuntu 18 jaoks on lisaks vajalik luua lingi (symlink) tommath.so.0 tommath.so.1. Selleks tuleb esmalt leida tommath.so.1.
Otsitav tee Ubuntu-s on /usr/lib/x86_64-linux-gnu/, kuid teistes Debian-pÔhistes distributsioonides vÔib see olla erinev.
Teine probleem on seotud sellega, et enne Firebird 3.0.1 ei olnud lihtsat viisi paigaldada kahte erinevat versiooni serverist. Valikut âkoostame allikast vajaliku prefiksigaâ me ei aruta, kuna see on suhteliselt töömahukas.
Firebird 3.0.2 ja uuemate versioonide jaoks on vÀlja töötatud ja eraldi paigaldusvalik (-path tee).
Eeldades, et tommath teek ja vajadusel lingid tommath.so.0 on sĂŒsteemi lisatud, saab paigaldada asjakohase (artikli kirjutamise ajal) Firebird 3.0.4 distributsiooni, nĂ€iteks /opt/fb3:
./install.sh -path /opt/fb3PĂ€rast seda saab peatada Firebirdi sĂŒsteemiteenuse ja alustada voolava konverteerimisega.
Firebirdi peatamisel tuleb arvestada, et Firebid 2.5 töötab Classic-reĆŸiimis tavaliselt xinetd kaudu â seega tuleb kas keelata firebird teenus xinetd jaoks vĂ”i peatada xinetd tĂ€ielikult.
firebird.conf-is 3.0 Linuxis ei ole vaja mÀÀrata MaxUnflushed parameetreid (need töötavad ainult Windowsis) ega muuta Firebird 2.5 seadeid.
Linuxis ei ole Firebird 2.5 kohaliku (faili) juurdepÀÀsu ekvivalent embeded-versioonile Windowsis â server 2.5 töötab protsessis gbak (ilma vĂ”rguta), kuid juurdepÀÀsuĂ”igusi kontrollitakse kasutajate baasi jĂ€rgi, mis tĂ€hendab, et on vajalik mitte ainult kasutajanimi, vaid ka parool:
export ISC_USER=username ISC_PASSWORD=password
/opt/firebird/bin/gbak -b ⊠database25 stdout
|/opt/fb3/bin/gbak -c ⊠stdin database30PĂ€rast eduka konverteerimise lĂ”petamist tuleb esmalt eemaldada âlisakulineâ Firebird 3.0, seejĂ€rel âpĂ”hilineâ Firebird 2.5 ja alles pĂ€rast seda teostada puhas Firebird 2.5 installatsioon â kĂ”ige parem oleks kasutada standardset paigaldajat tar.gz, mitte reposiitide kaudu, kuna reposiitides olev versioon vĂ”ib olla aeguv.
Samuti tuleb pÀrast andmebaasi taastamist Linuxis ja uuesti paigaldamist kontrollida, et uus andmebaas omaks omanikuks kasutajat firebird.
Kui see nii ei ole, tuleb see parandada
chown firebird.firebird databaseKokkuvÔte
Lisaks ajas ja ketta ruumi kokkuhoidmisele on voolava teisendamise teine oluline eelis see, et andmebaasi teisendamine toimub ilma olemasoleva Firebird 2.5 eemaldamiseta, mis lihtsustab oluliselt tagasipöördumist ebaÔnnestumise korral (enamasti seoses ketasruumi puudumise vÔi ootamatu taaskÀivitamisega migratsiooni ajal).
Aja kokkuhoid tuleneb sellest, et «klassikaline» teisendamine on «varundamise aeg» pluss «taastamise aeg». Taastamine koosneb kahest osast: andmete lugemine varundusfailist ja indeksi koostamine.
Voolava teisendamise korral on kokkuvĂ”ttes aeg «varundamise aeg pluss viis-kĂŒmme protsenti» ja «indeksite koostamise aeg».
Konkreetne tulemus sĂ”ltub andmebaasi struktuurist, kuid keskmiselt on taastamisaeg umbes kaks korda suurem kui varundamise aeg. Seega, kui vĂ”tta varundamise aeg ĂŒhe ĂŒhikuna, on «klassikaline teisendamine» kolm ĂŒhikut aega, voolav teisendamine aga kaks ĂŒhikut aega. Aega aitab tĂ€iendavalt vĂ€hendada TempCacheLimit'i suurendamine.
Ăldiselt vĂ”imaldab voolav teisendamine praktikaliselt sÀÀsta 30-40% jĂ€rjestikkuse varundamise ja taastamise ajast.
KĂŒsimusi?
Palun esitage kĂ”ik kĂŒsimused kommentaarides vĂ”i saatke autorile ja selle artikli kaasautorile â Vasili Sidorovile, ettevĂ”tte «iBase» peamisele sĂŒsteemitehnikule, aadressil bs at ibase ru.
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. , palun.
Millist versiooni Firebirdi kasutate?
Firebird 3.x
Firebird 2.5
Firebird 2.1
Firebird 2.0, 1.5 vÔi 1.0
HÀÀletanud 16 kasutajat. 1 kasutaja jÀi erapooletuks.
Allikas: habr.com
