Firebird 3 ni Linuxning zamonaviy versiyalarida o'rnatish: CentOS8 va Ubuntu 19

Ushbu maqolada biz Firebird DBMS 3.0 versiyasini yangi Linux distributivlarida optimal o'rnatish uchun zarur bo'lgan minimal harakatlar to'plamini tasvirlab beramiz. Misollar uchun CentOS 8 va Ubuntu 19 tanlangan.

Firebird tarqatilishini maqsadli tizimga "etkazib berish" uchun ushbu qo'llanmada tar.gz arxivini yuklab olish varianti loyihaning rasmiy veb-saytidagi havola yordamida tanlangan (firebirdsql.org).

Eng sabrsizlar uchun to'g'ridan-to'g'ri jangga boring:

Tez o'rnatish

Faylni tahrirlash /etc/sysctl.confqatorni qo'shish orqali:

vm.max_map_count = 256000

Faylni saqlang va sozlamani qo'llang:

sudo sysctl -p /etc/sysctl.conf

Qo'shimcha ko'rsatmalar CentOS 8 va Ubuntu 19 uchun farq qiladi, ammo ССЫЛКА и КАТАЛОГ tarqatishni yuklab olish uchun Firebird loyihasining rasmiy veb-saytidan havolani va yuklab olish jarayonida tarqatish ochiladigan katalogni ko'rsating.
Hozirda (2020 yil mart) joriy versiya Firebird 3.0.5 (Bu erda havola bor 64 bitli versiyaga).

CentOS 8

sudo yum -y install epel-release
sudo yum -y makecache
sudo yum -y install libicu libtommath tar
ln -s libncurses.so.5 
/usr/lib64/libncurses.so.5
ln -s libtommath.so.1 
/usr/lib64/libtommath.so.0
curl -L ССЫЛКА|tar -zxC /tmp

Ubuntu 19

sudo apt-get -y install libncurses5 libtommath1
ln -s libtommath.so.1 
/usr/lib/x86_64-linux-gnu/libtommath.so.0
wget -O- ССЫЛКА|tar -zxC /tmp

Firebird DBMS ning haqiqiy o'rnatilishi:

cd /tmp/КАТАЛОГ
sudo ./install.sh

Agar siz ushbu harakatlar nima qilishini yaxshiroq tushunishni istasangiz, o'qing.

Asosiy qism

Qisqa muqaddima

OS allaqachon minimal versiyada o'rnatilgan va umumiy omborlarga yoki ularning mahalliy nusxalariga kirish sozlangan deb taxmin qilinadi.

O'quvchi Linux va Firebird DBMS haqida asosiy bilimga ega deb taxmin qilinadi.

rejalashtirish

DBMS serverida vaqtinchalik fayllar uchun alohida bo'limlarni ajratish tavsiya etiladi (/tmp), ma'lumotlar bazasi fayllari va mahalliy zaxira nusxalari.

Vaqtinchalik bo'lganlarga qulflash fayllari, tartiblash fayllari, global vaqtinchalik jadvallarning (GTT) "materializatsiya" fayllari va monitoring jadvallari kiradi. Saralash uchun fayllar va global vaqtinchalik jadvallar joylashgan /tmp, mon$-jadval fayllari va qulflangan fayllar – ichida /tmp/firebird.

Saralash fayllari "o'chirildi" (unlink) yaratilgandan so'ng darhol, shuning uchun ularni kataloglar ro'yxatida "ko'rish" mumkin emas - faqat jarayon tutqichlari ro'yxatida (belgilangan) deleted):

sudo ls -lhF /proc/`pgrep firebird`/fd

Pseudo katalog ro'yxatida /proc/…/fd/ symlinks ko'rsatiladi va fayl haqida haqiqiy ma'lumot tomonidan beriladi:

sudo stat -L /proc/`pgrep firebird`/fd/НОМЕР

qayerda НОМЕР – qiziqtirgan faylning deskriptori (deskriptori).

Qo'ng'iroq qilish o'rniga "pgrep исполняемый-файл“Siz darhol qiziqish jarayonining identifikatorini almashtirishingiz mumkin.

Vaqtinchalik fayllar juda katta bo'lishi mumkin, shuning uchun /tmp Kamida 20-30 GB ajratish tavsiya etiladi. Shuni hisobga olish kerakki, fayllarni saralash hajmi faqat so'rovda aniq yoki bilvosita tartiblangan ma'lumotlar miqdoriga bog'liq va bitta foydalanuvchi gigabaytlik vaqtinchalik fayllarni "yaratishi" mumkin.

Ma'lumotlar bazasi fayllari bo'limi barcha ma'lumotlar bazasi fayllarini joylashtirishi kerak. ortiqcha, hech bo'lmaganda, eng katta ma'lumotlar bazasi faylining nusxasi. Kelgusida bir necha yillar davomida ma'lumotlar bazasi fayllarining o'sishini hisobga olish kerak.

