Difizyon konvèsyon nan baz done Firebird 2.5 nan fòma ODS12 (Firebird 3.0)

Chak vèsyon Firebird gen pwòp vèsyon fòma estrikti disk baz done a, O(n)D(isk)S(tructure). Jiska vèsyon 2.5 enklizif, motè Firebird la te kapab travay ak ODS nan vèsyon anvan yo, se sa ki, baz done ki soti nan vèsyon ansyen yo te louvri pa nouvo vèsyon an epi yo te travay nan mòd konpatibilite, men motè Firebird 3.0 la sèlman travay ak baz done nan pwòp vèsyon ODS li yo. 12.0.

Pou imigre nan 3.0, baz done a soti nan 2.5 dwe konvèti nan nouvo fòma atravè backup / restore. Natirèlman, nou sipoze ke baz done a te deja prepare pou konvèsyon - i.e. metadata ak demann yo te tcheke pou konpatibilite ak Firebird 3.0.

Si ou swiv apwòch estanda a, sa vle di ke ou bezwen fè yon backup sou vèsyon 2.5, Lè sa a, enstale 3.0 epi fè yon retabli. Yon pwosedi sa yo akseptab si gen ase tan, men lè imigre baz done gwo, oswa lè imigre plizyè douzèn baz done an menm tan, lè tan ap kouri soti, ou ka itilize konvèsyon difizyon, ki se 30-40% pi vit. Ki jan egzakteman fè sa (anba Windows ak anba Linux), li anba koupe a.

Lide jeneral la se ke nou pral sèvi ak yon tiyo akselere bagay sa yo:

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

Gbak soti nan 2.5 jenere yon backup nan yon fòma lineyè epi voye li nan stdout, ki imedyatman ranmase gbak soti nan 3.0 atravè stdin epi kreye yon nouvo baz done.

Li nesesè pou òganize yon tiyo konsa ak yon metòd aksè lokal (fichye), depi aksè rezo (menm nan localhost) pral siyifikativman ralanti pwosesis la.

Nou ale sou detay yo pou Windows ak Linux anba a.

Windows

Nan ka Windows, fason ki pi fasil se fè yon bilding konplètman otonòm nan Firebird. Pou sa nou pran embed-archive Firebird 2.5, chanje non fbemded.dll pou fbclient.dll, ajoute gbak.exe ak (si ou vle) sèvis piblik isql.exe nan achiv 2.5 "regilye".

Firebird 3.0 itilize sèl asanble epi li pa mande okenn modifikasyon.

Vèsyon ki pi minim (ki pa mande pou enstalasyon bibliyotèk ekzekite VS2008/VS2010 sou sistèm sib la) gen dosye sa yo:

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

Yon administratè ki gen eksperyans ka remake ke 2.5 pa enkli fichye intl/fbintl.dll ak intl/fbintl.conf. Sa a se vre, depi gbak pa sèvi ak yon koneksyon charset epi li pa konvèti done ant charsets, men sou bò "resevwa" nan Firebird 3.0, dosye sa yo nesesè lè yo kreye endèks.

Nan firebird.conf Firebird 3.0 rekòmande pou ajoute:

MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

Epitou, li se dezirab yo mete diferan valè IpcName pou 2.5 ak 3.0.

Lè w ap chwazi valè lòt paramèt firebird.conf, nou ale nan yon konsiderasyon senp: nan etap transfizyon done, gbak kouri 2.5 nan yon pwosesis, ak 3.0 nan lòt la, Lè sa a, 2.5 sòti, ak 3.0 kòmanse bati. endèks.

Pou pi vit faz bilding endèks la nan 3.0, li rekòmande pou ogmante gwosè paramèt TempCacheLimit a ~ 40% RAM (si se yon sèvè devwe, nan kou).

Pou egzanp, si sèvè a gen 16 GB nan RAM, Lè sa a, ou ka mete

TempCacheLimit=6G

Natirèlman, valè sa a ka mete sèlman pou 64-bit Firebird 3, paske nenpòt pwosesis 32-bit pa ka asiyen plis pase 2 gigabyte memwa.

Nan 2.5, paramèt sa a pa bezwen chanje - li pa ka plis pase 2 jigokte de tout fason, epi li pa afekte vitès la pandan backup.

Anvan ou fè operasyon an, ou bezwen tcheke ke kachèt paj la nan header baz done a mete sou 0 (kòmand gstat -h databasename, gade liy tanpon Page).

Si kachèt la mete klèman nan header baz done a, Lè sa a, li pase sou valè yo soti nan firebird.conf (ak databases.conf nan 3.0), ak nan ka ta gen valè ensifizan gwo, li ka mennen nan konsomasyon memwa twòp ak echanj.

Apre sa, kopye dosye yo nan sistèm sib la.

Konvèsyon an fèt apre yo fin sispann sèvis "sistèm" Firebird 2.5 la, sou liy lòd ak dwa ki wo bay administratè lokal la (egzanp):

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

Egzanp sa a sèvi ak yon "forward slash" nan guillemets (valab "unix-style"), ak yon "chapo" (karaktè "^" la) chape karaktè newline la, ki itil lè w tape kòmandman long. Opsyon -st(atus) te parèt nan Firebird 2.5.8 epi li pèmèt ou konekte done sou tan pwosesis gbak la t ap kouri (pou plis detay, gade dokiman an).

Linux

