Firebird 2.5 datu bāzu straumÄ“Å”anas konvertÄ“Å”ana uz ODS12 formātu (Firebird 3.0)

Katrai Firebird versijai ir sava datu bāzes diska struktÅ«ras formāta versija O(n)D(isk)S(struktÅ«ra). LÄ«dz versijai 2.5 ieskaitot, Firebird dzinējs varēja strādāt ar iepriekŔējo versiju ODS, tas ir, datu bāzes no vecajām versijām tika atvērtas ar jauno versiju un darbojās saderÄ«bas režīmā, bet Firebird 3.0 dzinējs darbojas tikai ar datu bāzēm savā ODS versijā. 12.0.

Lai migrētu uz 3.0, datu bāze no 2.5 ir jākonvertē jaunajā formātā, izmantojot dublÄ“Å”anu/atjaunoÅ”anu. Protams, pieņemam, ka datubāze iepriekÅ” bija sagatavota konvertÄ“Å”anai ā€“ t.i. Metadatu un vaicājumu saderÄ«ba ar Firebird 3.0 ir pārbaudÄ«ta.

Ja izmantojat standarta pieeju, tas nozÄ«mē, ka jums ir jāizveido dublējums versijā 2.5, pēc tam jāinstalē 3.0 un jāveic atjaunoÅ”ana. Šāda procedÅ«ra ir pieņemama, ja ir pietiekami daudz laika, bet, migrējot lielas datu bāzes, vai vienlaikus migrējot vairākus desmitus datu bāzu, kad laiks iet uz beigām, var izmantot straumÄ“Å”anas konversiju, kas ir par 30-40% ātrāka. Kā tieÅ”i to izdarÄ«t (operētājsistēmā Windows un Linux), lasiet sadaļā sadaļā.

Vispārējā ideja ir tāda, ka mēs izmantosim cauruļvadu, lai paātrinātu darbu:

gbak -b ā€¦ Š±Š°Š·Š°25 stdout | gbak -c ā€¦ stdin Š±Š°Š·Š°30

Gbak no 2.5 ģenerē dublējumu lineārā formātā un nosūta to uz stdout, kas nekavējoties paņem gbak no 3.0 caur stdin un izveido jaunu datu bāzi.

Šāds cauruļvads ir jāorganizē ar lokālās (faila) piekļuves metodi, jo piekļuve tīklam (pat caur localhost) ievērojami palēninās procesu.

Tālāk ir sniegta informācija par Windows un Linux.

Windows

Operētājsistēmas Windows gadÄ«jumā vienkārŔākais veids ir izveidot pilnÄ«gi atseviŔķu Firebird bÅ«vējumu. Å im nolÅ«kam mēs ņemam embed-archive Firebird 2.5, pārdēvējiet fbemded.dll par fbclient.dll, pievienojiet utilÄ«tas gbak.exe un (pēc izvēles) isql.exe no ā€œparastāā€ 2.5 arhÄ«va.

Firebird 3.0 lietojumi viena montāža un neprasa nekādas izmaiņas.

Visminimālākā versija (kurai nav nepiecieÅ”ama VS2008/VS2010 izpildlaika bibliotēku instalÄ“Å”ana mērÄ·a sistēmā) satur Ŕādus failus:

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

Pieredzējis administrators var pamanÄ«t, ka versijā 2.5 nav iekļauti faili intl/fbintl.dll un intl/fbintl.conf. Tā ir taisnÄ«ba, jo gbak neizmanto savienojuma rakstzÄ«mju kopu un nepārvērÅ” datus starp rakstzÄ«mju kopām, taču Firebird 3.0 "saņemÅ”anas" pusē Å”ie faili ir nepiecieÅ”ami, veidojot indeksus.

Vietnē firebird.conf Firebird 3.0 ieteicams pievienot:

MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

Tāpat ir vēlams iestatīt dažādas IpcName vērtības 2.5 un 3.0.

Izvēloties citu firebird.conf parametru vērtÄ«bas, mēs rÄ«kojamies pēc vienkārÅ”a apsvēruma: datu pārsÅ«tÄ«Å”anas posmā gbak vienā procesā palaiž 2.5, bet otrā - 3.0, pēc tam iziet 2.5, un 3.0 sāk veidoÅ”anu. indeksi.

Lai paātrinātu indeksa veidoÅ”anas fāzi 3.0 versijā, ir ieteicams palielināt TempCacheLimit parametra izmēru lÄ«dz ~40% RAM (ja tas, protams, ir veltÄ«ts serveris).