Mahalliy zaxiralar bo'limida barcha ma'lumotlar bazalarining kamida bitta zaxira arxivi va eng katta ma'lumotlar bazasining zaxira nusxasi bo'lishi kerak. Ushbu bo'limda eng katta ma'lumotlar bazasini tiklash uchun joy ham mavjud bo'lishi ma'qul. Bir necha yillar davomida kelajakda zaxira va zaxira arxivlarining o'sishi hisobga olinishi kerak.

Dastlabki tayyorgarlik

Firebird 3.0 DBMS serveri tizim xotirasini dinamik ravishda ajratadi va bo'shatadi, bu uning parchalanishiga olib kelishi mumkin. Misol uchun, ko'p sonli foydalanuvchilar bir vaqtning o'zida superserverdan uzilganidan so'ng, yangi ulanishlarni amalga oshirishda xatolar paydo bo'lishi mumkin.

Xotiraning parchalanishi tizim parametri bilan boshqariladi vm.max_map_count, standart 64K. Uning qiymatini to'rt baravar oshirish tavsiya etiladi:

sudo sysctl vm.max_map_count=256000

Tizim qayta ishga tushganda yangi qiymat o'rnatilishi uchun faylga qo'shing /etc/sysctl.conf qator:

vm.max_map_count = 256000

Ushbu parametrni o'zgartirish sababi aniq bo'lishi uchun sharh berish tavsiya etiladi. Siz avval faylni tahrirlashingiz va keyin unda saqlangan sozlamalarni qo'llashingiz mumkin:

sudo sysctl -p /etc/sysctl.conf

Kerakli paketlarni o'rnatish

Firebird 3.0 Linux DBMS ning bajariladigan fayllari ncurses kutubxonalariga bog'liq (libncurses.so.5), ICU (versiyaga bog'lanmagan va chiqishda ko'rsatilmagan ldd) va tomat (libtommath.so.0). Yig'ish arxivini yuklab olish va ochish uchun sizga yordamchi dasturlar kerak bo'ladi gzip, tar и curl yoki wget. ICU versiyalari, gzip, tar и curl/wget - ahamiyatsiz.

Paketlar bilan ishlash tizimga va tizimda ishlatiladigan paketlar menejeriga bog'liq, shuning uchun biz ularni birma-bir ko'rib chiqamiz.

CentOS 8

CentOS 8 yangi paket menejeridan foydalanadi - dnf va buyruq bilan "shaffof" deb ataladi yum. Bizning maqsadlarimiz uchun ular orasida hech qanday farq yo'qligi sababli - misollarda bo'ladi yum.

Metadata keshini yangilang: sudo yum makecache

Libtomat paketi alohida E(xtra)P(ackages for)E(nterprise)L(inux) omborida joylashgan, shuning uchun biz uning allaqachon kiritilganligini tekshiramiz:

yum -C repolist

"Faqat keshdan" varianti (-C yoki --cache-only) keraksiz tekshiruvlar va yuklamalarni yo'q qilish uchun ishlatiladi, bu yumni tezroq qiladi. Agar ro'yxatda epel ombori bo'lmasa, uni o'rnating va metama'lumotlar keshini yangilang:

sudo yum install epel-release &&
sudo yum makecache

Biz so'rovlarni tasdiqlaymiz, agar kerak bo'lsa, pgp kalitlarining qiymatlarini ishonchli manbadan ma'lum bo'lganlar bilan tekshiramiz.

Https resurslaridan repository metama'lumotlarini yuklashda muammolar mavjud bo'lsa, faylni tahrirlang /etc/yum.repos.d/epel.repo, almashtirish https:// haqida http:// va keshni yangilash buyrug'ini takrorlang.

Biz kerakli paketlarning holatini tekshiramiz (buyruq murakkab, misolda 32 bitli paket filtrlangan):

yum -C list 
ncurses libicu libtommath 
gzip tar curl wget |
grep -v i686
Installed Packages
curl.x86_64 7.61.1-11.el8 @anaconda
gzip.x86_64 1.9-9.el8 @anaconda
ncurses.x86_64 6.1-7.20180224.el8 @anaconda
Available Packages
libicu.x86_64 60.3-1.el8 BaseOS
libtommath.x86_64 1.1.0-1.el8 epel
tar.x86_64 2:1.30-4.el8 BaseOS
wget.x86_64 1.19.5-8.el8_1.1 AppStream

