Pag-install ng Firebird 3 sa mga modernong bersyon ng Linux: CentOS8 at Ubuntu 19

Sa artikulong ito, ilalarawan namin ang pinakamababang hanay ng mga pagkilos na kinakailangan para sa pinakamainam na pag-install ng bersyon 3.0 ng Firebird DBMS sa mga bagong distribusyon ng Linux. Ang CentOS 8 at Ubuntu 19 ay pinili para sa mga halimbawa.

Upang "ihatid" ang pamamahagi ng Firebird sa target na sistema, sa gabay na ito, ang opsyon sa pag-download ng tar.gz archive ay pinili gamit ang isang link mula sa opisyal na website ng proyekto (firebirdsql.org).

Para sa pinaka naiinip, dumiretso sa labanan:

Mabilis na pag-install

Pag-edit ng file /etc/sysctl.confsa pamamagitan ng pagdaragdag ng linya:

vm.max_map_count = 256000

I-save ang file at ilapat ang setting:

sudo sysctl -p /etc/sysctl.conf

Ang mga karagdagang tagubilin ay naiiba para sa CentOS 8 at Ubuntu 19, ngunit ССЫЛКА и КАТАЛОГ magpahiwatig ng isang link mula sa opisyal na website ng proyekto ng Firebird para sa pag-download ng pamamahagi at sa direktoryo kung saan ilalabas ang pamamahagi sa panahon ng proseso ng pag-download.
Sa kasalukuyan (Marso 2020) ang kasalukuyang release ay Firebird 3.0.5 (dito ay ang link sa 64-bit na bersyon).

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

Ang aktwal na pag-install ng Firebird DBMS:

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

Kung gusto mong mas maunawaan kung ano ang ginagawa ng mga pagkilos na ito, magbasa pa.

Ang pangunahing bahagi

Isang maikling preamble

Ipinapalagay na ang OS ay naka-install na sa isang minimal na bersyon at ang pag-access sa mga pampublikong repositoryo o ang kanilang mga lokal na kopya ay na-configure.

Ipinapalagay na ang mambabasa ay may pangunahing kaalaman sa Linux at sa Firebird DBMS.

Планирование

Sa server ng DBMS inirerekumenda na maglaan ng hiwalay na mga seksyon para sa mga pansamantalang file (/tmp), mga file ng database at mga lokal na backup.

Ang mga pansamantala ay kinabibilangan ng mga lock file, pag-uuri ng mga file, "materialization" na mga file ng global temporary tables (GTT) at monitoring table. Ang mga file para sa pag-uuri at pandaigdigang pansamantalang mga talahanayan ay matatagpuan sa /tmp, mon$-table file at lock-files – in /tmp/firebird.

Ang pag-uuri ng mga file ay "tinanggal" (unlink) kaagad pagkatapos ng paglikha, kaya't hindi sila "makikita" sa listahan ng direktoryo - sa listahan lamang ng mga pinangangasiwaan ng proseso (minarkahan bilang deleted):

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

Sa pseudo na listahan ng direktoryo /proc/…/fd/ ang mga symlink ay ipinapakita, at ang aktwal na impormasyon tungkol sa file ay ibinibigay ng:

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

saan НОМЕР – descriptor (descriptor) ng file ng interes.

Sa halip na tumawag"pgrep исполняемый-файл"Maaari mong palitan kaagad ang identifier ng proseso ng interes.

Ang mga pansamantalang file ay maaaring napakalaki, kaya /tmp Inirerekomenda na maglaan ng hindi bababa sa 20-30 GB. Dapat itong isaalang-alang na ang laki ng pag-uuri ng mga file ay nakasalalay lamang sa dami ng data na tahasan o hindi malinaw na pinagsunod-sunod sa kahilingan, at ang isang user ay maaaring "lumikha" ng mga gigabytes ng mga pansamantalang file.

