Firebird 2.5 andmete voogedastus ODS12 formaati (Firebird 3.0)

Iga Firebirda versioonil on oma versioon andmebaasi kettastruktuuride formaadist – O(n)D(isk)S(tructure). Kuni 2.5 versioonini suutis Firebird töötada eelmiste versioonide ODS-idega, st vanemate versioonide andmebaasid avati uue versiooniga ja töötasid ĂŒhilduvuse reĆŸiimis, kuid Firebird 3.0 mootor töötab ainult oma ODS versiooniga 12.0.

Firebird 3.0-le ĂŒleminekuks tuleb 2.5 andmebaas uude formaati muuta backup/restore meetodil. Loomulikult eeldame, et andmebaas on eelnevalt konverteerimiseks ette valmistatud – st, et metaandmed ja pĂ€ringud on Firebird 3.0 ĂŒhilduvuse osas kontrollitud.

Kui jĂ€rgida standardset lĂ€henemist, tĂ€hendab see, et tuleb teha varukoopia versioonil 2.5, seejĂ€rel installida 3.0 ja teha taastamine. Selline protseduur on vastuvĂ”etav, kui on piisavalt aega, kuid suurte andmebaaside migreerimise puhul vĂ”i samal ajal mitme tosinaga andmebaasi migreerimise puhul, kui aeg on piiratud, vĂ”ib kasutada voogedastus konverteerimist, mis on 30–40% kiirem. Kuidas seda tĂ€pselt teha (Windowsis ja Linuxis), loe allpool.

PÔhimÔte on see, et kiirus kasulikuks muutmiseks kasutame toru:

gbak -b 
 andmebaas25 stdout | gbak -c 
 stdin andmebaas30

Gbak 2.5 genereerib varukoopia lineaarformaadis ja suunab selle stdout-i, mis koostöös stdiniga nutikalt kasutab gbak 3.0 ja loob uue andmebaasi.

Sellise toru korraldamine tuleb kindlasti teha kohalikult (faili) meetodil, kuna vÔrgujuurdepÀÀs (isegi localhosti kaudu) aeglustab protsessi mÀrgatavalt.

Allpool vaatleme ĂŒksikasju Windowsi ja Linuxi jaoks.

Windows

Windowsi puhul on kĂ”ige lihtsam luua tĂ€ielik iseseisev Firebirdi kogum. Selleks vĂ”tame Firebird 2.5 embed-arhiiv, nimetame fbemded.dll ĂŒmber fbclient.dll-ks, lisame arhiivist 'tavalised' 2.5 utiliidid gbak.exe ja (valikuline) – isql.exe.

Firebird 3.0 kasutab ĂŒhendatud kogumit ja ei vaja mingit tĂ€iendavat töötlust.