Piemēram, ja serverim ir 16 GB RAM, tad varat ievietot

TempCacheLimit=6G

Protams, Å”o vērtÄ«bu var iestatÄ«t tikai 64 bitu Firebird 3, jo jebkurÅ” 32 bitu process nevar pieŔķirt vairāk par 2 gigabaitiem atmiņas.

2.5 versijā Å”is parametrs nav jāmaina - tas jebkurā gadÄ«jumā nevar bÅ«t lielāks par 2 gigabaitiem, un tas neietekmē ātrumu dublÄ“Å”anas laikā.

Pirms operācijas veikÅ”anas ir jāpārbauda, ā€‹ā€‹vai lapas keÅ”atmiņa datu bāzes galvenē ir iestatÄ«ta uz 0 (komanda gstat -h databasename, skatiet rindiņu Lapas buferi).

Ja keÅ”atmiņa ir skaidri iestatÄ«ta datu bāzes galvenē, tā ignorē vērtÄ«bas no faila firebird.conf (un datubāzes.conf versijā 3.0), un, ja vērtÄ«bas nav pietiekami lielas, tas var izraisÄ«t pārmērÄ«gu atmiņas patēriņu un apmaiņu.

Pēc tam kopējiet failus mērķa sistēmā.

KonvertÄ“Å”ana tiek veikta pēc "sistēmas" Firebird 2.5 pakalpojuma apturÄ“Å”anas komandrindā ar paaugstinātām vietējā administratora tiesÄ«bām (piemērs):

set ISC_USER=Š²Š»Š°Š“ŠµŠ»ŠµŃ†
"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

Šajā piemērā pēdiņās tiek izmantota slīpsvītra (derīga "unix stila"), un ar "cepure" (rakstzīme "^") tiek izmantota jaunrindas rakstzīme, kas ir noderīga, rakstot garas komandas. Opcija -st(atus) parādījās Firebird 2.5.8 un ļauj reģistrēt datus par gbak procesa darbības laiku (sīkāku informāciju skatiet dokumentācijā).

Linux

Operētājsistēmā Linux Firebird 3 ir atkarÄ«gs no tommath bibliotēkas. Operētājsistēmā CentOS (RHEL) Ŕī bibliotēka atrodas epel repozitorijā, bet Ubuntu (Debian) sistēmas repozitorijā.

CentOS gadījumā vispirms ir jāpievieno epel repozitorijs un tikai tad tas jādara

yum install libtommath

Ubuntu nav jāiekļauj papildu krātuves, taču Ubuntu 16 un Ubuntu 18 instalē dažādas pakotņu versijas - attiecīgi libtommath0 un libtommath1.

Firebird 3.0 meklē tommath.so.0 un Ubuntu 18 papildus ir nepiecieÅ”ams izveidot saiti (symlink) no tommath.so.0 uz tommath.so.1. Lai to izdarÄ«tu, vispirms ir jāatrod tommath.so.1.

Meklētais ceļŔ Ubuntu - /usr/lib/x86_64-linux-gnu/, taču citi uz Debian balstÄ«ti izplatÄ«jumi var atŔķirties.

Otra problēma ir saistÄ«ta ar faktu, ka lÄ«dz Firebird 3.0.1 ieskaitot nebija vienkārÅ”s veids, kā instalēt divas dažādas servera versijas. Mēs neuzskatām iespēju ā€œkompilēt no avota ar nepiecieÅ”amo prefiksuā€ tās relatÄ«vās sarežģītÄ«bas dēļ.

Ir ieviesta Firebird 3.0.2 un jaunāka versija veidot ar --enable-binreloc un atseviŔķa instalētāja opcija (-ceļa ceļŔ).

Pieņemot, ka sistēmai ir pievienota tommath bibliotēka un, ja nepiecieÅ”ams, saite uz tommath.so.0, jÅ«s varat instalēt paÅ”reizējo (Ŕī rakstÄ«Å”anas brÄ«dÄ«) Firebird 3.0.4 izplatÄ«Å”anu, piemēram, mapē /opt. /fb3:

./install.sh -path /opt/fb3

Pēc tam varat apturēt Firebird sistēmas pakalpojumu un sākt straumÄ“Å”anas konvertÄ“Å”anu.

Apturot Firebird, ņemiet vērā, ka Firebid 2.5 procesus klasiskajā režīmā parasti sāk xinetd ā€” tāpēc jums ir jāatspējo firebird pakalpojums xinetd vai pilnÄ«bā jāaptur xinetd.