Biz buni ko'ramiz curl, gzip и ncurses o'rnatuvchining psevdo-repozitoriyasida joylashgan (anaconda), va tar - minimal tizim o'rnatilishidan chiqarib tashlangan. Asosiy versiyalar libncurses и libtommath talab qilinganidan ko'proq: mos ravishda 6 va 1 o'rniga 5 va 0. Agar bir xil paket o'rnatilgan va mavjud bo'lsa, u uchun yangilanish chiqarilgan. Yo'qolgan paketlarni o'rnating:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Utilitlar paketlarni boshqarish uchun mo'ljallangan apt, apt‑get и apt‑cache. Birinchisi interaktiv ish uchun mo'ljallangan, oxirgi ikkitasi esa skriptlarda foydalanish uchun mo'ljallangan. Paket nomlari biroz farq qiladi va versiyani o'z ichiga oladi.

Biz kerakli paketlarning holatini tekshiramiz (buyruq birlashtiriladi, misol chiqishi qisqartiriladi va 32 bitli paketlar filtrlanadi):

apt list libncurses? libicu?? libtommath? 
gzip tar curl wget |
grep -v i386
curl 7.65.3-1
gzip 1.10-0 [upgradable…]
libicu63 63.2-2 [installed]
libncurses5 6.1
libncurses6 6.1 [installed,automatic]
libtommath1 1.1.0
tar 1.30 [installed]
wget 1.20.3 [installed]

Kvadrat qavslar ko'rsatadigan paketlar installed/upgradable - o'rnatilgan. Mavjud, lekin o'rnatilmagan ncurses5o'rniga curl o'rnatilgan wget. Yo'qolgan paketlarni o'rnating:

sudo apt‑get install 
libncurses5 libtommath1

Simli aloqalarni yaratish

Bu yildan beri libtommath.so.1 и libncurses.so.6 bilan orqaga qarab mos keladi libtommath.so.0 и libncurses.so.5, keyin Firebird uchun kutubxonalarning mavjud versiyalariga simli havolalar yaratish kifoya.

Biz topamiz libtommath.so.1 (libncurses.so.? bir xil katalogda joylashgan):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

/usr/lib/x86_64-linux-gnu/libtommath.so.1

Biz simli aloqalarni yaratamiz.

CentOS:

sudo ln -s libtommath.so.1 
/usr/lib64/libtommath.so.0
sudo ln -s libncurses.so.6 
/usr/lib64/libncurses.so.5

Ubuntu:

sudo ln -s libtommath.so.1 
/usr/lib/x86_64-linux-gnu/libtommath.so.0

Natijani tekshiramiz (buyruq murakkab, chiqish misollari qisqartirilgan):

ls -lhF 
$(dirname `find /usr -name libtommath.so.1`) |
grep "lib(ncurses|tommath).so."

CentOS:

libncurses.so.5 -> libncurses.so.6*
libncurses.so.6 -> libncurses.so.6.1*
libncurses.so.6.1*
libtommath.so.0 -> libtommath.so.1*
libtommath.so.1 -> libtommath.so.1.1.0*
libtommath.so.1.1.0*

Ubuntu:

libncurses.so.5 -> libncurses.so.5.9
libncurses.so.5.9
libncurses.so.6 -> libncurses.so.6.1
libncurses.so.6.1
libtommath.so.0 -> libtommath.so.1
libtommath.so.1 -> libtommath.so.1.1.0
libtommath.so.1.1.0

Firebird DBMS tarqatish to'plami yuklab olinmoqda.

Firebird loyihasining rasmiy veb-sayti (firebirdsql.org) "rasmiy" nashrlar va "kunlik" tuzilmalar (snapshotlar) tarqatish uchun havolalarni nashr etadi.

