Насб кардани Firebird 3 дар версияҳои муосири Linux: CentOS8 ва Ubuntu 19

Дар ин мақола мо маҷмӯи ҳадди ақали амалҳоро барои насби оптималии версияи Firebird DBMS 3.0 дар дистрибюторҳои нави Linux тавсиф хоҳем кард. Барои мисолҳо CentOS 8 ва Ubuntu 19 интихоб шудаанд.

Барои «расонидани» тақсимоти Firebird ба системаи мақсаднок, дар ин дастур, имконоти зеркашии бойгонии tar.gz бо истифода аз истиноди вебсайти расмии лоиҳа интихоб карда мешавад (firebirdsql.org).

Барои бесабртарин, рост ба ҷанг равед:

Насби зуд

Таҳрири файл /etc/sysctl.confбо илова кардани сатр:

vm.max_map_count = 256000

Файлро захира кунед ва танзимро татбиқ кунед:

sudo sysctl -p /etc/sysctl.conf

Дастурҳои минбаъда барои CentOS 8 ва Ubuntu 19 фарқ мекунанд, аммо ССЫЛКА и КАТАЛОГ истинодро аз вебсайти расмии лоиҳаи Firebird барои зеркашии тақсимот ва директорияе, ки дар ҷараёни боргирӣ тақсимот кушода мешавад, нишон диҳед.
Дар айни замон (марти соли 2020) версияи ҷорӣ Firebird 3.0.5 (ин пайванд аст ба версияи 64-бит).

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

Насби воқеии DBMS Firebird:

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

Агар шумо хоҳед, ки беҳтар фаҳмед, ки ин амалҳо чӣ кор мекунанд, хонед.

Қисми асосии он

Муқаддимаи кӯтоҳ

Тахмин меравад, ки ОС аллакай дар версияи ҳадди ақал насб шудааст ва дастрасӣ ба анборҳои ҷамъиятӣ ё нусхаҳои маҳаллии онҳо танзим шудааст.

Тахмин меравад, ки хонанда дониши асосии Linux ва DBMS Firebird дорад.

Банақшагирӣ

Дар сервери DBMS тавсия дода мешавад, ки қисмҳои алоҳида барои файлҳои муваққатӣ (/tmp), файлҳои пойгоҳи додаҳо ва захираҳои маҳаллӣ.

Муваққатӣ файлҳои қулф, файлҳои ҷудокунӣ, файлҳои "материализатсия" -и ҷадвалҳои глобалии муваққатӣ (GTT) ва ҷадвалҳои мониторингро дар бар мегиранд. Файлҳо барои ҷудокунӣ ва ҷадвалҳои муваққатии глобалӣ дар /tmp, mon$-файлҳо ва lock-файлҳо – дар /tmp/firebird.

Файлҳои мураттабсозӣ "нест карда шудаанд" (unlink) дарҳол пас аз эҷод, бинобар ин онҳоро дар феҳристи феҳрист "дидан" наметавонанд - танҳо дар рӯйхати дастаҳои раванд (ҳамчун ишора карда шудаанд) deleted):

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

Дар рӯйхати феҳристи псевдо /proc/…/fd/ истинодҳои рамзӣ нишон дода мешаванд ва маълумоти воқеӣ дар бораи файл аз ҷониби:

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

ки НОМЕР – дескриптори (дескриптори) файли манфиатдор.

Ба ҷои занг задан "pgrep исполняемый-файл"Шумо метавонед фавран идентификатори раванди таваҷҷӯҳро иваз кунед.

Файлҳои муваққатӣ метавонанд хеле калон бошанд, бинобар ин /tmp Тавсия дода мешавад, ки ҳадди аққал 20-30 ГБ ҷудо кунед. Бояд ба назар гирифт, ки андозаи мураттабсозии файлҳо танҳо аз ҳаҷми маълумоте, ки дар дархост ба таври возеҳ ё ғайримустақим мураттаб карда шудаанд, вобаста аст ва як корбар метавонад гигабайтҳои файлҳои муваққатиро "офарад".

Бахши файлҳои пойгоҳи додаҳо бояд ҳамаи файлҳои пойгоҳи додаҳоро ҷойгир кунад. плюс, ҳадди аққал, як нусхаи бузургтарин файли пойгоҳи додаҳо. Афзоиши файлҳои базаи маълумотро дар оянда дар тӯли якчанд соли оянда ба назар гирифтан лозим аст.

