Ffrydio trosi cronfeydd data Firebird 2.5 i fformat ODS12 (Firebird 3.0)

Mae gan bob fersiwn o Firebird ei fersiwn ei hun o fformat strwythur disg y gronfa ddata, O(n)D(isk)S(tructure). Hyd at fersiwn 2.5 yn gynwysedig, gallai injan Firebird weithio gydag ODS o fersiynau blaenorol, hynny yw, agorwyd cronfeydd data o hen fersiynau gan y fersiwn newydd a gweithio yn y modd cydnawsedd, ond dim ond gyda chronfeydd data yn ei fersiwn ODS ei hun y mae injan Firebird 3.0 yn gweithio 12.0.

Er mwyn mudo i 3.0, rhaid trosi'r gronfa ddata o 2.5 i'r fformat newydd trwy wneud copi wrth gefn / adfer. Wrth gwrs, tybiwn fod y gronfa ddata wedi'i pharatoi o'r blaen i'w throsi - h.y. mae metadata ac ymholiadau wedi'u gwirio i weld a ydynt yn gydnaws â Firebird 3.0.

Os dilynwch y dull safonol, mae hyn yn golygu bod angen i chi wneud copi wrth gefn ar fersiwn 2.5, yna gosod 3.0 a gwneud adferiad. Mae gweithdrefn o'r fath yn dderbyniol os oes digon o amser, ond wrth fudo cronfeydd data mawr, neu wrth fudo sawl dwsin o gronfeydd data ar yr un pryd, pan fydd amser yn rhedeg allan, gallwch ddefnyddio trosi ffrydio, sef 30-40% yn gyflymach. Sut yn union i wneud hyn (o dan Windows ac o dan Linux), darllenwch o dan y toriad.

Y syniad cyffredinol yw y byddwn yn defnyddio piblinell i gyflymu pethau:

gbak -b … база25 stdout | gbak -c … stdin база30

Mae Gbak o 2.5 yn cynhyrchu copi wrth gefn mewn fformat llinol ac yn ei anfon i stdout, sy'n codi gbak ar unwaith o 3.0 trwy stdin ac yn creu cronfa ddata newydd.

Mae angen trefnu piblinell o'r fath gyda dull mynediad lleol (ffeil), gan y bydd mynediad rhwydwaith (hyd yn oed trwy localhost) yn arafu'r broses yn sylweddol.

Rydym yn mynd dros y manylion ar gyfer Windows a Linux isod.

ffenestri

Yn achos Windows, y ffordd hawsaf yw gwneud adeilad cwbl annibynnol o Firebird. Am hyn cymerwn gwreiddio-archif Firebird 2.5, ailenwi fbemded.dll i fbclient.dll, ychwanegu gbak.exe ac (yn ddewisol) cyfleustodau isql.exe o'r archif 2.5 “rheolaidd”.

Defnyddiau Firebird 3.0 cynulliad sengl ac nid oes angen unrhyw addasiad.

Mae'r fersiwn lleiaf (nad oes angen gosod llyfrgelloedd amser rhedeg VS2008/VS2010 ar y system darged) yn cynnwys y ffeiliau canlynol:

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

Efallai y bydd gweinyddwr profiadol yn sylwi nad yw 2.5 yn cynnwys y ffeiliau intl/fbintl.dll ac intl/fbintl.conf. Mae hyn yn wir, gan nad yw gbak yn defnyddio set nodau cysylltiad ac nid yw'n trosi data rhwng setiau nodau, ond ar ochr "derbyn" Firebird 3.0, mae angen y ffeiliau hyn wrth greu mynegeion.

Yn firebird.conf Argymhellir Firebird 3.0 i ychwanegu:

MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

Hefyd, mae'n ddymunol gosod gwerthoedd IpcName gwahanol ar gyfer 2.5 a 3.0.

Wrth ddewis gwerthoedd paramedrau eraill firebird.conf, rydym yn symud ymlaen o ystyriaeth syml: ar y cam trallwyso data, mae gbak yn rhedeg 2.5 mewn un broses, a 3.0 mewn un arall, yna mae 2.5 yn gadael, ac mae 3.0 yn dechrau adeiladu mynegeion.

Er mwyn cyflymu'r cam adeiladu mynegai yn 3.0, argymhellir cynyddu maint y paramedr TempCacheLimit i ~ 40% RAM (os yw'n weinydd pwrpasol, wrth gwrs).

