Streaming conversion of Firebird 2.5 databases to ODS12 format (Firebird 3.0)

Unaquaeque versio Firebird suam versionem habet forma structurae orbis database - O(n)D(isk)S(tructura). Usque ad versionem 2.5 inclusive, machina Firebird cum ODS priorum versionum, id est databases ex antiquis versionibus, nova versione apertae sunt et modo compatibilitatis laboraverunt, sed Firebird 3.0 machinam sola cum databases in suo ODS versione operatur 12.0.

Ut ad 3.0 migrandum, database ex 2.5 converti debet ad novam formam per tergum/restituendam. Utique supponitur quod ante praeparatum ad conversionem datorum erat - i.e. metadata et quaesita compatibilitas cum Firebird 3.0 repressa sunt.

Si vexillum accessum sequimini, hoc significat quod opus est tergum in versione 2.5 facere, deinde 3.0 inaugurare et restituere. Haec ratio accepta est si tempus est satis, sed cum magnas databases migrans, vel cum pluribus duodenis databases migrantibus simul, cum tempus breve est, conversione effusis uti potes, quod 30-40% velocius est. Quam exacte hoc facere (sub Windows et sub Linux), sub inciso legitur.

Communis idea est, quod utemur pipeline ad res sursum properantes;

gbak -b … Π±Π°Π·Π°25 stdout | gbak -c … stdin Π±Π°Π·Π°30

Gbak ab 2.5 tergum in forma lineari generat et ad stdout mittit, quod statim gbak ab 3.0 per stdin carpit et novum datorum creat.

Oportet tale pipelineum cum accessu locali (lima) ordinare, cum accessus retis (etiam per localhost) signanter processum retardabit.

Transimus singula pro Fenestra et Linux infra.

Fenestra

In Fenestra, via facillima est aedificare Firebird omnino standum. Hoc enim accipimus embed-archive Firebird 2.5, rename fbemded.dll ad fbclient.dll, addunt gbak.exe et (libitum) isql.exe utilitates ex archivo "ordinario" 2.5.

Firebird 3.0 usus una ecclesia et non requirit aliquam modificationem.

Versio minimissima (quae institutionem bibliothecarum VS2008/VS2010 runtime in scopum systematis non requirit) sequentes tabulas continet:

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

Peritus administrator animadvertere potest 2.5 tabulas intl/fbintl.dll et intl/fbintl.conf non includere. Hoc verum est, quia gbak nexu charsettis non utitur nec notitias inter schedas convertens, sed in parte Firebird 3.0 "accipiens", necessariae sunt hae tabulae cum indices creandi.

In firebird.conf Firebird 3.0 commendatur adde:

MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

Expedit etiam, IpcName valores diversos ponere pro 2.5 et 3.0.

Cum valores aliorum parametri firebird.conf eligendo, simplici consideratione proceditur: in scaena transfusionis data, gbak 2.5 in uno processu decurrit, et 3.0 in alio, dein 2.5 exitibus, et 3.0 incipit aedificium indices.

Ad indicem aedificationis Phase in 3.0 accelerare, suadetur ut amplitudo TempCacheLimit parametri ad 40% RAM~ augeatur (si servitor dedicatus est, utique).

Exempli gratia, si ministrans 16 GB ipsius RAM habet, tunc potes ponere

TempCacheLimit=6G

Utique, haec valor solum pro 64-bit Firebird 3, quia quilibet 32-bitrum processus plus quam 2 gigabytes memoriae collocare non potest.

In 2.5, hic modulus mutari non debet - non potest esse plus quam 2 gigabytes usquam, nec celeritas in tergum afficit.

Priusquam operationem perficias, debes reprehendo paginae cache in capite datorum positum esse 0 (mandatum .) gstat -h databasename, vide buffers Paginam rectam).

Si latibulum explicite positum est in capite datorum, tunc valores ab firebird.conf (et databases.conf in 3.0) vincit, et in casu non satis magnorum bonorum, ad nimiam memoriam tabem et permutationem ducere potest.

Deinde ad scopum systematis lima effingo.

Conversio exercetur postquam "ratio" Firebird 2.5 obstitit, de mandato cum iuribus elevatis ad administratorem localem (exempli gratia);

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

Hoc exemplum "proinde slash" in virgulis (validis "unix-style") utitur, et "proni" (per "^" characterem) indolem novitatem effugit, quae utile est cum typing longi imperat. Optio -st(atus) in Firebird 2.5.8 apparuit et te permittit ut notitias aperias circa tempus processus gbak currendo (per singula, documenta vide).

Linux

On Linux Firebird 3 pendet in bibliotheca tommath. In CentOS (RHEL) haec bibliotheca sita est in repositorio epel, in Ubuntu (Debian) in repositorio systematis.

Pro CentOS, repositorium epel primum coniungere debes et tunc demum facere

yum install libtommath

Decuria non indiget repositoria adiectis includere, sed Decuria 16 et Ubuntu 18 varias versiones fasciculorum - libtommath0 et libtommath1, respective instituunt.

Firebird 3.0 spectat tommath.so.0 et pro Ubuntu 18 etiam requiritur nexum (symlink) ex tommath.so.0 creare ad tommath.so.1. Ad hoc primum debes invenire tommath.so.1.

Iter exploratum est in Ubuntu - /usr/lib/x86_64-linux-gnu/sed aliae distributiones Debian fundatae diversae esse possunt.

Secundum problema refertur ad factum quod Firebird 3.0.1 et inclusis, non erat facilis via ad duas versiones ministrantium instituendas. Optionem "compilare ex fonte cum praepositione debita" non consideramus propter implicationem relativam.

For Firebird 3.0.2 and higher implemented aedificare cum --enable-binreloc ac separatus optio installer (-path iter).

Posito tommatham bibliothecam et, si opus est, symlinka tommath.so.0 systemati additae sunt, hodiernam (tempore scripturae huius scriptionis) instituere potes in distributione Firebird 3.0.4, exempli gratia, /opt /fb3;

./install.sh -path /opt/fb3

Post hoc, ratio muneris Firebird prohibere potes ac conversionem effusis incipere.

Cum Firebird reprimendo, meminerimus Firebid 2.5 processuum in modo Classico solere ab xinetd coepisse - sic necesse est ut vel servitutem avem pro xinetd vel xinetd perfecte desinere debeas.

In firebird.conf pro 3.0 in Linux, MaxUnflushed parametris (modo in Fenestra laboras) et Firebird 2.5 occasus mutare non debes.

In Linux, Firebird 2.5 accessus localis (lima) non aequivalet versioni embedatae sub Windows - 2.5 server in processu gbak (sine parte retis), sed iura accessus cohibebitur contra basim usoris, quod significat non solum login, sed etiam tessera requiretur:

export ISC_USER=username ISC_PASSWORD=password
/opt/firebird/bin/gbak -b … Π±Π°Π·Π°25 stdout
|/opt/fb3/bin/gbak -c … stdin Π±Π°Π·Π°30

Post felicem conversionem, debes primum "additional" Firebird 3.0, deinde "principale" Firebird 2.5, et posteaquam mundam institutionem Firebird 2.5 perficies - et optimum est e tar.gz institutore regulari, et non per repositoria, quia. versio in repositoriis deesse potest.

Etiam, reddita datorum in Linux et reinstalling, reprehendo debes novum database possideri ab usore firebird.

Id si non sit, corrigi oportebit.

chown firebird.firebird database

exitum

Praeter tempus et spatium orbis salvificum, effusis conversio aliud momentum habet - datorum conversio sine deletione existens Firebird 2.5, quae valde simplificat reverti in casu conversionis adversae (saepius ob defectum spatii vel inopinati reboot in migratione. processum).

Tempus salutaris ob id accidit quod "classica" conversio est "tempus tergum" plus "tempus restituendi". Recuperatio duabus partibus constat: notitia lectionis ex lima tergum et indicem aedificans.

Conversione effusa totum tempus obtinetur ut "tergum tempus plus quinque ad decem centesimas" et "index temporis aedificationis".

Imprimis eventus e structura datorum pendent, sed in mediocris, tempus recuperationis bis fere tergum est. Si ergo sumendo tempus ut unitas, tunc "conversio classica" est tres unitates temporis, profluens est duae unitates temporis. Augendo TempCacheLimit adiuvat ad tempus adhuc reducendum.

In genere, profusa conversio in praxi sinit te servare 30-40% temporis alternae tergum ac restituendi.

Quaestiones?

Quaeso scribe quaestiones omnes in comment, vel ad auctorem methodi tradendae et co-auctorem huius articuli - Vasily Sidorov, iBase Ducens System Engineer, at bs at ibase ru.

Tantum usores descripserunt in aliquet participare possunt. InscribeTe gratissimum esse.

Quod versio Firebird es usura?

  • Firebird 3.x *

  • Firebird 2.5

  • Firebird 2.1

  • Firebird 2.0, 1.5 vel 1.0

16 utentes censuerunt. 1 Insere abstinuisse.

Source: www.habr.com