Rasmiy Linux relizlari arxivlar (tar.gz) va deb/rpm paketlari sifatida mavjud, ammo tuzilmalar faqat arxiv sifatida mavjud. Biz "umumiy o'rnatuvchi" (tar.gz dan umumiy o'rnatuvchi)ni ko'rib chiqamiz.

Qurilish arxivini yuklab olish va ochish kerak, ammo biz ikkala jarayonni birlashtiramiz. Qadoqdan yechish ichida amalga oshiriladi /tmp,URL yuklab olinadigan arxivga havolani bildiradi.

jingalak:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

sukut curl yuklab olingan ma'lumotlarni stdout-ga yuboradi, lekin qayta yo'naltirishlarni bajarmaydi va biz qo'shamiz "‑L", a wget, aksincha: yo'naltirishni boshqaradi, lekin ma'lumotlarni faylga yozadi va biz "‑O‑" Uchun tar foydalanishni bildiradi gzip-filtr va qadoqdan chiqarish amalga oshiriladigan katalog. Jarayon tugagach, shunga o'xshash katalog paydo bo'ladi Firebird‑3.0.5.33220‑0.amd64 uchta fayl bilan: install.sh, buildroot.tar.gz и manifest.txt.

Firebird o'rnatilmoqda

Dastlabki tayyorgarlik jarayonida biz tizim parametrining qiymatini o'rnatdik vm.max_map_count, mavjudligini tekshirdi va ICU, ncurses va tomat kutubxonalarini o'rnatdi. Ncurses va tommath versiyalari to'g'ri ekanligiga ishonch hosil qiling (libncures.so.5 и libtommath.so.0) va kerakli simbog'lanishlarni yaratdi.

Haqiqiy o'rnatish juda oddiy. Firebird tarqatish arxivi ochilgan katalogga o'ting, tekshiring va agar kerak bo'lsa, skript uchun "bajariladigan" bayroqni o'rnating. install.sh:

chmod +x install.sh

o'rnatish skriptini ishga tushiring:

sudo ./install.sh

Enter tugmasini bosish orqali biz o'rnatishning boshlanishini tasdiqlaymiz va so'rovni olgandan so'ng sysdba parolini kiriting.

O'rnatish skripti avtomatik ravishda boshlanadi systemd- birlik firebird-superserver (sokin Firebird 3.0 arxitekturasi). Firebird xizmati superserver uchun standart parametrlar bilan ishlaydi: 2048 sahifali sahifa keshi (har bir ma'lumotlar bazasi), 64 MB saralash buferi (umumiy) va faqat XNUMX-versiya mijozlarini ulash. Variantlarni ko‘rish firebird.conf:

grep -v ^# firebird.conf | grep -v ^$

E'tibor bering, yangi qiymatlar firebird.conf Firebird xizmati qayta ishga tushirilgandan keyingina faollashadi.

Parametr qiymatlarini tanlashda uchta asosiy "iste'molchi" mavjudligini hisobga olish kerak: sahifa keshi (ma'lumotlar bazasi uchun), tartiblash buferi (birgalikda) va mijoz ulanishlari uchun server tomonidan ajratilgan xotira. Siz faqat birinchi ikkitasini boshqarishingiz mumkin - mijoz ulanishlari uchun xotira hajmi keshlangan so'rovlar soni va matniga, ularning rejalariga va so'rovlarda ishtirok etadigan ma'lumotlar bazasi ob'ektlariga bog'liq. Mijoz ulanishi xotirasi taxminlari faqat empirik tarzda amalga oshiriladi va mijoz ilovalari va/yoki ma'lumotlar bazasi ob'ektlari o'zgarishi bilan o'zgarishi mumkin.

Kichik hajmli (12-16 GB gacha) xotiraga ega bo'lgan xostlardagi superserver uchun siz sahifa keshi va tartiblash buferi uchun jami operativ xotira hajmining uchdan bir yoki to'rtdan ko'prog'ini ajratmasligingiz kerak.

Agar ma'lumotlar bazalari soni aniqlanmagan bo'lsa va o'zgarishi mumkin bo'lsa, sahifa kesh xotirasining umumiy hajmi serverda bo'lishi mumkin bo'lgan ma'lumotlar bazalarining maksimal soniga bo'linishi kerak. Sahifa keshining hajmi sahifalarda ko'rsatilgan va alohida baytlarga aylantirilishi kerak.

Klassik arxitekturaga o'tish uchun siz hech bo'lmaganda aniq belgilashingiz kerak ServerMode в firebird.conf, u erda sahifa keshini kamaytiring (2K dan ko'p bo'lmagan), tartiblash buferini kamaytiring (barcha turlarning umumiy ruxsat etilgan hajmi ulanishlarning maksimal soniga bo'linadi), blokni o'chiring va to'xtating. firebird-superserver, qurilmani yoqing va ishga tushiring firebird-classic.socket.

Firebird 3.0 da superklassik arxitekturadan foydalanish unchalik mantiqiy emas: "ishonchlilik" superserver va bir xil umumiy tartiblash buferiga o'xshaydi. Umumiy sahifa keshi yo'q va turli xil ulanishlarni bir-biri bilan sinxronlashtirish uchun "yo'qotishlar" klassik bilan bir xil.

Shuni esda tutish kerakki, Firebird 3.0 da ba'zi parametrlar (sahifa keshi, bloklangan fayl o'lchamlari, xesh jadvallari va boshqalar) o'rnatilishi mumkin. databases.conf Har bir ma'lumotlar bazasi uchun alohida. Superserver uchun, masalan, kichik qiymatni o'rnatish foydalidir DefaultDbCachePages в firebird.conf va kerakli ma'lumotlar bazalari uchun alohida sahifa keshlarini o'rnating databases.conf.

Izohlarda maqola haqida savollar bering yoki qo'llab-quvvatlash manzilimizga xat yozing [elektron pochta bilan himoyalangan].

Manba: www.habr.com

a Izoh qo'shish