Firebird 2.5 డేటాబేస్‌లను ODS12 ఆకృతికి స్ట్రీమింగ్ మార్పిడి (ఫైర్‌బర్డ్ 3.0)

Firebird యొక్క ప్రతి వెర్షన్ దాని స్వంత డేటాబేస్ డిస్క్ స్ట్రక్చర్ ఫార్మాట్, O(n)D(isk)S(tructure)ని కలిగి ఉంటుంది. వెర్షన్ 2.5 కలుపుకొని, Firebird ఇంజిన్ మునుపటి సంస్కరణల ODSతో పని చేయగలదు, అనగా పాత సంస్కరణల నుండి డేటాబేస్‌లు కొత్త వెర్షన్ ద్వారా తెరవబడ్డాయి మరియు అనుకూలత మోడ్‌లో పని చేస్తాయి, అయితే Firebird 3.0 ఇంజిన్ దాని స్వంత ODS వెర్షన్‌లోని డేటాబేస్‌లతో మాత్రమే పని చేస్తుంది. 12.0

3.0కి మారడానికి, 2.5 నుండి డేటాబేస్ తప్పనిసరిగా బ్యాకప్/పునరుద్ధరణ ద్వారా కొత్త ఫార్మాట్‌కి మార్చబడాలి. వాస్తవానికి, డేటాబేస్ మార్పిడి కోసం గతంలో సిద్ధం చేయబడిందని మేము ఊహిస్తాము - అనగా. మెటాడేటా మరియు ప్రశ్నలు Firebird 3.0తో అనుకూలత కోసం తనిఖీ చేయబడ్డాయి.

మీరు ప్రామాణిక విధానాన్ని అనుసరిస్తే, దీని అర్థం వెర్షన్ 2.5కు బ్యాకప్ చేసి, ఆపై 3.0ను ఇన్‌స్టాల్ చేసి, పునరుద్ధరించడం. మీకు తగినంత సమయం ఉంటే ఈ విధానం ఆమోదయోగ్యమైనది, కానీ పెద్ద డేటాబేస్‌లను మైగ్రేట్ చేస్తున్నప్పుడు, లేదా ఒకేసారి డజన్ల కొద్దీ డేటాబేస్‌లను మైగ్రేట్ చేస్తున్నప్పుడు, మరియు సమయం చాలా ముఖ్యమైనది అయినప్పుడు, మీరు స్ట్రీమింగ్ కన్వర్షన్‌ను ఉపయోగించవచ్చు, ఇది 30-40% వేగవంతమైనది. దీన్ని సరిగ్గా ఎలా చేయాలో (క్రింద) Windows మరియు కింద Linux), కట్ కింద చదవండి.

సాధారణ ఆలోచన ఏమిటంటే, మేము పనులను వేగవంతం చేయడానికి పైప్‌లైన్‌ను ఉపయోగిస్తాము:

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

2.5 నుండి Gbak ఒక సరళ ఆకృతిలో బ్యాకప్‌ను ఉత్పత్తి చేస్తుంది మరియు దానిని stdoutకి పంపుతుంది, ఇది వెంటనే 3.0 నుండి stdin ద్వారా gbakని ఎంచుకొని కొత్త డేటాబేస్‌ను సృష్టిస్తుంది.

అటువంటి పైప్‌లైన్‌ను స్థానిక (ఫైల్) యాక్సెస్ పద్ధతితో నిర్వహించడం అవసరం, ఎందుకంటే నెట్‌వర్క్ యాక్సెస్ (లోకల్ హోస్ట్ ద్వారా కూడా) ప్రక్రియను గణనీయంగా తగ్గిస్తుంది.

దిగువన మనం వివరాలను పరిశీలిద్దాం Windows и Linux.

Windows

విషయంలో Windows ఫైర్‌బర్డ్ యొక్క పూర్తిగా స్వతంత్ర బిల్డ్‌ను సృష్టించడమే అత్యంత సులభమైన మార్గం. దీన్ని చేయడానికి, తీసుకోండి ఎంబెడ్-ఆర్కైవ్ ఫైర్‌బర్డ్ 2.5, fbemded.dll పేరును fbclient.dllగా మార్చండి, gbak.exe మరియు (ఐచ్ఛికంగా) isql.exe యుటిలిటీలను "రెగ్యులర్" 2.5 ఆర్కైవ్ నుండి జోడించండి.

Firebird 3.0 ఉపయోగాలు ఒకే అసెంబ్లీ మరియు ఎటువంటి సవరణ అవసరం లేదు.

అత్యంత కనిష్ట సంస్కరణ (లక్ష్య సిస్టమ్‌లో VS2008/VS2010 రన్‌టైమ్ లైబ్రరీలను ఇన్‌స్టాల్ చేయాల్సిన అవసరం లేదు) కింది ఫైల్‌లను కలిగి ఉంది:

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