Er enghraifft, os oes gan y gweinydd 16 GB o RAM, yna gallwch chi roi

TempCacheLimit=6G

Wrth gwrs, dim ond ar gyfer 64-bit Firebird 3 y gellir gosod y gwerth hwn, gan na all unrhyw broses 32-bit ddyrannu mwy na 2 gigabeit o gof.

Yn 2.5, nid oes angen newid y paramedr hwn - ni all fod yn fwy na 2 gigabeit beth bynnag, ac nid yw'n effeithio ar y cyflymder wrth gefn.

Cyn cyflawni'r llawdriniaeth, mae angen i chi wirio bod storfa'r dudalen ym mhennyn y gronfa ddata wedi'i gosod i 0 (gorchymyn gstat -h databasename, gweler y llinell byfferau Tudalen).

Os yw'r storfa wedi'i osod yn benodol ym mhennyn y gronfa ddata, yna mae'n diystyru'r gwerthoedd o firebird.conf (a databases.conf yn 3.0), ac yn achos gwerthoedd annigonol o fawr, gall arwain at or-ddefnyddio cof a chyfnewid.

Nesaf, copïwch y ffeiliau i'r system darged.

Gwneir y trawsnewidiad ar ôl atal y gwasanaeth Firebird 2.5 "system", ar y llinell orchymyn gyda hawliau uchel i'r gweinyddwr lleol (enghraifft):

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

Mae'r enghraifft hon yn defnyddio "slaes" mewn dyfyniadau (dilys "unix-style"), ac mae "het" (y cymeriad "^") yn dianc rhag y nod llinell newydd, sy'n ddefnyddiol wrth deipio gorchmynion hir. Ymddangosodd yr opsiwn -st(atus) yn Firebird 2.5.8 ac mae'n caniatáu ichi ysgrifennu data am amser y broses gbak i'r log (am fanylion, gweler y ddogfennaeth).

Linux

Ar Linux Firebird 3 yn dibynnu ar y llyfrgell tommath. Ar CentOS (RHEL) mae'r llyfrgell hon wedi'i lleoli yn y gadwrfa epel, ar Ubuntu (Debian) yn ystorfa'r system.

Ar gyfer CentOS, yn gyntaf rhaid i chi gysylltu'r ystorfa epel a dim ond wedyn gwneud

yum install libtommath

Nid oes angen i Ubuntu gynnwys ystorfeydd ychwanegol, ond mae Ubuntu 16 a Ubuntu 18 yn gosod gwahanol fersiynau o'r pecynnau - libtommath0 a libtommath1, yn y drefn honno.

Mae Firebird 3.0 yn edrych am tomath.so.0 ac ar gyfer Ubuntu 18 mae'n ofynnol hefyd i greu dolen (symlink) o tommath.so.0 i tommath.so.1. I wneud hyn, yn gyntaf mae angen i chi ddod o hyd i tomath.so.1.

Llwybr wedi'i chwilio yn Ubuntu - /usr/lib/x86_64-linux-gnu/, ond gall dosbarthiadau eraill sy'n seiliedig ar Debian fod yn wahanol.

Mae'r ail broblem yn gysylltiedig â'r ffaith nad oedd ffordd hawdd o osod dwy fersiwn gweinydd gwahanol hyd at ac yn cynnwys Firebird 3.0.1. Nid ydym yn ystyried yr opsiwn “casglu o'r ffynhonnell gyda'r rhagddodiad gofynnol” oherwydd ei gymhlethdod cymharol.

Ar gyfer Firebird 3.0.2 ac uwch wedi'i weithredu adeiladu gyda --enable-binreloc ac opsiwn gosodwr ar wahân (-llwybr llwybr).

Gan dybio bod y llyfrgell tommath ac, os oes angen, cyswllt syml ar gyfer tommath.so.0 wedi'u hychwanegu at y system, gallwch osod y dosbarthiad cyfredol (ar adeg ysgrifennu hwn) Firebird 3.0.4 yn, er enghraifft, /opt /fb3:

./install.sh -path /opt/fb3

Ar ôl hynny, gallwch atal y gwasanaeth system Firebird a dechrau ffrydio trosi.

