ΠŸΠΎΡ‚ΠΎΡ‡Π½Π°Ρ конвСртация Π±Π°Π· Firebird 2.5 Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ODS12 (Firebird 3.0)

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии Firebird Π΅ΡΡ‚ΡŒ собствСнная вСрсия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° дисковых структур Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… – O(n)D(isk)S(tructure). Π”ΠΎ вСрсии 2.5 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π΄Π²ΠΈΠΆΠΎΠΊ Firebird ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ODS ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… вСрсий, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π±Π°Π·Ρ‹ ΠΎΡ‚ старых вСрсий ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π»ΠΈΡΡŒ Π½ΠΎΠ²ΠΎΠΉ вСрсиСй ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ совмСстимости, Π½ΠΎ Π΄Π²ΠΈΠΆΠΎΠΊ Firebird 3.0 Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π‘Π” Π² собствСнной ODS вСрсии 12.0.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° 3.0, Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ 2.5 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π² Π½ΠΎΠ²Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ‡Π΅Ρ€Π΅Π· backup/restore. РазумССтся, ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π‘Π” Π±Ρ‹Π»Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π° для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ β€” Ρ‚.Π΅. ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ запросы Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Ρ‹ Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Firebird 3.0.

Если ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ стандартному ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ произвСсти бэкап Π½Π° вСрсии 2.5, Π·Π°Ρ‚Π΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ 3.0 ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ рСстор. Вакая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠ°, Ссли Π΅ΡΡ‚ΡŒ достаточно Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΏΡ€ΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… дСсятков Π‘Π”, ΠΊΠΎΠ³Π΄Π° врСмя ΠΏΠΎΠ΄ΠΆΠΈΠΌΠ°Π΅Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ, которая Π½Π° 30-40% быстрСС. Как ΠΈΠΌΠ΅Π½Π½ΠΎ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ (ΠΏΠΎΠ΄ Windows ΠΈ ΠΏΠΎΠ΄ Linux), Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ.

ΠžΠ±Ρ‰Π°Ρ идСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для ускорСния ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΎΠΌ:

gbak -b … Π±Π°Π·Π°25 stdout | gbak -c … stdin Π±Π°Π·Π°30

Gbak ΠΎΡ‚ 2.5 Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ бэкап Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈ направляСт Π΅Π³ΠΎ Π² stdout, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· stdin ΠΏΠΎΠ΄Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ gbak ΠΎΡ‚ 3.0 ΠΈ создаСт Π½ΠΎΠ²ΡƒΡŽ Π‘Π”.

ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ (Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌ) ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ доступа, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сСтСвой доступ (Π΄Π°ΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· localhost) сущСствСнно Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ процСсс.

НиТС ΠΌΡ‹ рассматриваСм Π΄Π΅Ρ‚Π°Π»ΠΈ для Windows ΠΈ Linux.

Windows

Π’ случаС Windows ΠΏΡ€ΠΎΡ‰Π΅ всСго ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΡƒΡŽ сборку Firebird. Для этого Π±Π΅Ρ€Ρ‘ΠΌ embed-Π°Ρ€Ρ…ΠΈΠ² Firebird 2.5, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ fbemded.dll Π² fbclient.dll, добавляСм ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π° Β«ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎΒ» 2.5 ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ gbak.exe ΠΈ (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ) – isql.exe.

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

Π’Π°ΠΊΠΆΠ΅, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ IpcName для 2.5 ΠΈ 3.0.

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² firebird.conf исходим ΠΈΠ· простого сообраТСния: Π½Π° этапС ΠΏΠ΅Ρ€Π΅Π»ΠΈΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ процСссС gbak Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ 2.5, Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ – 3.0, Π·Π°Ρ‚Π΅ΠΌ 2.5 Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π° 3.0 Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ построСниС индСксов.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ этап построСния индСксов Π² 3.0, рСкомСндуСтся ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° TempCacheLimit Π΄ΠΎ ~40% RAM (Ссли это Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ сСрвСр, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ).

НапримСр, Ссли Π½Π° сСрвСрС 16 Π“Π± RAM, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ

TempCacheLimit=6G

РазумССтся, Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ 64Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Firebird 3, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ любой 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ процСсс Π½Π΅ смоТСт Π°Π»Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ большС 2Ρ… Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ памяти.

Π£ 2.5 этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ – ΠΎΠ½ ΠΈ Ρ‚Π°ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС 2Ρ… Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚, Π΄Π° ΠΈ ΠΏΡ€ΠΈ бэкапС Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π½Π΅ влияСт.

ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ трСбуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ страничный кэш Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… установлСн Π² 0 (ΠΊΠΎΠΌΠ°Π½Π΄Π° gstat -h databasename, ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ строку Page buffers).

Если кэш Π·Π°Π΄Π°Π½ явно Π² Ρ…ΠΈΠ΄Π΅Ρ€Π΅ Π‘Π”, Ρ‚ΠΎ ΠΎΠ½ пСрСопрСдСляСт значСния ΠΈΠ· firebird.conf (ΠΈ databases.conf Π² 3.0), ΠΈ Π² случаС Π½Π΅Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΈΠ·Π»ΠΈΡˆΠ½Π΅ΠΌΡƒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ памяти ΠΈ ΡƒΡ…ΠΎΠ΄Ρƒ Π² своп.

Π”Π°Π»Π΅Π΅, ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° Ρ†Π΅Π»Π΅Π²ΡƒΡŽ систСму.

ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡ проводится послС остановки «систСмной» слуТбы Firebird 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

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ «прямая косая» Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… (допустимый Β«unix-styleΒ»), Π° «шляпка» (символ Β«^Β») экранируСт символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΈ Π½Π°Π±ΠΎΡ€Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄. ΠžΠΏΡ†ΠΈΡ -st(atus) появилась Π² Firebird 2.5.8 ΠΈ позволяСт Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ процСсса gbak (подробности – Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ).

Linux

На Linux Firebird 3 зависит ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ tommath. Π’ 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 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ссылку (symlink) c tommath.so.0 Π½Π° tommath.so.1. Для этого сначала Π½Π°Π΄ΠΎ Π½Π°ΠΉΡ‚ΠΈ tommath.so.1.

Π˜ΡΠΊΠΎΠΌΡ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π² Ubuntu – /usr/lib/x86_64-linux-gnu/, Π½ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Debian-based дистрибутивах ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Π°Ρ‡Π΅.

Вторая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄ΠΎ Firebird 3.0.1, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π΅ Π±Ρ‹Π»ΠΎ простого способа ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии сСрвСра. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Β«ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ· исходников с Π½ΡƒΠΆΠ½Ρ‹ΠΌ прСфиксом» ΠΌΡ‹ Π½Π΅ рассматриваСм ΠΈΠ·-Π·Π° Π΅Π³ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ трудоСмкости.

Для Firebird 3.0.2 ΠΈ Π²Ρ‹ΡˆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° сборка с –enable-binreloc ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ опция установщика (-path ΠΏΡƒΡ‚ΡŒ).

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° tommath ΠΈ, ΠΏΡ€ΠΈ нСобходимости, симлинк для tommath.so.0 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² систСму, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ (Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ написания этой ΡΡ‚Π°Ρ‚ΡŒΠΈ) дистрибутив Firebird 3.0.4 Π², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, /opt/fb3:

./install.sh -path /opt/fb3

ПослС этого ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ систСмный сСрвис Firebird ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ.

ΠŸΡ€ΠΈ остановкС Firebird Π½Π°Π΄ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ процСссы Firebid 2.5 Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Classic ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ запускаСт xinetd – поэтому трСбуСтся ΠΈΠ»ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ сСрвис firebird для xinetd ΠΈΠ»ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ xinetd ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ.

Π’ 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

ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π½Π°Π΄ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ сначала Β«Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉΒ» Firebird 3.0, Π·Π°Ρ‚Π΅ΠΌ «основной» Firebird 2.5 ΠΈ ΡƒΠΆΠ΅ послС этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‡ΠΈΡΡ‚ΡƒΡŽ установку Firebird 2.5 β€” ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΠ· ΡˆΡ‚Π°Ρ‚Π½ΠΎΠ³ΠΎ установщика tar.gz, Π° Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ρ‚.ΠΊ. вСрсия Π² рСпозиториях ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡ‚Π°Π²Π°Ρ‚ΡŒ.

Π’Π°ΠΊΠΆΠ΅, послС рСстора Π‘Π” Π½Π° Linux ΠΈ пСрСустановки Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ новая Π‘Π” ΠΈΠΌΠ΅Π»Π° Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ firebird.

Если это Π½Π΅ Ρ‚Π°ΠΊ, Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ

chown firebird.firebird database

Π˜Ρ‚ΠΎΠ³

ΠšΡ€ΠΎΠΌΠ΅ экономии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ мСста Π½Π° дискС Ρƒ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ прСимущСство – ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ дСлаСтся Π±Π΅Π· удалСния ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Firebird 2.5, Ρ‡Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΠ°Ρ‚ ΠΏΡ€ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ (Ρ‡Π°Ρ‰Π΅ всСго β€” ΠΈΠ·-Π·Π° нСдостатка мСста ΠΈΠ»ΠΈ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²ΠΎ врСмя процСсса ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ).

Экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ связана с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ «классичСская» конвСртация это «врСмя бэкапа» плюс «врСмя восстановлСния». ВосстановлСниС состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй: Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ„Π°ΠΉΠ»Π° бэкапа ΠΈ построСниС индСкса.

ΠŸΡ€ΠΈ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ суммарноС врСмя получаСтся ΠΊΠ°ΠΊ «врСмя бэкапа плюс ΠΏΡΡ‚ΡŒ-Π΄Π΅ΡΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ²Β» ΠΈ «врСмя построСния индСксов».

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ зависят ΠΎΡ‚ структуры Π±Π°Π·Ρ‹, Π½ΠΎ Π² срСднСм врСмя восстановлСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°Π²Π½ΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ бэкапа. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π±Ρ€Π°Ρ‚ΡŒ Π·Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ врСмя бэкапа, Ρ‚ΠΎ «классичСская конвСртация» β€” Ρ‚Ρ€ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, поточная β€” Π΄Π²Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ TempCacheLimit.

Π’ Ρ†Π΅Π»ΠΎΠΌ, поточная конвСртация Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ позволяСт ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ 30-40% ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ бэкапа ΠΈ рСстора.

Вопросы?

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, всС вопросы ΠΏΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях, ΠΈΠ»ΠΈ направляйтС Π°Π²Ρ‚ΠΎΡ€Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ ΠΈ соавтору Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ β€” Π’Π°ΡΠΈΠ»ΠΈΡŽ Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²Ρƒ, Π²Π΅Π΄ΡƒΡ‰Π΅ΠΌΡƒ систСмному ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Β«iBaseΒ», ΠΏΠΎ адрСсу bs at ibase ru.

Волько зарСгистрированныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² опросС. Π’ΠΎΠΉΠ΄ΠΈΡ‚Π΅, поТалуйста.

Какой вСрсиСй Firebird ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ?

  • Firebird 3.x

  • Firebird 2.5

  • Firebird 2.1

  • Firebird 2.0, 1.5 ΠΈΠ»ΠΈ 1.0

ΠŸΡ€ΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ 16 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. ВоздСрТался 1 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com