Sou Linux Firebird 3 depann sou bibliyotèk Tommath la. Sou CentOS (RHEL) bibliyotèk sa a sitiye nan depo epel la, sou Ubuntu (Debian) nan depo sistèm lan.

Pou CentOS, ou dwe premye konekte depo epel la epi sèlman Lè sa a, fè

yum install libtommath

Ubuntu pa bezwen enkli repozitwa adisyonèl, men Ubuntu 16 ak Ubuntu 18 enstale diferan vèsyon pakè yo - libtommath0 ak libtommath1, respektivman.

Firebird 3.0 sanble pou tommath.so.0 ak pou Ubuntu 18 li nesesè anplis pou kreye yon lyen (senbolik) soti nan tommath.so.0 rive nan tommath.so.1. Pou fè sa, premye bezwen jwenn tommath.so.1.

Chemen rechèch nan Ubuntu - /usr/lib/x86_64-linux-gnu/, men lòt distribisyon ki baze sou Debian ka diferan.

Dezyèm pwoblèm nan gen rapò ak lefèt ke jiska e ki gen ladan Firebird 3.0.1, pa te gen okenn fason fasil enstale de vèsyon sèvè diferan. Nou pa konsidere opsyon "konpile soti nan sous ak prefiks ki nesesè yo" paske nan konpleksite relatif li yo.

Pou Firebird 3.0.2 ak pi wo aplike bati ak --enable-binreloc ak yon opsyon enstale separe (chemen-chemen).

Si nou sipoze ke bibliyotèk tommath la ak, si sa nesesè, yon lyen senbolik pou tommath.so.0 te ajoute nan sistèm nan, ou ka enstale aktyèl (nan moman sa a ekri) distribisyon Firebird 3.0.4 nan, pou egzanp, /opt. /fb3:

./install.sh -path /opt/fb3

Apre sa, ou ka sispann sèvis sistèm Firebird la epi kòmanse konvèsyon difizyon.

Lè w kanpe Firebird, sonje ke pwosesis Firebid 2.5 nan mòd klasik yo anjeneral kòmanse pa xinetd - kidonk ou bezwen swa enfim sèvis firebird la pou xinetd oswa sispann xinetd nèt.

Nan firebird.conf pou 3.0 sou Linux, ou pa bezwen mete paramèt MaxUnflushed (yo sèlman travay sou Windows) epi chanje paramèt Firebird 2.5.

Nan Linux, Firebird 2.5 aksè lokal (fichye) pa ekivalan a vèsyon an entegre anba Windows - sèvè a 2.5 ap kouri nan pwosesis la gbak (san pati rezo a), men dwa aksè yo pral tcheke kont baz itilizatè a, ki vle di ke pa sèlman login la, men tou, modpas la pral mande:

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

Apre yon konvèsyon siksè, ou dwe premye dezenstalasyon "anplis" Firebird 3.0 la, Lè sa a, "prensipal" Firebird 2.5 la, epi apre sa fè yon enstalasyon pwòp nan Firebird 2.5 - epi li pi bon soti nan enstalasyon an regilye tar.gz, epi yo pa atravè la. depo, paske. vèsyon an nan depo yo ka retade dèyè.

Epitou, apre yo fin restore baz done a sou Linux ak reenstale, ou bezwen tcheke si nouvo baz done a posede pa itilizatè a firebird.

Si sa a se pa ka a, Lè sa a, li pral bezwen yo dwe korije.

chown firebird.firebird database

Total

Anplis ekonomize tan ak espas disk, konvèsyon difizyon gen yon lòt avantaj enpòtan - konvèsyon baz done fèt san yo pa efase Firebird 2.5 ki deja egziste a, ki senplifye anpil debakman an ka ta gen konvèsyon san siksè (pi souvan akòz mank espas oswa rdemare inatandi pandan migrasyon an). pwosesis).

Ekonomize tan an se akòz lefèt ke konvèsyon "klasik la" se "tan sovgad" plis "retore tan". Recovery konsiste de de pati: lekti done ki sòti nan yon dosye backup ak bati yon endèks.

Avèk konvèsyon difizyon, tan total la jwenn kòm "tan sovgad plis senk a dis pousan" ak "tan bilding endèks".

Rezilta espesifik depann sou estrikti baz done a, men an mwayèn, tan rekiperasyon an se apeprè de fwa tan an backup. Se poutèt sa, si nou pran tan backup kòm yon inite, Lè sa a, "konvèsyon klasik" se twa inite nan tan, difizyon se de inite nan tan. Ogmante TempCacheLimit ede diminye tan an plis.

An jeneral, konvèsyon difizyon nan pratik pèmèt ou sove 30-40% nan tan an nan backup altène ak restorasyon.

Kesyon?

Tanpri ekri tout kesyon nan kòmantè yo, oswa voye yo bay otè a nan metodoloji a ak ko-otè nan atik sa a - Vasily Sidorov, iBase Leading System Engineer, nan bs nan ibase ru.

Se sèlman itilizatè ki anrejistre ki ka patisipe nan sondaj la. Enskri, tanpri.

Ki vèsyon Firebird w ap itilize?

  • Firebird 3.x

  • Firebird 2.5

  • Firebird 2.1

  • Firebird 2.0, 1.5 oswa 1.0

16 itilizatè yo te vote. 1 itilizatè te absteni.

Sous: www.habr.com

Add nouvo kòmantè