Wrth roi'r gorau i Firebird, cofiwch fod prosesau Firebid 2.5 yn y modd Classic fel arfer yn cael eu cychwyn gan xinetd - felly mae angen i chi naill ai analluogi'r gwasanaeth adar tân ar gyfer xinetd neu atal xinetd yn gyfan gwbl.

Yn firebird.conf ar gyfer 3.0 ar Linux, nid oes angen i chi osod paramedrau MaxUnflushed (maen nhw'n gweithio ar Windows yn unig) a newid gosodiadau Firebird 2.5.

Yn Linux, nid yw mynediad lleol Firebird 2.5 (ffeil) yn cyfateb i'r fersiwn wedi'i fewnosod o dan Windows - bydd y gweinydd 2.5 yn rhedeg yn y broses gbak (heb y rhan rhwydwaith), ond bydd hawliau mynediad yn cael eu gwirio yn erbyn y sylfaen defnyddiwr, sy'n golygu hynny nid yn unig y mewngofnodi, ond bydd angen y cyfrinair hefyd :

export ISC_USER=username ISC_PASSWORD=password
/opt/firebird/bin/gbak -b … база25 stdout
|/opt/fb3/bin/gbak -c … stdin база30

Ar ôl trosi'n llwyddiannus, rhaid i chi ddadosod y Firebird 3.0 "ychwanegol" yn gyntaf, yna'r "prif" Firebird 2.5, ac ar ôl hynny perfformio gosodiad glân o Firebird 2.5 - ac mae'n well o'r gosodwr tar.gz rheolaidd, ac nid trwy'r ystorfeydd, oherwydd. efallai y bydd y fersiwn yn yr ystorfeydd ar ei hôl hi.

Hefyd, ar ôl adfer y gronfa ddata ar Linux ac ailosod, mae angen i chi wirio bod y gronfa ddata newydd yn eiddo i'r defnyddiwr firebird.

Os nad yw hyn yn wir, yna bydd angen ei gywiro.

chown firebird.firebird database

Cyfanswm

Yn ogystal ag arbed amser a gofod disg, mae gan drawsnewidiad ffrydio fantais bwysig arall - mae trosi cronfa ddata yn cael ei wneud heb ddileu'r Firebird 2.5 presennol, sy'n symleiddio dychwelyd yn fawr rhag ofn y bydd trosi'n aflwyddiannus (yn fwyaf aml oherwydd diffyg lle neu ailgychwyn annisgwyl yn ystod y mudo broses).

Mae'r arbediad amser oherwydd y ffaith bod y trawsnewidiad "clasurol" yn "amser wrth gefn" ynghyd â "amser adfer". Mae adferiad yn cynnwys dwy ran: darllen data o ffeil wrth gefn ac adeiladu mynegai.

Gyda throsi ffrydio, ceir cyfanswm yr amser fel “amser wrth gefn ynghyd â phump i ddeg y cant” ac “amser adeiladu mynegai”.

Mae canlyniadau penodol yn dibynnu ar strwythur y gronfa ddata, ond ar gyfartaledd, mae'r amser adfer tua dwywaith yr amser wrth gefn. Felly, os ydym yn cymryd amser wrth gefn fel uned, yna mae “trosi clasurol” yn dair uned o amser, mae ffrydio yn ddwy uned o amser. Mae cynyddu TempCacheLimit yn helpu i leihau'r amser ymhellach.

Yn gyffredinol, mae trosi ffrydio yn ymarferol yn caniatáu ichi arbed 30-40% o amser wrth gefn ac adfer bob yn ail.

Cwestiynau?

Ysgrifennwch bob cwestiwn yn y sylwadau, neu anfonwch nhw at awdur y fethodoleg a chyd-awdur yr erthygl hon - Vasily Sidorov, Peiriannydd System Arwain iBase, yn bs at ibase ru.

Dim ond defnyddwyr cofrestredig all gymryd rhan yn yr arolwg. Mewngofnodios gwelwch yn dda.

Pa fersiwn o Firebird ydych chi'n ei ddefnyddio?

  • Aderyn tân 3.x

  • Adar Tân 2.5

  • Adar Tân 2.1

  • Firebird 2.0, 1.5 neu 1.0

Pleidleisiodd 16 o ddefnyddwyr. Ymatalodd 1 defnyddiwr.

Ffynhonnell: hab.com

Ychwanegu sylw