Programmā firebird.conf 3.0 operētājsistēmā Linux nav jāiestata MaxUnflushed parametri (tie darbojas tikai operētājsistēmā Windows) un jāmaina Firebird 2.5 iestatījumi.

Linux sistēmā Firebird 2.5 lokālā (faila) piekļuve nav lÄ«dzvērtÄ«ga iegultajai versijai operētājsistēmā Windows - 2.5 serveris darbosies gbak procesā (bez tÄ«kla daļas), bet piekļuves tiesÄ«bas tiks pārbaudÄ«tas pret lietotāju bāzi, kas nozÄ«mē, ka bÅ«s nepiecieÅ”ama ne tikai pieteikÅ”anās, bet arÄ« parole:

export ISC_USER=username ISC_PASSWORD=password
/opt/firebird/bin/gbak -b ā€¦ Š±Š°Š·Š°25 stdout
|/opt/fb3/bin/gbak -c ā€¦ stdin Š±Š°Š·Š°30

Pēc veiksmÄ«gas pārveidoÅ”anas vispirms ir jāatinstalē "papildu" Firebird 3.0, pēc tam "galvenais" Firebird 2.5 un pēc tam jāveic tÄ«ra Firebird 2.5 instalÄ“Å”ana ā€” un tas ir vislabākais no parastā tar.gz instalÄ“Å”anas programmas, nevis izmantojot krātuves, jo. versija krātuvēs var atpalikt.

Tāpat pēc datu bāzes atjaunoÅ”anas operētājsistēmā Linux un atkārtotas instalÄ“Å”anas ir jāpārbauda, ā€‹ā€‹vai jaunā datubāze pieder firebird lietotājam.

Ja tas tā nav, tad tas būs jālabo.

chown firebird.firebird database

Kopsavilkums

Papildus laika un diska vietas taupÄ«Å”anai straumÄ“Å”anas konvertÄ“Å”anai ir vēl viena svarÄ«ga priekÅ”rocÄ«ba - datu bāzes konvertÄ“Å”ana tiek veikta, neizdzÄ“Å”ot esoÅ”o Firebird 2.5, kas ievērojami vienkārÅ”o atcelÅ”anu neveiksmÄ«gas konvertÄ“Å”anas gadÄ«jumā (visbiežāk vietas trÅ«kuma vai negaidÄ«tas pārstartÄ“Å”anas dēļ migrācijas laikā). process).

Laika ietaupÄ«jums ir saistÄ«ts ar faktu, ka "klasiskā" konversija ir "rezerves laiks" plus "atjaunoÅ”anas laiks". AtkopÅ”ana sastāv no divām daļām: datu nolasÄ«Å”anas no dublējuma faila un indeksa izveides.

Izmantojot straumÄ“Å”anas konvertÄ“Å”anu, kopējais laiks tiek iegÅ«ts kā ā€œrezerves laiks plus pieci lÄ«dz desmit procentiā€ un ā€œindeksa izveides laiksā€.

Konkrēti rezultāti ir atkarÄ«gi no datu bāzes struktÅ«ras, taču vidēji atkopÅ”anas laiks ir aptuveni divas reizes lielāks par dublÄ“Å”anas laiku. Tāpēc, ja ņemam rezerves laiku kā vienÄ«bu, tad ā€œklasiskā konversijaā€ ir trÄ«s laika vienÄ«bas, straumÄ“Å”ana ir divas laika vienÄ«bas. TempCacheLimit palielināŔana palÄ«dz vēl vairāk samazināt laiku.

Kopumā straumÄ“Å”anas konvertÄ“Å”ana praksē ļauj ietaupÄ«t 30ā€“40% no alternatÄ«vās dublÄ“Å”anas un atjaunoÅ”anas laika.

Jautājumi?

Visus jautājumus, lÅ«dzu, rakstiet komentāros vai nosÅ«tiet metodikas autoram un Ŕī raksta lÄ«dzautoram - Vasilijam Sidorovam, iBase vadoÅ”ajam sistēmu inženierim, bs at ibase ru.

Aptaujā var piedalīties tikai reģistrēti lietotāji. Ielogoties, lūdzu.

Kādu Firebird versiju jūs izmantojat?

  • Firebird 3.x

  • Firebird 2.5

  • Firebird 2.1

  • Firebird 2.0, 1.5 vai 1.0

Nobalsoja 16 lietotāji. 1 lietotājs atturējās.

Avots: www.habr.com

Pievieno komentāru