Firebird 2.5 verilənlər bazalarının ODS12 formatına axın çevrilməsi (Firebird 3.0)

Firebird-in hər bir versiyasında verilənlər bazası disk strukturu formatının O(n)D(isk)S(struktur) öz versiyası var. 2.5 daxil olmaqla, Firebird mühərriki əvvəlki versiyaların ODS ilə işləyə bilərdi, yəni köhnə versiyalardan verilənlər bazaları yeni versiya tərəfindən açıldı və uyğunluq rejimində işləyirdi, lakin Firebird 3.0 mühərriki yalnız öz ODS versiyasında verilənlər bazası ilə işləyir. 12.0.

3.0-a keçmək üçün 2.5-dən verilənlər bazası ehtiyat nüsxə/bərpa yolu ilə yeni formata çevrilməlidir. Əlbəttə ki, verilənlər bazasının əvvəllər konvertasiya üçün hazırlandığını güman edirik - yəni. metadata və sorğuların Firebird 3.0 ilə uyğunluğu yoxlanılıb.

Standart yanaşmaya əməl etsəniz, bu o deməkdir ki, siz 2.5 versiyasında ehtiyat nüsxə çıxarmalı, sonra 3.0-ı quraşdırıb bərpa etməlisiniz. Kifayət qədər vaxt olduqda belə prosedur məqbuldur, lakin böyük verilənlər bazalarını köçürərkən və ya eyni vaxtda bir neçə onlarla verilənlər bazasını köçürərkən, vaxt bitdikdə, 30-40% daha sürətli olan axın çevrilməsindən istifadə edə bilərsiniz. Bunu necə dəqiq etmək olar (Windows və Linux altında), kəsik altında oxuyun.

Ümumi fikir budur ki, işləri sürətləndirmək üçün boru kəmərindən istifadə edəcəyik:

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

2.5-dən Gbak xətti formatda ehtiyat nüsxəsini yaradır və onu stdout-a göndərir, o, dərhal stdin vasitəsilə 3.0-dan gbak-ı götürür və yeni verilənlər bazası yaradır.

Belə bir boru kəmərini yerli (fayl) giriş metodu ilə təşkil etmək lazımdır, çünki şəbəkəyə giriş (hətta localhost vasitəsilə) prosesi əhəmiyyətli dərəcədə yavaşlatacaq.

Aşağıda Windows və Linux üçün təfərrüatları nəzərdən keçirəcəyik.

Windows

Windows vəziyyətində, ən asan yol Firebird-in tamamilə müstəqil qurulmasıdır. Bunun üçün alırıq yerləşdirmə arxivi Firebird 2.5, fbemded.dll-nin adını fbclient.dll olaraq dəyişdirin, “adi” 2.5 arxivindən gbak.exe və (istəyə görə) isql.exe utilitlərini əlavə edin.

Firebird 3.0 istifadə edir tək məclis və heç bir dəyişiklik tələb etmir.

Ən minimal versiya (hədəf sistemdə VS2008/VS2010 iş vaxtı kitabxanalarının quraşdırılmasını tələb etməyən) aşağıdakı faylları ehtiva edir:

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

Təcrübəli idarəçi qeyd edə bilər ki, 2.5 intl/fbintl.dll və intl/fbintl.conf fayllarını ehtiva etmir. Bu doğrudur, çünki gbak əlaqə charsetindən istifadə etmir və məlumatları simvollar arasında çevirmir, lakin Firebird 3.0-ın "qəbuledici" tərəfində bu fayllar indekslər yaratarkən zəruridir.

Firebird.conf-da Firebird 3.0 əlavə etmək tövsiyə olunur:

MaxUnflushedWrites = -1
MaxUnflushedWriteTime = -1

Həmçinin, 2.5 və 3.0 üçün müxtəlif IpcName dəyərlərinin təyin edilməsi arzu edilir.

Firebird.conf-un digər parametrlərinin dəyərlərini seçərkən sadə bir mülahizədən çıxış edirik: məlumatların ötürülməsi mərhələsində gbak bir prosesdə 2.5, digərində 3.0 işləyir, sonra 2.5 çıxış edir və 3.0 qurmağa başlayır. indekslər.