2.5లో intl/fbintl.dll మరియు intl/fbintl.conf ఫైల్‌లు ఉండవని అనుభవజ్ఞుడైన నిర్వాహకుడు గమనించవచ్చు. ఇది నిజం, ఎందుకంటే gbak కనెక్షన్ చార్సెట్‌ను ఉపయోగించదు మరియు చార్‌సెట్‌ల మధ్య డేటాను మార్చదు, కానీ Firebird 3.0 యొక్క "స్వీకరించే" వైపు, సూచికలను సృష్టించేటప్పుడు ఈ ఫైల్‌లు అవసరం.

firebird.confలో Firebird 3.0 జోడించడానికి సిఫార్సు చేయబడింది:

MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

అలాగే, 2.5 మరియు 3.0 కోసం వేర్వేరు IpcName విలువలను సెట్ చేయడం మంచిది.

firebird.conf యొక్క ఇతర పారామితుల విలువలను ఎన్నుకునేటప్పుడు, మేము ఒక సాధారణ పరిశీలన నుండి ముందుకు వెళ్తాము: డేటా ట్రాన్స్‌ఫ్యూజన్ దశలో, gbak ఒక ప్రక్రియలో 2.5 మరియు మరొక ప్రక్రియలో 3.0, ఆపై 2.5 నిష్క్రమణలు మరియు 3.0 నిర్మాణాన్ని ప్రారంభిస్తుంది సూచికలు.

3.0లో ఇండెక్స్ బిల్డింగ్ దశను వేగవంతం చేయడానికి, TempCacheLimit పరామితి యొక్క పరిమాణాన్ని ~40% RAMకి పెంచాలని సిఫార్సు చేయబడింది (అది ఒక ప్రత్యేక సర్వర్ అయితే).

ఉదాహరణకు, సర్వర్‌లో 16 GB RAM ఉంటే, మీరు ఉంచవచ్చు

TempCacheLimit=6G

వాస్తవానికి, ఈ విలువ 64-బిట్ ఫైర్‌బర్డ్ 3 కోసం మాత్రమే సెట్ చేయబడుతుంది, ఎందుకంటే ఏదైనా 32-బిట్ ప్రక్రియ 2 గిగాబైట్‌ల కంటే ఎక్కువ మెమరీని కేటాయించదు.

2.5లో, ఈ పరామితిని మార్చవలసిన అవసరం లేదు - ఇది ఏమైనప్పటికీ 2 గిగాబైట్ల కంటే ఎక్కువ ఉండకూడదు మరియు బ్యాకప్ సమయంలో వేగాన్ని ప్రభావితం చేయదు.

ఆపరేషన్ చేయడానికి ముందు, మీరు డేటాబేస్ హెడర్‌లోని పేజీ కాష్ 0 (కమాండ్)కి సెట్ చేయబడిందో లేదో తనిఖీ చేయాలి gstat -h databasename, పేజీ బఫర్స్ లైన్ చూడండి).

డేటాబేస్ హెడర్‌లో కాష్ స్పష్టంగా సెట్ చేయబడితే, అది firebird.conf (మరియు databases.conf 3.0లో) నుండి విలువలను భర్తీ చేస్తుంది మరియు సరిపోని పెద్ద విలువల విషయంలో, అది అధిక మెమరీ వినియోగం మరియు మార్పిడికి దారి తీస్తుంది.

తరువాత, ఫైళ్లను లక్ష్య వ్యవస్థకు కాపీ చేయండి.

స్థానిక నిర్వాహకుడికి (ఉదాహరణకు) ఎలివేటెడ్ హక్కులతో కమాండ్ లైన్‌లో "సిస్టమ్" ఫైర్‌బర్డ్ 2.5 సేవను నిలిపివేసిన తర్వాత మార్పిడి జరుగుతుంది:

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

ఈ ఉదాహరణ కోట్స్‌లో "ఫార్వర్డ్ స్లాష్"ని ఉపయోగిస్తుంది (చెల్లుబాటు అయ్యే "యునిక్స్-స్టైల్"), మరియు "టోపీ" ("^" అక్షరం) కొత్త లైన్ అక్షరం నుండి తప్పించుకుంటుంది, ఇది పొడవైన ఆదేశాలను టైప్ చేసేటప్పుడు ఉపయోగపడుతుంది. -st(atus) ఎంపిక Firebird 2.5.8లో కనిపించింది మరియు gbak ప్రాసెస్ నడుస్తున్న సమయం గురించి డేటాను లాగ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది (వివరాల కోసం, డాక్యుమెంటేషన్ చూడండి).

Linux

ఆఫ్ Linux ఫైర్‌బర్డ్ 3 టోమాత్ లైబ్రరీపై ఆధారపడి ఉంటుంది. CentOS (RHEL) ఈ లైబ్రరీ epel రిపోజిటరీలో ఉంది, Ubuntu (Debian) లో – వ్యవస్థాగత.

కోసం CentOS మీరు ముందుగా epel రిపోజిటరీకి కనెక్ట్ అవ్వాలి, ఆ తర్వాతే దీన్ని చేయాలి.

yum install libtommath

Ubuntu అదనపు రిపోజిటరీలను కనెక్ట్ చేయవలసిన అవసరం లేదు, కానీ Ubuntu 16 మరియు లో Ubuntu ప్యాకేజీల యొక్క 18 విభిన్న వెర్షన్లు ఇన్‌స్టాల్ చేయబడ్డాయి – అవి వరుసగా libtommath0 మరియు libtommath1.

Firebird 3.0 tommath.so.0 మరియు కోసం వెతుకుతుంది Ubuntu 18 అదనంగా, మీరు tommath.so.0 నుండి tommath.so.1 కు ఒక సిమ్లింక్‌ను సృష్టించాలి. దీన్ని చేయడానికి, మీరు మొదట tommath.so.1 ను కనుగొనాలి.

కోరుకున్న మార్గం Ubuntu - /usr/lib/x86_64-linux-gnu/కానీ ఇతరులలో Debian-ఆధారిత పంపిణీలు భిన్నంగా ఉండవచ్చు.

రెండవ సమస్య ఫైర్‌బర్డ్ 3.0.1 వరకు మరియు రెండు వేర్వేరు సర్వర్ వెర్షన్‌లను ఇన్‌స్టాల్ చేయడానికి సులభమైన మార్గం లేదు అనే దానికి సంబంధించినది. దాని సాపేక్ష సంక్లిష్టత కారణంగా "మూలం నుండి అవసరమైన ఉపసర్గతో కంపైల్ చేయి" ఎంపికను మేము పరిగణించము.

Firebird 3.0.2 మరియు అంతకంటే ఎక్కువ అమలు చేయబడింది --enable-binreloc తో నిర్మించండి మరియు ప్రత్యేక ఇన్‌స్టాలర్ ఎంపిక (-path path).

tommath లైబ్రరీ మరియు అవసరమైతే, tommath.so.0 కోసం ఒక సిమ్‌లింక్ సిస్టమ్‌కు జోడించబడిందని ఊహిస్తూ, మీరు ప్రస్తుత (ఈ రచన సమయంలో) Firebird 3.0.4 పంపిణీని ఇన్‌స్టాల్ చేయవచ్చు, ఉదాహరణకు, /opt /fb3:

./install.sh -path /opt/fb3

ఆ తర్వాత, మీరు Firebird సిస్టమ్ సేవను ఆపివేయవచ్చు మరియు స్ట్రీమింగ్ మార్పిడిని ప్రారంభించవచ్చు.

Firebirdని ఆపేటప్పుడు, క్లాసిక్ మోడ్‌లోని Firebid 2.5 ప్రక్రియలు సాధారణంగా xinetd ద్వారా ప్రారంభించబడతాయని గుర్తుంచుకోండి - కాబట్టి మీరు xinetd కోసం firebird సేవను నిలిపివేయాలి లేదా xinetdని పూర్తిగా నిలిపివేయాలి.

3.0 కోసం firebird.conf లో Linux MaxUnflushed పారామితులను సెట్ చేయవలసిన అవసరం లేదు (అవి దీనిపై మాత్రమే పని చేస్తాయి) Windowsమరియు ఫైర్‌బర్డ్ 2.5 సెట్టింగ్‌లను మార్చండి.

లినక్స్‌లో, ఫైర్‌బర్డ్ 2.5 యొక్క స్థానిక (ఫైల్) యాక్సెస్, ఎంబెడెడ్ వెర్షన్‌కు సమానం కాదు. Windows – సర్వర్ 2.5 gbak ప్రాసెస్‌లో (నెట్‌వర్క్ భాగం లేకుండా) నడుస్తుంది, కానీ యాక్సెస్ హక్కులు యూజర్ డేటాబేస్‌తో సరిపోల్చి తనిఖీ చేయబడతాయి, అంటే లాగిన్ మాత్రమే కాకుండా పాస్‌వర్డ్ కూడా అవసరం అవుతుంది:

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

విజయవంతమైన మార్పిడి తర్వాత, మీరు ముందుగా "అదనపు" Firebird 3.0, ఆపై "ప్రధాన" Firebird 2.5ను అన్‌ఇన్‌స్టాల్ చేయాలి మరియు ఆ తర్వాత Firebird 2.5 యొక్క క్లీన్ ఇన్‌స్టాలేషన్‌ను చేయాలి - మరియు ఇది సాధారణ tar.gz ఇన్‌స్టాలర్ నుండి ఉత్తమం, మరియు దీని ద్వారా కాదు. రిపోజిటరీలు, ఎందుకంటే. రిపోజిటరీలలోని సంస్కరణ వెనుకబడి ఉండవచ్చు.

అలాగే, BD పునరుద్ధరణ తర్వాత Linux మరియు కొత్త డేటాబేస్ ఫైర్‌బర్డ్ యూజర్ యాజమాన్యంలో ఉందని నిర్ధారించుకోవడానికి పునఃస్థాపనను తనిఖీ చేయాలి.

ఇది కాకపోతే, అది సరిదిద్దవలసి ఉంటుంది.

chown firebird.firebird database

ఫలితం

సమయం మరియు డిస్క్ స్థలాన్ని ఆదా చేయడంతో పాటు, స్ట్రీమింగ్ మార్పిడికి మరొక ముఖ్యమైన ప్రయోజనం ఉంది - డేటాబేస్ మార్పిడి ఇప్పటికే ఉన్న Firebird 2.5ని తొలగించకుండా చేయబడుతుంది, ఇది విజయవంతం కాని మార్పిడి విషయంలో రోల్‌బ్యాక్‌ను చాలా సులభతరం చేస్తుంది (చాలా తరచుగా స్థలం లేకపోవడం లేదా వలస సమయంలో ఊహించని రీబూట్ కారణంగా. ప్రక్రియ).

"క్లాసిక్" మార్పిడి "బ్యాకప్ సమయం" మరియు "సమయాన్ని పునరుద్ధరించడం" అనే వాస్తవం కారణంగా సమయం ఆదా అవుతుంది. రికవరీ రెండు భాగాలను కలిగి ఉంటుంది: బ్యాకప్ ఫైల్ నుండి డేటాను చదవడం మరియు సూచికను రూపొందించడం.

స్ట్రీమింగ్ మార్పిడితో, మొత్తం సమయం "బ్యాకప్ సమయం ప్లస్ ఐదు నుండి పది శాతం" మరియు "ఇండెక్స్ బిల్డింగ్ సమయం"గా పొందబడుతుంది.

నిర్దిష్ట ఫలితాలు డేటాబేస్ యొక్క నిర్మాణంపై ఆధారపడి ఉంటాయి, అయితే సగటున, రికవరీ సమయం బ్యాకప్ సమయం కంటే దాదాపు రెండు రెట్లు ఉంటుంది. కాబట్టి, మేము బ్యాకప్ సమయాన్ని యూనిట్‌గా తీసుకుంటే, “క్లాసిక్ కన్వర్షన్” అనేది మూడు యూనిట్ల సమయం, స్ట్రీమింగ్ అనేది రెండు యూనిట్ల సమయం. TempCacheLimitని పెంచడం సమయాన్ని మరింత తగ్గించడానికి సహాయపడుతుంది.

సాధారణంగా, ఆచరణలో స్ట్రీమింగ్ మార్పిడి మీరు ప్రత్యామ్నాయ బ్యాకప్ మరియు పునరుద్ధరణలో 30-40% సమయాన్ని ఆదా చేయడానికి అనుమతిస్తుంది.

ప్రశ్నలు?

దయచేసి వ్యాఖ్యలలో అన్ని ప్రశ్నలను వ్రాయండి లేదా వాటిని మెథడాలజీ రచయిత మరియు ఈ వ్యాసం యొక్క సహ రచయితకు పంపండి - Vasily Sidorov, iBase Leading System Engineer, bs at ibase ru.

నమోదు చేసుకున్న వినియోగదారులు మాత్రమే సర్వేలో పాల్గొనగలరు. సైన్ ఇన్ చేయండిదయచేసి.

మీరు Firebird యొక్క ఏ వెర్షన్ ఉపయోగిస్తున్నారు?

  • ఫైర్‌బర్డ్ 3.x

  • ఫైర్‌బర్డ్ 2.5

  • ఫైర్‌బర్డ్ 2.1

  • ఫైర్‌బర్డ్ 2.0, 1.5 లేదా 1.0

16 మంది వినియోగదారులు ఓటు వేశారు. 1 వినియోగదారు దూరంగా ఉన్నారు.

మూలం: www.habr.com

DDoS రక్షణ, VPS VDS సర్వర్‌లతో సైట్‌ల కోసం నమ్మకమైన హోస్టింగ్‌ను కొనుగోలు చేయండి 🔥 DDoS రక్షణతో కూడిన నమ్మకమైన వెబ్‌సైట్ హోస్టింగ్, VPS VDS సర్వర్‌లను కొనండి | ProHoster