Бахши захираҳои маҳаллӣ бояд ҳадди аққал як бойгонии эҳтиётии ҳамаи пойгоҳи додаҳо ва инчунин нусхаи захиравии бузургтарин пойгоҳи додаҳоро дар бар гирад. Ин матлуб аст, ки ин бахш инчунин барои барқарорсозии бузургтарин пойгоҳи додаҳо ҷой дошта бошад. Афзоиши нусхаҳои эҳтиётӣ ва архивҳои захиравӣ дар оянда дар тӯли якчанд сол бояд ба назар гирифта шавад.

Омодасозии пешакӣ

Сервери Firebird 3.0 DBMS хотираи системаро ба таври динамикӣ ҷудо ва озод мекунад, ки ин метавонад боиси тақсимшавии он гардад. Масалан, пас аз он ки шумораи зиёди корбарон якбора аз суперсервер ҷудо мешаванд, ҳангоми пайваст кардани пайвастҳои нав хатогиҳо рух дода метавонанд.

Тақсимоти хотира аз ҷониби параметри система идора карда мешавад vm.max_map_count, пешфарз 64K аст. Тавсия дода мешавад, ки арзиши онро чор маротиба зиёд кунед:

sudo sysctl vm.max_map_count=256000

Барои он ки арзиши нав ҳангоми бозоғозии система муқаррар карда шавад, ба файл илова кунед /etc/sysctl.conf сатр:

vm.max_map_count = 256000

Тавсия дода мешавад, ки шарҳ диҳед, то сабаби тағир додани ин параметр равшан бошад. Шумо метавонед аввал файлро таҳрир кунед ва пас танзимоти дар он захирашударо татбиқ кунед:

sudo sysctl -p /etc/sysctl.conf

Насб кардани бастаҳои зарурӣ

Файлҳои иҷрошавандаи DBMS Firebird 3.0 Linux аз китобхонаҳои ncurses вобастаанд (libncurses.so.5), ICU (ба версия вобаста нест ва дар баромад намоиш дода намешавад ldd) ва томмат (libtommath.so.0). Барои зеркашӣ ва кушодани бойгонии маҷлис, ба шумо утилитаҳо лозим аст gzip, tar и curl ё wget. Версияҳои ICU, gzip, tar и curl/wget - ночиз мебошанд.

Кор бо бастаҳо аз система ва мудири бастаҳои дар система истифодашаванда вобаста аст, бинобар ин мо онҳоро як ба як баррасӣ хоҳем кард.

CentOS 8

CentOS 8 мудири бастаи навро истифода мебарад - dnf ва онро бо фармон «шаффоф» меноманд yum. Азбаски барои мақсадҳои мо дар байни онҳо фарқият вуҷуд надорад - дар мисолҳо вуҷуд хоҳанд дошт yum.

Кэши метамаълумотро навсозӣ кунед: sudo yum makecache

Бастаи libtomath дар як анбори алоҳидаи E(xtra)P(ackages for)E(nterprise)L(inux) ҷойгир аст, бинобар ин мо тафтиш мекунем, ки он аллакай дохил карда шудааст:

yum -C repolist

Опсияи "танҳо аз кэш" (-C ё --cache-only) барои нест кардани чекҳо ва зеркашиҳои нолозим истифода мешавад, ки yum-ро тезтар мекунад. Агар дар рӯйхат ягон анбори epel мавҷуд набошад, онро насб кунед ва кэши метамаълумотро навсозӣ кунед:

sudo yum install epel-release &&
sudo yum makecache

Мо дархостҳоро, агар лозим бошад, тафтиши арзишҳои калидҳои pgp бо онҳое, ки аллакай аз манбаи боэътимод маълуманд, тасдиқ мекунем.

Агар дар боркунии метамаълумоти анбор аз захираҳои https мушкилот вуҷуд дошта бошад, пас файлро таҳрир кунед /etc/yum.repos.d/epel.repo, иваз кардан https:// ба http:// ва фармони навсозии кэшро такрор кунед.

Мо ҳолати бастаҳои лозимиро тафтиш мекунем (фармоиш мураккаб аст, дар мисоли баромади бастаи 32-битӣ филтр карда шудааст):

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