3.0-da indeksin qurulması mərhələsini sürətləndirmək üçün TempCacheLimit parametrinin ölçüsünü ~40% RAM-ə qədər artırmaq tövsiyə olunur (əlbəttə ki, bu, xüsusi serverdirsə).

Məsələn, serverdə 16 GB RAM varsa, o zaman qoya bilərsiniz

TempCacheLimit=6G

Əlbəttə ki, bu dəyər yalnız 64 bit Firebird 3 üçün təyin edilə bilər, çünki hər hansı 32 bitlik proses 2 giqabaytdan çox yaddaş ayıra bilməz.

2.5-də bu parametrin dəyişdirilməsinə ehtiyac yoxdur - hər halda 2 gigabaytdan çox ola bilməz və ehtiyat nüsxəsi zamanı sürətə təsir göstərmir.

Əməliyyatı yerinə yetirməzdən əvvəl verilənlər bazası başlığında səhifə önbelleğinin 0 (komanda) təyin olunduğunu yoxlamaq lazımdır. gstat -h databasename, Səhifə buferləri xəttinə baxın).

Keş açıq şəkildə verilənlər bazası başlığında quraşdırılıbsa, o zaman firebird.conf-dan (və 3.0-da verilənlər bazası.conf) dəyərləri ləğv edir və qeyri-adekvat böyük dəyərlər olduqda, həddindən artıq yaddaş istehlakına və dəyişdirməyə səbəb ola bilər.

Sonra, faylları hədəf sistemə kopyalayın.

Dönüşüm, "sistem" Firebird 2.5 xidmətini dayandırdıqdan sonra, yerli idarəçiyə yüksək hüquqları olan əmr satırında həyata keçirilir (nümunə):

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

Bu misalda dırnaqlarda "irəli slash" istifadə olunur (etibarlı "unix-style") və "şapka" ("^" simvolu) uzun əmrləri yazarkən faydalı olan yeni sətir simvolundan qaçır. -st(atus) seçimi Firebird 2.5.8-də ortaya çıxdı və gbak prosesinin işlədiyi vaxt haqqında məlumatları daxil etməyə imkan verir (ətraflı məlumat üçün sənədlərə baxın).

Linux

Linux-da Firebird 3 tommath kitabxanasından asılıdır. CentOS-da (RHEL) bu kitabxana epel deposunda, Ubuntu-da (Debian) sistem deposunda yerləşir.

CentOS üçün əvvəlcə epel repozitoriyasını birləşdirməlisiniz və yalnız bundan sonra edin

yum install libtommath

Ubuntu əlavə repozitoriyaları daxil etməyə ehtiyac duymur, lakin Ubuntu 16 və Ubuntu 18 paketlərin müxtəlif versiyalarını quraşdırır - müvafiq olaraq libtommath0 və libtommath1.

Firebird 3.0 tommath.so.0 axtarır və Ubuntu 18 üçün əlavə olaraq tommath.so.0-dan tommath.so.1-ə keçid (simvol) yaratmaq tələb olunur. Bunun üçün əvvəlcə tommath.so.1-i tapmaq lazımdır.

Ubuntu-da axtarılan yol - /usr/lib/x86_64-linux-gnu/, lakin digər Debian əsaslı paylamalar fərqli ola bilər.

İkinci problem, Firebird 3.0.1-ə qədər iki fərqli server versiyasını quraşdırmanın asan bir yolunun olmaması ilə əlaqədardır. Nisbi mürəkkəbliyinə görə “mənbədən tələb olunan prefikslə tərtib et” variantını nəzərə almırıq.

Firebird 3.0.2 və daha yüksək versiyalar üçün həyata keçirilir --enable-binreloc ilə qurun və ayrıca quraşdırıcı seçimi (-yol yolu).

Sistemə tommath kitabxanasının və lazım gələrsə, tommath.so.0 üçün simvolik keçidin əlavə olunduğunu fərz etsək, cari (bu yazı zamanı) Firebird 3.0.4 paylanmasını, məsələn, /opt-da quraşdıra bilərsiniz. /fb3:

./install.sh -path /opt/fb3