Ang seksyon para sa mga file ng database ay dapat tumanggap ng lahat ng mga file ng database. plus, sa pinakamababa, isang kopya ng pinakamalaking database file. Kinakailangang isaalang-alang ang paglaki ng mga file ng database sa hinaharap para sa ilang taon na darating.

Ang seksyon ng mga lokal na backup ay dapat maglaman ng hindi bababa sa isang backup na archive ng lahat ng mga database at isang backup ng pinakamalaking database. Ito ay kanais-nais na ang seksyon na ito ay naglalaman din ng puwang para sa pagpapanumbalik ng pinakamalaking database. Ang paglago ng mga backup at backup na archive sa hinaharap para sa ilang taon ay dapat isaalang-alang.

Paunang paghahanda

Ang Firebird 3.0 DBMS server ay dynamic na naglalaan at nagpapalaya ng memorya ng system, na maaaring humantong sa pagkapira-piraso nito. Halimbawa, pagkatapos na madiskonekta ang malaking bilang ng mga user mula sa superserver nang sabay-sabay, maaaring magkaroon ng mga error kapag gumagawa ng mga bagong koneksyon.

Ang memory fragmentation ay kinokontrol ng isang parameter ng system vm.max_map_count, ang default ay 64K. Inirerekomenda na dagdagan ang halaga nito ng apat na beses:

sudo sysctl vm.max_map_count=256000

Upang maitakda ang bagong halaga kapag nag-reboot ang system, idagdag sa file /etc/sysctl.conf linya:

vm.max_map_count = 256000

Maipapayo na gumawa ng komento upang ang dahilan ng pagbabago ng parameter na ito ay malinaw. Maaari mo munang i-edit ang file at pagkatapos ay ilapat ang mga setting na naka-save dito:

sudo sysctl -p /etc/sysctl.conf

Pag-install ng mga kinakailangang pakete

Ang mga executable na file ng Firebird 3.0 Linux DBMS ay nakasalalay sa mga ncurses na aklatan (libncurses.so.5), ICU (hindi nakatali sa bersyon at hindi ipinapakita sa output ldd) at tommath (libtommath.so.0). Upang i-download at i-unpack ang archive ng pagpupulong, kakailanganin mo ng mga utility gzip, tar и curl o wget. Mga bersyon ng ICU, gzip, tar и curl/wget - ay hindi gaanong mahalaga.

Ang pagtatrabaho sa mga package ay depende sa system at sa package manager na ginamit sa system, kaya isa-isa naming isasaalang-alang ang mga ito.

CentOS 8

Gumagamit ang CentOS 8 ng bagong manager ng package - dnf at ito ay tinatawag na "transparently" sa pamamagitan ng utos yum. Dahil para sa aming mga layunin ay walang pagkakaiba sa pagitan nila - sa mga halimbawa ay magkakaroon yum.

I-update ang cache ng metadata: sudo yum makecache

Matatagpuan ang libtomath package sa isang hiwalay na E(xtra)P(ackages para sa)E(nterprise)L(inux) na repository, kaya tinitingnan namin kung kasama na ito:

yum -C repolist

Pagpipilian "mula sa cache lamang" (-C o --cache-only) ay ginagamit upang alisin ang mga hindi kinakailangang pagsusuri at pag-download, na ginagawang mas mabilis ang yum. Kung walang epel repository sa listahan, i-install ito at i-update ang metadata cache:

sudo yum install epel-release &&
sudo yum makecache

Kinukumpirma namin ang mga kahilingan, kung kinakailangan, sinusuri ang mga halaga ng mga pgp key sa mga kilala na mula sa isang pinagkakatiwalaang pinagmulan.

Kung may mga problema sa paglo-load ng metainformation ng repository mula sa mga mapagkukunan ng https, pagkatapos ay i-edit ang file /etc/yum.repos.d/epel.repo, pinapalitan https:// sa http:// at ulitin ang cache update command.

Sinusuri namin ang katayuan ng mga kinakailangang pakete (ang utos ay kumplikado, sa halimbawang output ang 32-bit na pakete ay na-filter):

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

Nakikita natin yan curl, gzip и ncurses naka-host sa installer pseudo-repository (anaconda), at tar – hindi kasama sa minimum na pag-install ng system. Mga pangunahing bersyon libncurses и libtommath higit sa kinakailangan: 6 at 1 sa halip na 5 at 0, ayon sa pagkakabanggit. Kung parehong naka-install at available ang parehong package, may inilabas na update para dito. I-install ang mga nawawalang pakete:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Ang mga utility ay idinisenyo upang pamahalaan ang mga pakete apt, apt‑get и apt‑cache. Ang una ay idinisenyo para sa interactive na gawain, at ang huling dalawa ay idinisenyo para magamit sa mga script. Ang mga pangalan ng package ay bahagyang naiiba at kasama ang bersyon.

Sinusuri namin ang katayuan ng mga kinakailangang pakete (ang utos ay pinagsama, ang halimbawang output ay pinaikli at ang 32-bit na mga pakete ay sinala):

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]

Mga pakete kung saan ipinapahiwatig ng mga square bracket installed/upgradable – naka-install. Magagamit ngunit hindi naka-install ncurses5, sa halip na curl naka-install wget. I-install ang mga nawawalang pakete:

sudo apt‑get install 
libncurses5 libtommath1

Paglikha ng mga symlink

Dahil sa libtommath.so.1 и libncurses.so.6 pabalik na katugma sa libtommath.so.0 и libncurses.so.5, pagkatapos ay para sa Firebird sapat na upang lumikha ng mga symlink sa mga umiiral na bersyon ng mga aklatan.

Hanapin libtommath.so.1 (libncurses.so.? matatagpuan sa parehong direktoryo):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Gumagawa kami ng mga symlink.

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

Suriin natin ang resulta (ang utos ay kumplikado, ang mga halimbawa ng output ay pinaikli):

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

Dina-download ang Firebird DBMS distribution kit.

Ang opisyal na website ng proyekto ng Firebird (firebirdsql.org) ay nag-publish ng mga link sa mga distribusyon ng "opisyal" na mga release at "araw-araw" na mga build (mga snapshot build).

Available ang mga opisyal na release ng Linux bilang mga archive (tar.gz) at deb/rpm package, ngunit available lang ang mga build bilang mga archive. Isasaalang-alang namin ang "generic installer" (generic installer mula sa tar.gz).

Kailangang i-download at i-unpack ang build archive, ngunit pagsasamahin namin ang parehong proseso. Ang pag-unpack ay tapos na /tmpTinutukoy ng ,URL ang link sa mada-download na archive.

kulot:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

По умолчанию curl ipinapadala ang na-download na data sa stdout ngunit hindi pinangangasiwaan ang mga pag-redirect at idinagdag namin ang "‑L", a wget, sa kabaligtaran: pinangangasiwaan ang mga pag-redirect, ngunit nagsusulat ng data sa isang file at inilalagay namin ang "‑O‑" Para sa tar ipahiwatig ang paggamit gzip-filter at ang direktoryo kung saan isasagawa ang pag-unpack. Kapag kumpleto na ang proseso, lalabas ang isang direktoryo na tulad nito Firebird‑3.0.5.33220‑0.amd64 na may tatlong file: install.sh, buildroot.tar.gz и manifest.txt.

Pag-install ng Firebird

Sa panahon ng paunang paghahanda, inayos namin ang halaga ng parameter ng system vm.max_map_count, sinuri para sa availability at na-install ang ICU, ncurses at tommath library. Tiyaking tama ang mga bersyon ng ncurses at tommath (libncures.so.5 и libtommath.so.0) at lumikha ng mga kinakailangang symlink.

Ang aktwal na pag-install ay napaka-simple. Pumunta sa direktoryo kung saan na-unpack ang archive ng pamamahagi ng Firebird, suriin at, kung kinakailangan, itakda ang flag na "mapapatupad" para sa script install.sh:

chmod +x install.sh

patakbuhin ang script ng pag-install:

sudo ./install.sh

Sa pamamagitan ng pagpindot sa Enter key, kinukumpirma namin ang simula ng pag-install, at sa pagtanggap ng kahilingan, ipasok ang sysdba password.

Awtomatikong magsisimula ang script ng pag-install systemd-yunit firebird-superserver (tahimik na arkitektura ng Firebird 3.0). Ang serbisyo ng Firebird ay gagana kasama ang mga default na parameter para sa superserver: isang page cache ng 2048 na pahina (bawat database), isang sorting buffer na 64 MB (shared) at kumokonekta lamang sa bersyon XNUMX na mga kliyente. Tingnan ang mga opsyon firebird.conf:

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

Pakitandaan na ang mga bagong halaga mula sa firebird.conf ay isaaktibo lamang pagkatapos i-restart ang serbisyo ng Firebird.

Kapag pumipili ng mga halaga ng parameter, dapat itong isaalang-alang na mayroong tatlong pangunahing "mga mamimili": ang cache ng pahina (para sa database), ang pag-uuri ng buffer (ibinahagi) at ang memorya na inilalaan ng server para sa mga koneksyon ng kliyente. Maaari mo lamang pamahalaan ang unang dalawa - ang halaga ng memorya para sa mga koneksyon ng kliyente ay nakasalalay sa bilang at teksto ng mga naka-cache na query, ang kanilang mga plano at ang mga object ng database na kasangkot sa mga query. Ang mga pagtatantya ng memorya ng koneksyon ng kliyente ay ginawa lamang sa empirically at maaaring magbago habang nagbabago ang mga application ng kliyente at/o mga object ng database.

Para sa isang superserver sa mga host na may maliit na halaga ng memorya (hanggang sa 12-16 GB), hindi ka dapat maglaan ng higit sa isang ikatlo o isang-kapat ng kabuuang halaga ng RAM para sa cache ng pahina at pag-uuri ng buffer.

Kung ang bilang ng mga database ay hindi naayos at maaaring magbago, ang kabuuang halaga ng memorya ng cache ng pahina ay dapat na hatiin sa maximum na bilang ng mga database na maaaring nasa server. Ang laki ng cache ng pahina ay tinukoy sa mga pahina at dapat na hiwalay na i-convert sa mga byte.

Upang lumipat sa klasikong arkitektura, dapat mong, sa pinakamababa, tahasang tukuyin ServerMode в firebird.conf, bawasan ang cache ng page doon (hindi hihigit sa 2K), bawasan ang sort buffer (ang kabuuang pinapayagang dami ng lahat ng uri na hinati sa maximum na bilang ng mga koneksyon), huwag paganahin at itigil ang unit firebird-superserver, paganahin at simulan ang unit firebird-classic.socket.

Ang paggamit ng superclassic na arkitektura sa Firebird 3.0 ay walang gaanong kahulugan: ang "pagkakatiwalaan" ay tulad ng isang superserver at ang parehong pangkalahatang pag-uuri ng buffer. Walang karaniwang page cache at ang "pagkalugi" para sa pag-synchronize ng iba't ibang koneksyon sa isa't isa ay kapareho ng sa classic.

Dapat tandaan na sa Firebird 3.0 ang ilang mga parameter (cache ng pahina, laki ng file ng lock, hash table at ilang iba pa) ay maaaring itakda sa databases.conf indibidwal para sa bawat database. Para sa isang superserver ito ay kapaki-pakinabang, halimbawa, upang magtakda ng isang maliit na halaga DefaultDbCachePages в firebird.conf at mag-install ng mga indibidwal na cache ng pahina para sa mga kinakailangang database sa databases.conf.

Magtanong ng mga tanong tungkol sa artikulo sa mga komento, o sumulat ng mga liham sa aming address ng suporta [protektado ng email].

Pinagmulan: www.habr.com

Magdagdag ng komento