Ădo version i Firebird ka versionin e vet tĂ« formatit tĂ« strukturave tĂ« disqeve tĂ« bazĂ«s sĂ« tĂ« dhĂ«nave â O(n)D(isk)S(tructure). Deri nĂ« versionin 2.5, motori Firebird mund tĂ« punojĂ« me ODS tĂ« versioneve tĂ« mĂ«parshme, qĂ« do tĂ« thotĂ« se bazat nga versionet e vjetra hapeshin nga versioni i ri dhe punonin nĂ« modalitetin e kompatibilitetit, por motori Firebird 3.0 punon vetĂ«m me bazat e tĂ« dhĂ«nave nĂ« versionin e tij ODS 12.0.
PĂ«r tĂ« kaluar nĂ« 3.0, baza e tĂ« dhĂ«nave nga 2.5 duhet tĂ« konvertohet nĂ« formatin e ri pĂ«rmes backup/restore. Sigurisht, ne supozojmĂ« se baza e tĂ« dhĂ«nave Ă«shtĂ« pĂ«rgatitur paraprakisht pĂ«r konvertim â pra, metadat dhe pyetjet janĂ« kontrolluar pĂ«r kompatibilitet me Firebird 3.0.
Nëse ndjekim qasjen standarde, kjo do të thotë që duhet të bëjmë një backup në versionin 2.5, pastaj të instalojmë 3.0 dhe të bëjmë restore. Kjo procedurë është e pranueshme nëse kemi mjaft kohë, por gjatë migrimit të bazave të dhënave të mëdha ose kur migrimi i dhjetëra bazave ndodh në të njëjtën kohë, kur koha është e çmuar, mund të përdorim konvertimin në rrjedhë, i cili është 30-40% më i shpejtë. Si të veprojmë saktësisht (nën Windows dhe Linux), lexoni më poshtë.
Ideja e përgjithshme është se për të përshpejtuar do të përdorim një pipeline:
gbak -b ⊠baza25 stdout | gbak -c ⊠stdin baza30Gbak nga 2.5 gjeneron një backup në format linear dhe e drejton atë në stdout, i cili menjëherë kapet nga gbak nga 3.0 përmes stdin dhe krijon një bazë të re.
Organizimi i një pipeline të tillë është e domosdoshme të kryhet patjetër me metodën lokale (file), pasi qasja në rrjet (edhe përmes localhost) do ta ngadalësonte ndjeshëm procesin.
Më poshtë shqyrtojmë detajet për Windows dhe Linux.
Windows
NĂ« rastin e Windows, mĂ« e thjeshtĂ« Ă«shtĂ« tĂ« bĂ«jmĂ« njĂ« ndĂ«rtim plotĂ«sisht autonom tĂ« Firebird. PĂ«r kĂ«tĂ«, marrim , e ridĂ«gjojmĂ« fbemded.dll nĂ« fbclient.dll, shtojmĂ« nga arkivi i 'zakonshĂ«m' 2.5 utilitetin gbak.exe dhe (pĂ«rjoqĂ«sisht) â isql.exe.
Firebird 3.0 përdor dhe nuk kërkon asnjë përmirësim.
Opsioni më minimal (i cili nuk kërkon instalimin e bibliotekave runtime VS2008/VS2010 në sistemin e synuar) përmban skedarët e mëposhtëm:
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.dllNjë administrator i përvojës mund të vërejë se në 2.5 nuk përfshihen skedarët intl/fbintl.dll dhe intl/fbintl.conf. Kjo është e vërtetë, pasi gbak nuk përdor charset të lidhjes dhe nuk konverton të dhënat midis charset-ve, por në anën e "pranimit" të Firebird 3.0 këta skedarë janë të nevojshëm për krijimin e indekseve.
Në firebird.conf Firebird 3.0 rekomandohet të shtohet:
MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1Gjithashtu, është e preferueshme të vendosni vlera të ndryshme për IpcName për 2.5 dhe 3.0.
Kur zgjedhim vlerat e parametrave tĂ« tjerĂ« nĂ« firebird.conf, jemi tĂ« orientuar nga njĂ« arsyetim i thjeshtĂ«: nĂ« etapĂ«n e transferimit tĂ« tĂ« dhĂ«nave, nĂ« njĂ« proces gbak punon 2.5, dhe nĂ« tjetrin â 3.0, pastaj 2.5 pĂ«rfundon punĂ«n, dhe 3.0 fillon ndĂ«rtimin e indekseve.
Për të përshpejtuar fazën e ndërtimit të indekseve në 3.0, rekomandohet të rritet madhësia e parametrin TempCacheLimit deri në ~40% të RAM (nëse është server i dedikuar, natyrisht).
Për shembull, nëse serveri ka 16 GB RAM, atëherë mund të vendosni
TempCacheLimit=6GNatyrisht, një vlerë e tillë mund të vendoset vetëm te Firebird 3 64-bit, pasi çdo proces 32-bit nuk do të jetë në gjendje të alokojë më shumë se 2 GB memorie.
Te 2.5 nuk Ă«shtĂ« e nevojshme tĂ« ndryshoni kĂ«tĂ« parametrin â ai nuk mund tĂ« jetĂ« mĂ« i madh se 2 GB, dhe gjithashtu nuk ndikon nĂ« shpejtĂ«sinĂ« gjatĂ« backup-it.
Para se të kryeni operacionin, duhet të kontroloni që cache i faqes në titullin e bazës së të dhënave është vendosur në 0 (komanda gstat -h databasename, shikoni rreshtin 'Page buffers').
Nëse cache është caktuar qartë në header-in e DB, atëherë ai anullon vlerat nga firebird.conf (dhe databases.conf në 3.0), dhe në rastin e vlerave të pakompleksuara të mëdha mund të çojë në konsum të tepruar të memories dhe kalimin në swap.
Më pas, kopjojmë skedarët në sistemin e synuar.
Konvertimi kryhet pas ndalimit të shërbimit "sistemor" Firebird 2.5, në komandën e linjës me të drejtat e ngritura deri te administratori lokal (shembull):
set ISC_USER=pronari
"25/gbak" -z -b -g -v -st t -y 25.log baza25 stdout|^
"30/gbak" -z -c -v -st t -y 30.log stdin baza30NĂ« kĂ«tĂ« shembull pĂ«rdoret "kosha e drejtpĂ«rdrejtĂ«" nĂ« cita (stili i pranuar "unix-style"), dhe "karotĂ«" (simboli "^") e maskon simbolin e kalimit tĂ« linjĂ«s, e cila Ă«shtĂ« e pĂ«rshtatshme pĂ«r shpĂ«rndarjen e komandave tĂ« gjata. Opsioni -st(atus) u shfaq nĂ« Firebird 2.5.8 dhe lejon regjistrimin e informacionit mbi kohĂ«n e funksionimit tĂ« procesit gbak (detajet â nĂ« dokumentacion).
Linux
NĂ« Linux Firebird 3 varet nga biblioteka tommath. NĂ« CentOS (RHEL) kjo bibliotekĂ« ndodhet nĂ« repositorin epel, nĂ« Ubuntu (Debian) nĂ« â sistemor.
Për CentOS, fillimisht duhet të lidhni repository-n epel dhe pastaj të bëni
yum install libtommathUbuntu nuk kĂ«rkon tĂ« lidhĂ« repository tĂ« tjera, por nĂ« Ubuntu 16 dhe nĂ« Ubuntu 18 instalohet version i ndryshĂ«m paketash â libtommath0 dhe libtommath1, pĂ«rkatĂ«sisht.
Firebird 3.0 kërkon tommath.so.0 dhe për Ubuntu 18 është e nevojshme të krijoni një lidhje (symlink) nga tommath.so.0 në tommath.so.1. Për këtë, fillimisht duhet të gjeni tommath.so.1.
Rruga e kërkuar në Ubuntu është /usr/lib/x86_64-linux-gnu/, por në distro të tjera të bazuara në Debian mund të jetë ndryshe.
Problemi i dytë është se deri në Firebird 3.0.1, përfshirë, nuk kishte një mënyrë të thjeshtë për të instaluar dy versione të ndryshme të serverit. Nuk po e shqyrtojmë variantin "kompilohet nga burimi me prefiksin e duhur" për shkak të punës në relative tepër kërkuese.
Për Firebird 3.0.2 dhe më sipër është realizuar dhe një opsion i veçantë për instaluesin (-path rruga).
Duke supozuar se biblioteka tommath dhe, nëse nevojitet, lidhja për tommath.so.0 janë shtuar në sistem, mund të instaloni përditësimin aktual (në momentin që po shkruhet ky artikull) të distribucionit të Firebird 3.0.4 në, për shembull, /opt/fb3:
. /install.sh -path /opt/fb3Pas kësaj, mund të ndaloni shërbimin sistemor Firebird dhe të filloni konvertimin e procesit.
Kur ndaloni Firebird, duhet tĂ« merret parasysh se proceset e Firebird 2.5 nĂ« mĂ«nyrĂ«n Classic zakonisht nisin nga xinetd â kĂ«shtu qĂ« Ă«shtĂ« e nevojshme ose tĂ« ndalohet shĂ«rbimi firebird pĂ«r xinetd ose tĂ« ndalohet plotĂ«sisht xinetd.
Në firebird.conf për 3.0 në Linux nuk është e nevojshme të caktohen parametrat MaxUnflushed (ato funksionojnë vetëm në Windows) dhe të ndryshohen parametrat e Firebird 2.5.
NĂ« Linux, qasja lokale (fajll) e Firebird 2.5 nuk Ă«shtĂ« ekuivalente me variantin embeded nĂ« Windows â serveri 2.5 do tĂ« funksionojĂ« nĂ« procesin gbak (pa pjesĂ«n rrjetĂ«), por tĂ« drejtat pĂ«r akses do tĂ« verifikohen nĂ« bazĂ«n e pĂ«rdoruesve, kĂ«shtu qĂ« do tĂ« nevojiten jo vetĂ«m login, por edhe fjalĂ«kalimi:
export ISC_USER=username ISC_PASSWORD=password
/opt/firebird/bin/gbak -b ⊠baza25 stdout
|/opt/fb3/bin/gbak -c ⊠stdin baza30Pas njĂ« konvertimi tĂ« suksesshĂ«m, duhet tĂ« fshihet fillimisht "Firebird 3.0" "shtesĂ«", pastaj "Firebird 2.5" "temel" dhe vetĂ«m pastaj tĂ« bĂ«ni njĂ« instalim tĂ« pastĂ«r tĂ« Firebird 2.5 â dhe Ă«shtĂ« mĂ« mirĂ« tĂ« bĂ«het nga instaluesi standard tar.gz, jo pĂ«rmes repository-ve, pasi versioni nĂ« repository mund tĂ« jetĂ« i vonuar.
Gjithashtu, pas rikthimit të DB në Linux dhe riinstalimit, duhet të kontrolloni që DB e re të ketë pronar përdoruesin firebird.
Nëse nuk është kështu, atëherë duhet ta korrigjoni
chown firebird.firebird databasePërfundimi
PĂ«rveç kursimit tĂ« kohĂ«s dhe hapĂ«sirĂ«s nĂ« disk, konvertimi nĂ« rrjedhĂ« ka njĂ« avantazh tĂ« rĂ«ndĂ«sishĂ«m tjetĂ«r â transformimi i bazĂ«s bĂ«het pa fshirĂ« Firebird 2.5 ekzistues, gjĂ« qĂ« ndihmon nĂ« lehtĂ«simin e rikthimit nĂ« rast tĂ« njĂ« konvertimi tĂ« dĂ«shtuar (shpesh nga mungesa e hapĂ«sirĂ«s ose ri-ngarkimi i papritur gjatĂ« procesit tĂ« migrimit).
Kursimi i kohës është i lidhur me faktin që konvertimi «klasik» është «koha e backup-it» plus «koha e rikuperimit». Rikuperimi përbëhet prej dy pjesëve: leximi i të dhënave nga skedari i backup-it dhe ndërtimi i indeksit.
Me konvertim në rrjedhë, koha totale del si «koha e backup-it plus pesë deri në dhjetë përqind» dhe «koha e ndërtimit të indekseve».
Rezultatet konkrete varen nga struktura e bazës, por në mesatare koha e rikuperimit është rreth dyfishi i kohës së backup-it. Prandaj, nëse marrim si njësi kohën e backup-it, konvertimi «klasik» merr tre njësi kohe, ndërsa ai në rrjedhë merr dy njësi kohe. Rritja e TempCacheLimit ndihmon gjithashtu në reduktimin e kohës.
Në përgjithësi, konvertimi në rrjedhë në praktikë lejon kursimin e 30-40% të kohës së backup-it dhe rikthimit sekuencial.
Keni pytje?
Ju lutem, dĂ«rgoni tĂ« gjitha pyetjet nĂ« komentet, ose drejtohuni autorit tĂ« metodikĂ«s dhe bashkautorĂ«ve tĂ« kĂ«tij artikulli â Vasili Sidorov, inxhinierin e sistemit tĂ« kompanisĂ« «iBase», nĂ« adresĂ«n bs at ibase ru.
Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. , ju lutem.
Cilën version të Firebird përdorni?
Firebird 3.x
Firebird 2.5
Firebird 2.1
Firebird 2.0, 1.5 ose 1.0
16 përdorues kanë votuar. 1 përdorues është abstenuar.
Burimi: habr.com