Bundan sonra siz Firebird sistem xidmətini dayandıra və axın konvertasiyasına başlaya bilərsiniz.

Firebird-i dayandırarkən nəzərə alın ki, Klassik rejimdə Firebid 2.5 prosesləri adətən xinetd tərəfindən işə salınır - buna görə də ya xinetd üçün firebird xidmətini söndürməli, ya da xinetd-i tamamilə dayandırmalısınız.

Linux-da 3.0 üçün firebird.conf-da MaxUnflushed parametrlərini təyin etmək (onlar yalnız Windows-da işləyir) və Firebird 2.5 parametrlərini dəyişmək lazım deyil.

Linux-da Firebird 2.5 yerli (fayl) girişi Windows altında quraşdırılmış versiyaya ekvivalent deyil - 2.5 server gbak prosesində (şəbəkə hissəsi olmadan) işləyəcək, lakin giriş hüquqları istifadəçi bazasına qarşı yoxlanılacaq, bu o deməkdir ki, yalnız giriş deyil, həm də parol tələb olunacaq:

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

Uğurlu konvertasiyadan sonra əvvəlcə "əlavə" Firebird 3.0-ı, sonra "əsas" Firebird 2.5-i silməlisiniz və bundan sonra Firebird 2.5-in təmiz quraşdırılmasını yerinə yetirməlisiniz - və bu, adi tar.gz quraşdırıcısından daha yaxşıdır, nəinki depolar, çünki. depolardakı versiya geridə qala bilər.

Həmçinin Linux-da verilənlər bazasını bərpa etdikdən və yenidən quraşdırdıqdan sonra yeni verilənlər bazasının firebird istifadəçisinə məxsus olduğunu yoxlamaq lazımdır.

Əgər belə deyilsə, onda onu düzəltmək lazımdır.

chown firebird.firebird database

Ümumi

Vaxta və disk sahəsinə qənaət etməklə yanaşı, axın konvertasiyasının daha bir mühüm üstünlüyü var - verilənlər bazası çevrilməsi mövcud Firebird 2.5-i silmədən həyata keçirilir ki, bu da uğursuz konvertasiya zamanı geriyə qayıtmağı xeyli asanlaşdırır (əksər hallarda yer çatışmazlığı və ya miqrasiya zamanı gözlənilməz yenidən yükləmə səbəbindən). proses).

Vaxta qənaət "klassik" çevrilmənin "ehtiyat vaxtı" üstəgəl "bərpa vaxtı" olması ilə bağlıdır. Bərpa iki hissədən ibarətdir: ehtiyat fayldan məlumatların oxunması və indeksin yaradılması.

Axın dönüşümü ilə ümumi vaxt "ehtiyat vaxtı üstəgəl beş-on faiz" və "indeks yaratma vaxtı" kimi əldə edilir.

Xüsusi nəticələr verilənlər bazasının strukturundan asılıdır, lakin orta hesabla bərpa müddəti ehtiyat nüsxə müddətindən təxminən iki dəfədir. Buna görə də, ehtiyat vaxtını vahid kimi götürsək, "klassik çevrilmə" üç vaxt vahididir, axın iki vaxt vahididir. TempCacheLimit-in artırılması vaxtı daha da azaltmağa kömək edir.

Ümumiyyətlə, praktikada axın konvertasiyası alternativ ehtiyat nüsxə və bərpa vaxtının 30-40%-nə qənaət etməyə imkan verir.

Suallar?

Bütün suallarınızı şərhlərdə yazın və ya metodologiyanın müəllifi və bu məqalənin həmmüəllifi - Vasili Sidorova, iBase-in aparıcı sistem mühəndisi, ibase ru-da bs ünvanına göndərin.

Sorğuda yalnız qeydiyyatdan keçmiş istifadəçilər iştirak edə bilər. Daxil olunxahiş edirəm.

Firebird-in hansı versiyasından istifadə edirsiniz?

  • Firebird 3.x

  • Firebird 2.5

  • Firebird 2.1

  • Firebird 2.0, 1.5 və ya 1.0

16 istifadəçi səs verib. 1 istifadəçi bitərəf qaldı.

Mənbə: www.habr.com

Добавить комментарий