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 ievērojat standarta pieeju, tas nozīmē dublēt uz 2.5 versiju, pēc tam instalēt 3.0 versiju un atjaunot. Šī procedūra ir pieņemama, ja jums ir pietiekami daudz laika, bet, migrējot lielas datubāzes vai migrējot vairākus desmitus datubāzu vienlaikus, ja laiks ir ierobežots, varat izmantot straumēšanas konvertēšanu, kas ir par 30–40 % ātrāka. Kā tieši to izdarīt (sadaļā Windows un zem Linux), lasīt zem griezuma.
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 база30Gbak 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.
Zemāk mēs aplūkojam detaļas par Windows и Linux.
Windows
Kad Windows Vienkāršākais veids ir izveidot pilnīgi atsevišķu Firebird versiju. Lai to izdarītu, veiciet tālāk norādītās darbības. , 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 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.dllPieredzē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 = -1Tā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=6GProtams, š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
uz Linux Firebird 3 ir atkarīgs no tommath bibliotēkas. CentOS (RHEL) šī bibliotēka atrodas epel repozitorijā Ubuntu (Debian) iekšā – sistēmisks.
Par CentOS Vispirms jāpieslēdz epel repozitorijs un tikai tad jādara tas.
yum install libtommathUbuntu nav nepieciešams pieslēgt papildu repozitorijus, bet gan Ubuntu 16 un iekšā Ubuntu Ir instalētas 18 dažādas pakotņu versijas — attiecīgi libtommath0 un libtommath1.
Firebird 3.0 meklē tommath.so.0 un Ubuntu 18 Turklāt jums ir jāizveido simboliska saite no tommath.so.0 uz tommath.so.1. Lai to izdarītu, vispirms ir jāatrod tommath.so.1.
Meklētais ceļš iekšā Ubuntu - /usr/lib/x86_64-linux-gnu/, bet citās Debianuz sadalījumiem balstīti sadalījumi var būt atšķirīgi.
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 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/fb3Pē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.
Firebird.conf failā 3.0 versijā, kas darbojas Linux Nav nepieciešams iestatīt MaxUnflushed parametrus (tie darbojas tikai uz Windows) un mainiet Firebird 2.5 iestatījumus.
Linux sistēmā Firebird 2.5 lokālā (failu) piekļuve nav līdzvērtīga iegultajai versijai Windows – Serveris 2.5 darbosies gbak procesā (bez tīkla daļas), bet piekļuves tiesības tiks pārbaudītas lietotāju datubāzē, 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 база30Pē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.
Arī pēc BD atjaunošanas Linux Un ir jāpārbauda atkārtota instalēšana, lai pārliecinātos, ka jaunā datubāze pieder Firebird lietotājam.
Ja tas tā nav, tad tas būs jālabo.
chown firebird.firebird databaseKopsavilkums
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. , 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