KĂ”ige minimaalsem variant (mis ei nĂ”ua VS2008/VĐĄ2010 kĂ€itusraamatukogude installimist 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.dll

Kogenud administraator vĂ”ib tĂ€hele panna, et 2.5-s ei ole faile intl/fbintl.dll ja intl/fbintl.conf. See on tĂ”si, kuna gbak ei kasuta ĂŒhenduse mĂ€rgistust ega konverteeri andmeid mĂ€rgistuste vahel, kuid Firebird 3.0 'vastuvĂ”tupoolel' on nende failide loomine indeksite jaoks vajalik.

firebird.conf faili on soovitatav lisada Firebird 3.0:

MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

Lisaks on soovitatav seada ka erinev IpcName vÀÀrtus 2.5 ja 3.0 jaoks.

Muudest firebird.conf parameetrite vÀÀrtustest lĂ€htudes peame silmas lihtsat kaalutlust: andmete ĂŒlekanne toimub ĂŒhes protsessis gbak 2.5, teises – 3.0, siis lĂ”petab 2.5 oma töö ja 3.0 alustab indeksite koostamist.

Indeksite koostamise etapi kiirendamiseks 3.0-s on soovitatav suurendada parameetri TempCacheLimit suurust kuni ~40% RAM-st (kui see on pĂŒhendatud server, muidugi).

NÀiteks, kui serveris on 16 GB RAM, siis vÔib seada

TempCacheLimit=6G

Muidugi vĂ”ib sellist vÀÀrtust seada ainult 64-bitisele Firebird 3-le, kuna ĂŒkski 32-bitine protsess ei suuda allokeerida rohkem kui 2 GB mĂ€lu.

2.5-s ei ole seda parameetrit vaja muuta - see ei saa niikuinii olla suurem kui 2 GB ja ei mÔjuta kiiruset bÀÀkaandmete loomisel.

Enne operatsiooni teostamist tuleb kontrollida, et lehe vahemÀlu andmebaasi pÀises on seatud vÀÀrtuseks 0 (kÀsk gstat -h databasename, vaata rida Page buffers).

Kui vahemĂ€lu on selgesĂ”naliselt mÀÀratud andmebaasi pĂ€ises, siis see ĂŒletab vÀÀrtused failidest firebird.conf (ja databases.conf versioonis 3.0) ning liiga suurte vÀÀrtuste puhul vĂ”ib pĂ”hjustada liialdatud mĂ€lu tarbimist ja swap'i minemist.

Edasi, kopeerime failid sihtsĂŒsteemi.

Konverteerimine toimub pĂ€rast Firebird 2.5 'sĂŒsteemi' teenuse peatamist, kĂ€sureal, tĂ”stes Ă”igusi kohalikuks administraatoriks (nĂ€ide):

set ISC_USER=omanik
"25/gbak" -z -b -g -v -st t -y 25.log база25 stdout|^
"30/gbak" -z -c -v -st t -y 30.log stdin база30

Selles nĂ€ites kasutatakse "otse kaldkriipsu" jutumĂ€rkides (lubatav "unix-style"), ja "hatt" (sĂŒmbol "^") varjab rea vahetust, mis on mugav pikkade kĂ€skude sisestamisel. Valik -st(atus) ilmus Firebird 2.5.8-s ja vĂ”imaldab protokollida gbak protsessi tööaega (tĂ€iendavad ĂŒksikasjad – dokumentatsioonis).

Linux

Linuxis sĂ”ltub Firebird 3 tommath teegist. CentOS (RHEL) on see teek epel-repositooriumis, Ubuntu (Debian) – sĂŒsteemis.

CentOS-i puhul tuleb kÔigepealt aktiviseerida epel-repositoorium ja alles seejÀrel teostada

yum install libtommath

Ubuntu puhul pole tĂ€iendavate repositooriumite aktiviseerimine vajalik, kuid Ubuntu 16 ja Ubuntu 18 versioonides installitakse erinevad paketiversioonid – vastavalt libtommath0 ja libtommath1.

Firebird 3.0 otsib tommath.so.0, ja Ubuntu 18 puhul on lisaks vajalik luua link (symlink) tommath.so.0 tommath.so.1-le. Selleks tuleb kÔigepealt leida tommath.so.1.

Otsitav tee Ubuntu-s on /usr/lib/x86_64-linux-gnu/, aga teistes Debian-pÔhistes jaotustes vÔib see erineda.

Teine probleem on seotud sellega, et enne Firebird 3.0.1 ei olnud lihtsat viisi kahe erineva serveriversiooni paigaldamiseks. Variant "koostada allikatest vajaliku prefiksiga" ei tule arvesse oma suhtelise töömahukuse tÔttu.

Firebird 3.0.2 ja uuemate puhul on rakendatud koostamine koos –enable-binreloc ja eraldi paigaldusvalik (-path tee).

Eeldades, et tommathi teek ja vajadusel tommath.so.0 sĂŒmlink on sĂŒsteemis lisatud, saab uuendada hetkel aktuaalset (selle artikli kirjutamise ajal) Firebird 3.0.4 jaotust nĂ€iteks kausta /opt/fb3:

./install.sh -path /opt/fb3

PĂ€rast seda saab peatada Firebirdi sĂŒsteemiteenuse ja alustada jooksvat konversiooni.

Firebirdi peatamise korral tuleb arvesse vĂ”tta, et Firebird 2.5 Classic-reĆŸiimis kĂ€ivitatakse tavaliselt xinetd – seetĂ”ttu tuleb kas keelata firebird teenus xinetd-le vĂ”i peatada xinetd tĂ€ielikult.

Failis firebird.conf versioonile 3.0 Linuxis ei pea mÀÀrama MaxUnflushed parameetreid (need töötavad ainult Windowsis) ja ei pea muutma Firebird 2.5 seadistusi.

Linuxis ei ole Firebird 2.5 kohalik (failipĂ”hine) juurdepÀÀs vĂ”rreldav embeded variandiga Windowsis – server 2.5 töötab gbak protsessis (ilma vĂ”rguta), kuid juurdepÀÀsu Ă”igused kontrollitakse kasutajate andmebaasi kaudu, seega on vajalik mitte ainult sisselogimine, vaid ka parool:

export ISC_USER=username ISC_PASSWORD=password
/opt/firebird/bin/gbak -b 
 database25 stdout
|/opt/fb3/bin/gbak -c 
 stdin database30

PĂ€rast tĂ”husat konverteerimist tuleb esmalt eemaldada 'lisanduv' Firebird 3.0, seejĂ€rel 'peamine' Firebird 2.5 ja alles siis teostada puhas installatsioon Firebird 2.5 — parim on kasutada ametlikku installerit tar.gz-formaadis, mitte lĂ€bi hooverite, kuna repodega versioon vĂ”ib olla vananenud.

Samuti tuleb pÀrast andmebaasi taastamist Linuxis ja tainstallimist kontrollida, et uus andmebaas kuulub kasutajale firebird.

Kui see ei ole nii, siis tuleb see parandada.

chown firebird.firebird andmebaas

KokkuvÔte

Lisaks ajasÀÀstule ja ketta ruumi kokkuhoiule on voogkonversiooni veel ĂŒks oluline eelis – andmebaasi konverteerimine toimub olemasoleva Firebird 2.5 eemaldamata, mis lihtsustab mĂ€rkimisvÀÀrselt tagasipöördumist, kui konverteerimine ebaĂ”nnestub (tavaliselt ruumi puudumise vĂ”i ootamatute taaskĂ€ivituste tĂ”ttu migratsiooniprotsessi ajal).

AjasÀÀst tuleneb sellest, et 'klassikaline' konversioon sisaldab 'varundamise aega' pluss 'taastamise aega'. Taastamine koosneb kahest osast: andmete lugemine varukoopiast ja indeksi koostamine.

Voogkonversiooni koguaeg on 'varundamise aeg pluss viis kuni kĂŒmme protsenti' ja 'indeksite koostamise aeg'.

Konkreetne tulemus sĂ”ltub andmebaasi struktuurist, kuid keskmiselt on taastamisaeg umbes kahekordne varundamisajaga. SeetĂ”ttu, kui vĂ”tta varundamise aeg ĂŒhikuna, on 'klassikaline konversioon' kolm ĂŒhikut aega, voogkonversioon – kaks ĂŒhikut aega. Aja tĂ€iendavaks lĂŒhendamiseks aitab TempCacheLimit'i suurendamine.

KokkuvÔttes vÔimaldab voogkonversioon praktikas sÀÀsta 30-40% traditsioonilise varundamise ja taastamise ajast.

KĂŒsimused?

Palun saatke kĂ”ik kĂŒsimused kommentaarides vĂ”i suunake need meetodi autorile ja artikli kaasautorile — Vasili Sidorovile, ettevĂ”tte «iBase» juhtivale sĂŒsteemiinsenerile, aadressil bs at ibase ru.

Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. Logige sisse, palun.

Millist Firebirdi versiooni kasutate?

  • Firebird 3.x

  • Firebird 2.5

  • Firebird 2.1

  • Firebird 2.0, 1.5 vĂ”i 1.0

HÀÀletas 16 kasutajat. 1 kasutaja jÀi erapooletuks.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster