Iyipada ṣiṣanwọle ti awọn data data Firebird 2.5 si ọna kika ODS12 (Firebird 3.0)

Ẹya kọọkan ti Firebird ni ẹya tirẹ ti ọna kika disiki data data, O (n) D (isk) S (igbekalẹ). Titi di ẹya 2.5 inklusive, ẹrọ Firebird le ṣiṣẹ pẹlu ODS ti awọn ẹya ti tẹlẹ, iyẹn ni, awọn apoti isura infomesonu lati awọn ẹya atijọ ti ṣii nipasẹ ẹya tuntun ati ṣiṣẹ ni ipo ibamu, ṣugbọn ẹrọ Firebird 3.0 nikan ṣiṣẹ pẹlu awọn apoti isura infomesonu ni ẹya ODS tirẹ tirẹ. 12.0.

Lati jade lọ si 3.0, ibi ipamọ data lati 2.5 gbọdọ wa ni iyipada si ọna kika titun nipasẹ afẹyinti / mu pada. Nitoribẹẹ, a ro pe data ti pese tẹlẹ fun iyipada - i.e. metadata ati awọn ibeere ti ṣayẹwo fun ibamu pẹlu Firebird 3.0.

Если следовать стандартному подходу, это означает, что нужно произвести бэкап на версии 2.5, затем установить 3.0 и сделать рестор. Такая процедура приемлема, если есть достаточно времени, но при миграции больших баз данных, или при одновременной миграции нескольких десятков БД, когда время поджимает, можно воспользоваться поточной конвертацией, которая на 30-40% быстрее. Как именно это сделать (под Windows ati labẹ Linux), читайте под катом.

Ero gbogbogbo ni pe a yoo lo opo gigun ti epo lati yara awọn nkan:

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

Gbak lati 2.5 ṣe ipilẹṣẹ afẹyinti ni ọna kika laini ati firanṣẹ si stdout, eyiti o mu gbak lẹsẹkẹsẹ lati 3.0 nipasẹ stdin ati ṣẹda data tuntun kan.

O jẹ dandan lati ṣeto iru opo gigun ti epo pẹlu ọna iwọle agbegbe (faili), nitori iraye si nẹtiwọọki (paapaa nipasẹ localhost) yoo fa fifalẹ ilana naa ni pataki.

Ниже мы рассматриваем детали для Windows и Linux.

Windows

Ni irú ti Windows проще всего сделать полностью автономную сборку Firebird. Для этого берём ifibọ-pamosi Firebird 2.5, tun lorukọ fbemded.dll si fbclient.dll, ṣafikun gbak.exe ati (iyan) awọn ohun elo isql.exe lati “deede” 2.5 pamosi.

Firebird 3.0 ipawo nikan ijọ ati pe ko beere eyikeyi iyipada.

Ẹya ti o kere julọ (eyiti ko nilo fifi sori ẹrọ ti awọn ile-ikawe asiko asiko VS2008/VS2010 lori eto ibi-afẹde) ni awọn faili wọnyi ninu:

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

Alakoso ti o ni iriri le ṣe akiyesi pe 2.5 ko pẹlu intl/fbintl.dll ati intl/fbintl.conf awọn faili. Eyi jẹ otitọ, nitori gbak ko lo charset asopọ ati pe ko ṣe iyipada data laarin awọn charsets, ṣugbọn ni ẹgbẹ “gbigba” ti Firebird 3.0, awọn faili wọnyi jẹ pataki nigbati o ṣẹda awọn atọka.

Ni firebird.conf Firebird 3.0 ni iṣeduro lati ṣafikun:

MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

Paapaa, o jẹ iwunilori lati ṣeto awọn iye IpcName oriṣiriṣi fun 2.5 ati 3.0.

Nigbati o ba yan awọn iye ti awọn paramita miiran ti firebird.conf, a tẹsiwaju lati inu ero ti o rọrun: ni ipele gbigbe data, gbak nṣiṣẹ 2.5 ninu ilana kan, ati 3.0 ni ekeji, lẹhinna 2.5 jade, ati 3.0 bẹrẹ kikọ. awọn atọka.

Lati mu ipele ipele ile atọka ni iyara ni 3.0, a ṣe iṣeduro lati mu iwọn iwọn paramita TempCacheLimit pọ si ~ 40% Ramu (ti o ba jẹ olupin igbẹhin, dajudaju).

Fun apẹẹrẹ, ti olupin ba ni 16 GB ti Ramu, lẹhinna o le fi sii

TempCacheLimit=6G

Nitoribẹẹ, iye yii le ṣeto nikan fun 64-bit Firebird 3, nitori eyikeyi ilana 32-bit ko le pin diẹ sii ju 2 gigabytes ti iranti.

Ni 2.5, paramita yii ko nilo lati yipada - ko le jẹ diẹ sii ju 2 gigabytes lọnakọna, ati pe ko ni ipa iyara lakoko afẹyinti.

Ṣaaju ṣiṣe iṣẹ naa, o nilo lati ṣayẹwo pe kaṣe oju-iwe ninu akọsori data ti ṣeto si 0 (aṣẹ) gstat -h databasename, wo laini awọn buffers Page).

Ti a ba ṣeto kaṣe naa ni gbangba ninu akọsori data, lẹhinna o bori awọn iye lati firebird.conf (ati databases.conf ni 3.0), ati ni ọran ti awọn iye ti ko peye, o le ja si agbara iranti ti o pọ julọ ati yiyipada.

Nigbamii, daakọ awọn faili si eto ibi-afẹde.

Iyipada naa ni a ṣe lẹhin didaduro iṣẹ “eto” Firebird 2.5, lori laini aṣẹ pẹlu awọn ẹtọ giga si alabojuto agbegbe (apẹẹrẹ):

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

Apẹẹrẹ yii nlo “slash siwaju” ninu awọn agbasọ (wulo “ara “unix-style”), ati “ijanilaya” (“^” ihuwasi) yọ kuro ninu ohun kikọ tuntun, eyiti o wulo nigbati o ba tẹ awọn aṣẹ gigun. Aṣayan -st (atus) han ni Firebird 2.5.8 ati gba ọ laaye lati wọle data nipa akoko ti ilana gbak nṣiṣẹ (fun awọn alaye, wo iwe).

Linux

Ni Linux Firebird 3 зависит от библиотеки tommath. В CentOS (RHEL) эта библиотека находится в epel-репозитории, в Ubuntu (Debian) в – системном.

fun CentOS требуется сначала подключить epel-репозиторий и только потом делать

yum install libtommath

Ubuntu не нужно подключать дополнительные репозитории, но в Ubuntu 16 àti nínú Ubuntu 18 устанавливаются разные версии пакетов – libtommath0 и libtommath1, соответственно.

Firebird 3.0 ищет tommath.so.0 и для Ubuntu 18 дополнительно требуется создать ссылку (symlink) c tommath.so.0 на tommath.so.1. Для этого сначала надо найти tommath.so.1.

Искомый путь в Ubuntu - /usr/lib/x86_64-linux-gnu/, но в других Debian-based дистрибутивах может быть иначе.

Iṣoro keji jẹ ibatan si otitọ pe titi de ati pẹlu Firebird 3.0.1, ko si ọna ti o rọrun lati fi awọn ẹya olupin oriṣiriṣi meji sori ẹrọ. A ko gbero aṣayan “akojọ lati orisun pẹlu asọtẹlẹ ti o nilo” nitori idiju ibatan rẹ.

Fun Firebird 3.0.2 ati ti o ga muse kọ pẹlu --enable-binreloc ati ki o kan lọtọ insitola aṣayan (-ona ona).

Ti a ro pe ile-ikawe tommath ati, ti o ba jẹ dandan, aami kan fun tommath.so.0 ti ṣafikun si eto naa, o le fi lọwọlọwọ (ni akoko kikọ yii) Firebird 3.0.4 pinpin ni, fun apẹẹrẹ, /opt. /fb3:

./install.sh -path /opt/fb3

Lẹhin iyẹn, o le da iṣẹ eto Firebird duro ki o bẹrẹ iyipada ṣiṣanwọle.

Nigbati o ba da Firebird duro, ranti pe awọn ilana Firebid 2.5 ni ipo Alailẹgbẹ nigbagbogbo bẹrẹ nipasẹ xinetd - nitorinaa o nilo lati pa iṣẹ firebird kuro fun xinetd tabi da xinetd duro patapata.

В firebird.conf для 3.0 на Linux не нужно задавать MaxUnflushed-параметры (они работают только на Windows) и менять настройки Firebird 2.5.

В линуксе локальный (файловый) доступ Firebird 2.5 не эквивалентен embeded-варианту под 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

Lẹhin iyipada aṣeyọri, o gbọdọ kọkọ yọ “afikun” Firebird 3.0 kuro, lẹhinna “akọkọ” Firebird 2.5, ati lẹhin iyẹn ṣe fifi sori ẹrọ mimọ ti Firebird 2.5 - ati pe o dara julọ lati insitola tar.gz deede, kii ṣe nipasẹ awọn ibi ipamọ, nitori. awọn ti ikede ninu awọn ibi ipamọ le aisun sile.

Также, после рестора БД на Linux и переустановки надо проверить, чтобы новая БД имела владельцем пользователя firebird.

Ti eyi ko ba jẹ ọran, lẹhinna o yoo nilo lati ṣe atunṣe.

chown firebird.firebird database

Abajade

Ni afikun si fifipamọ akoko ati aaye disiki, iyipada ṣiṣanwọle ni anfani pataki miiran - iyipada data jẹ ṣe laisi piparẹ Firebird 2.5 ti o wa tẹlẹ, eyiti o jẹ irọrun simplback pupọ ni ọran ti iyipada ti ko ni aṣeyọri (julọ nigbagbogbo nitori aini aaye tabi atunbere airotẹlẹ lakoko ijira ilana).

Nfi akoko pamọ jẹ nitori otitọ pe iyipada "Ayebaye" jẹ "akoko afẹyinti" pẹlu "akoko imupadabọ". Imularada ni awọn ẹya meji: kika data lati faili afẹyinti ati kikọ atọka kan.

Pẹlu iyipada ṣiṣanwọle, akoko lapapọ ni a gba bi “akoko afẹyinti pẹlu marun si mẹwa mẹwa” ati “akoko kikọ atọka”.

Awọn abajade pato da lori eto data data, ṣugbọn ni apapọ, akoko imularada jẹ isunmọ lẹmeji akoko afẹyinti. Nitorinaa, ti a ba gba akoko afẹyinti bi ẹyọkan, lẹhinna “iyipada Ayebaye” jẹ awọn iwọn mẹta ti akoko, ṣiṣanwọle jẹ awọn iwọn meji ti akoko. Alekun TempCacheLimit ṣe iranlọwọ lati dinku akoko siwaju sii.

Ni gbogbogbo, iyipada ṣiṣanwọle ni iṣe n gba ọ laaye lati fipamọ 30-40% ti akoko ti afẹyinti miiran ati mimu-pada sipo.

Awọn ibeere?

Jọwọ kọ gbogbo awọn ibeere ninu awọn asọye, tabi fi wọn ranṣẹ si onkọwe ti ilana ati akọwe-iwe ti nkan yii - Vasily Sidorov, IBase Leading System Engineer, ni bs at ibase ru.

Awọn olumulo ti o forukọsilẹ nikan le kopa ninu iwadi naa. wọle, Jowo.

Ẹya ti Firebird wo ni o nlo?

  • Firebird 3.x

  • Firebird 2.5

  • Firebird 2.1

  • Firebird 2.0, 1.5 tabi 1.0

16 olumulo dibo. 1 olumulo abstained.

orisun: www.habr.com

Ra alejo gbigba igbẹkẹle fun awọn aaye pẹlu aabo DDoS, awọn olupin VPS VDS 🔥 Ra gbigbalejo oju opo wẹẹbu ti o gbẹkẹle pẹlu aabo DDoS, awọn olupin VPS VDS | ProHoster