Мо инро мебинем curl, gzip и ncurses дар псевдо-анбори насбкунанда ҷойгир шудааст (anaconda), ва tar – аз насби ҳадди ақали система хориҷ карда шудааст. Версияҳои асосӣ libncurses и libtommath зиёда аз талаб: мутаносибан 6 ва 1 ба ҷои 5 ва 0. Агар як баста ҳам насб ва ҳам дастрас бошад, барои он навсозӣ бароварда шудааст. Бастаҳои гумшударо насб кунед:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Утилитаҳо барои идоракунии бастаҳо тарҳрезӣ шудаанд apt, apt‑get и apt‑cache. Якум барои кори интерактивӣ ва дуи охирин барои истифода дар скриптҳо пешбинӣ шудаанд. Номҳои бастаҳо каме фарқ мекунанд ва версияро дар бар мегиранд.

Мо ҳолати бастаҳои лозимиро тафтиш мекунем (фармоиш муттаҳид карда мешавад, баромади намуна кӯтоҳ карда мешавад ва бастаҳои 32-битӣ филтр карда мешаванд):

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]

Бастаҳое, ки қавсҳои мураббаъ барои онҳо нишон медиҳанд installed/upgradable – насб карда шудааст. Дастрас аст, аммо насб нашудааст ncurses5, ба ҷои curl насб карда шудааст wget. Бастаҳои гумшударо насб кунед:

sudo apt‑get install 
libncurses5 libtommath1

Эҷоди аломатҳо

Аз он вақт libtommath.so.1 и libncurses.so.6 ба ақиб мувофиқ бо libtommath.so.0 и libncurses.so.5, пас барои Firebird эҷод кардани аломатҳо ба версияҳои мавҷудаи китобхонаҳо кифоя аст.

Мо меёбем libtommath.so.1 (libncurses.so.? дар ҳамон директория ҷойгир аст):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Мо пайвандҳои рамзӣ эҷод мекунем.

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

Биёед натиҷаро тафтиш кунем (фармон мураккаб аст, мисолҳои баромад кӯтоҳ карда шудаанд):

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

Зеркашии маҷмӯаи тақсимоти DBMS Firebird.

Вебсайти расмии лоиҳаи Firebird (firebirdsql.org) истинодҳоро ба тақсимоти релизҳои "расмӣ" ва сохтмонҳои "ҳаррӯза" (сохтҳои тасвирӣ) нашр мекунад.

Варақаҳои расмии Linux ҳамчун бойгонӣ (tar.gz) ва бастаҳои deb/rpm дастрасанд, аммо сохтмонҳо танҳо ҳамчун бойгонӣ дастрасанд. Мо "насбкунандаи умумӣ" (насбкунандаи умумӣ аз tar.gz) -ро баррасӣ хоҳем кард.

Архиви сохтмон бояд зеркашӣ ва кушода шавад, аммо мо ҳарду равандро якҷоя мекунем. Кушодани бастабандӣ дар /tmp,URL истинод ба бойгонии зеркашишавандаро ифода мекунад.

ҷингила:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

бо пешфарз curl маълумоти зеркашидашударо ба stdout мефиристад, аммо масирро идора намекунад ва мо илова мекунем "‑L", а wget, баръакс: масирро идора мекунад, аммо маълумотро ба файл менависад ва мо "‑O‑" Барои tar истифода нишон медихад gzip-филтр ва директорияе, ки дар он кушодан анҷом дода мешавад. Вақте ки раванд ба итмом мерасад, феҳрист ба монанди ин пайдо мешавад Firebird‑3.0.5.33220‑0.amd64 бо се файл: install.sh, buildroot.tar.gz и manifest.txt.

Насб кардани Firebird

Дар вакти тайёрии пешакй мо арзиши параметри системаро танзим кардем vm.max_map_count, мавҷудияти онро тафтиш кард ва ICU, ncurses ва китобхонаҳои томматро насб кард. Боварӣ ҳосил кунед, ки версияҳои ncurses ва tommath дурустанд (libncures.so.5 и libtommath.so.0) ва аломатхои заруриро ба вучуд овард.

Насбкунии воқеӣ хеле содда аст. Ба директорияе, ки бойгонии тақсимоти Firebird кушода шудааст, равед, тафтиш кунед ва агар лозим бошад, парчами "иҷрошаванда" -ро барои скрипт насб кунед install.sh:

chmod +x install.sh

скрипти насбкуниро иҷро кунед:

sudo ./install.sh

Бо пахш кардани тугмаи Enter мо оғози насбро тасдиқ мекунем ва пас аз гирифтани дархост, пароли sysdba-ро ворид кунед.

Скрипти насбкунӣ ба таври худкор оғоз меёбад systemd- воҳиди firebird-superserver (меъмории хомӯшии Firebird 3.0). Хидмати Firebird бо параметрҳои пешфарз барои суперсервер кор хоҳад кард: кэши саҳифаи 2048 саҳифа (дар як махзани маълумот), буфери ҷудокунии 64 МБ (мубодила) ва пайваст кардани танҳо муштариёни версияи XNUMX. Намоиши имконоти firebird.conf:

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

Лутфан қайд кунед, ки арзишҳои нав аз firebird.conf танҳо пас аз аз нав оғоз кардани хидмати Firebird фаъол мешавад.

Ҳангоми интихоби арзишҳои параметр, бояд ба назар гирифт, ки се "истеъмолкунанда"-и асосӣ вуҷуд доранд: кэши саҳифа (барои пойгоҳи додаҳо), буфери ҷудокунӣ (мубодила) ва хотирае, ки сервер барои пайвастҳои муштарӣ ҷудо кардааст. Шумо метавонед танҳо дуи аввалро идора кунед - ҳаҷми хотира барои пайвастҳои муштарӣ аз адад ва матни дархостҳои кэшшуда, нақшаҳои онҳо ва объектҳои пойгоҳи додаҳо вобаста аст. Ҳисобҳои хотираи пайвасти муштарӣ танҳо ба таври ампирикӣ анҷом дода мешаванд ва метавонанд бо тағирёбии барномаҳои муштарӣ ва/ё объектҳои пойгоҳи додаҳо тағир ёбанд.

Барои суперсервер дар ҳостҳои дорои миқдори ками хотира (то 12-16 ГБ), шумо набояд бештар аз сеяк ё чоряки ҳаҷми умумии хотираи RAM-ро барои кэши саҳифа ва буфери навъ ҷудо кунед.

Агар шумораи пойгоҳи додаҳо собит набошад ва метавонад тағир ёбад, ҳаҷми умумии хотираи кэши саҳифа бояд ба шумораи максималии пойгоҳи додаҳо, ки метавонанд дар сервер бошанд, тақсим карда шаванд. Андозаи кэши саҳифа дар саҳифаҳо муайян карда мешавад ва бояд алоҳида ба байтҳо табдил дода шавад.

Барои гузаштан ба меъмории классикӣ, шумо бояд ҳадди аққал возеҳ нишон диҳед ServerMode в firebird.conf, кэши саҳифаро дар он ҷо кам кунед (на бештар аз 2К), буфери навъро кам кунед (ҳаҷми умумии иҷозатдодашудаи ҳама навъҳо ба шумораи максималии пайвастҳо тақсим карда мешавад), воҳидро ғайрифаъол кунед ва қатъ кунед firebird-superserver, дастгоҳро фаъол созед ва оғоз кунед firebird-classic.socket.

Истифодаи меъмории суперклассикӣ дар Firebird 3.0 чандон маъно надорад: "эътимоднокӣ" ба суперсервер ва ҳамон буфери умумии ҷудокунӣ монанд аст. Кэши умумии саҳифа вуҷуд надорад ва "талафот" барои ҳамоҳангсозии пайвастагиҳои гуногун бо ҳамдигар ҳамон тавре ки дар классикӣ аст.

Дар хотир бояд дошт, ки дар Firebird 3.0 баъзе параметрҳоро (кеши саҳифа, андозаи файли қулф, ҷадвалҳои хэш ва баъзеи дигар) танзим кардан мумкин аст. databases.conf барои ҳар як базаи маълумот алоҳида. Барои суперсервер, масалан, муқаррар кардани арзиши хурд муфид аст DefaultDbCachePages в firebird.conf ва кэшҳои саҳифаҳои инфиродӣ барои пойгоҳи додаҳои зарурӣ дар databases.conf.

Дар шарҳҳо дар бораи мақола саволҳо диҳед ё ба суроғаи дастгирии мо мактуб нависед [почтаи электронӣ ҳифз карда шудааст].

Манбаъ: will.com

Илова Эзоҳ