Այս հոդվածում մենք նկարագրելու ենք գործողությունների նվազագույն փաթեթը, որն անհրաժեշտ է Linux-ի նոր բաշխումների վրա Firebird DBMS 3.0 տարբերակի օպտիմալ տեղադրման համար: Օրինակների համար ընտրված են CentOS 8 և Ubuntu 19:
Firebird-ի բաշխումը թիրախային համակարգին «մատուցելու» համար այս ուղեցույցում ընտրված է tar.gz արխիվը ներբեռնելու տարբերակը՝ օգտագործելով ծրագրի պաշտոնական կայքի հղումը (
Ամենաանհամբերների համար գնացեք ուղիղ ճակատամարտ.
Արագ տեղադրում
Ֆայլի խմբագրում /etc/sysctl.conf
ավելացնելով տողը.
vm.max_map_count = 256000
Պահպանեք ֆայլը և կիրառեք պարամետրը.
sudo sysctl -p /etc/sysctl.conf
Հետագա հրահանգները տարբերվում են CentOS 8-ի և Ubuntu 19-ի համար, սակայն ССЫЛКА
и КАТАЛОГ
նշեք հղումը Firebird նախագծի պաշտոնական կայքից բաշխումը ներբեռնելու համար և այն գրացուցակը, որտեղ բաշխումը կբացվի ներբեռնման գործընթացում:
Ներկայումս (մարտ 2020) ընթացիկ թողարկումն է Firebird 3.0.5 (
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-ի իրական տեղադրումը.
cd /tmp/КАТАЛОГ
sudo ./install.sh
Եթե ցանկանում եք ավելի լավ հասկանալ, թե ինչ են անում այս գործողությունները, կարդացեք շարունակությունը:
Հիմնական մասը
Կարճ նախաբան
Ենթադրվում է, որ ՕՀ-ն արդեն տեղադրված է նվազագույն տարբերակով, և մուտքը հանրային պահեստներ կամ դրանց տեղական պատճենները կազմաձևված է:
Ենթադրվում է, որ ընթերցողը հիմնարար գիտելիքներ ունի Linux-ի և Firebird DBMS-ի մասին:
Պլանավորում
DBMS սերվերի վրա խորհուրդ է տրվում հատկացնել առանձին բաժիններ ժամանակավոր ֆայլերի համար (/tmp
), տվյալների բազայի ֆայլերը և տեղական կրկնօրինակները:
Ժամանակավորները ներառում են կողպեքի ֆայլերը, ֆայլերի տեսակավորումը, գլոբալ ժամանակավոր աղյուսակների (GTT) «նյութականացման» ֆայլերը և մոնիտորինգի աղյուսակները: Տեսակավորման և գլոբալ ժամանակավոր աղյուսակների ֆայլերը գտնվում են /tmp
, mon$-table ֆայլեր և lock-files – in /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
Պահանջվող փաթեթների տեղադրում
Firebird 3.0 Linux DBMS-ի գործարկվող ֆայլերը կախված են 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
Firebird DBMS բաշխման փաթեթի ներբեռնում:
Firebird նախագծի պաշտոնական կայքէջը (firebirdsql.org) հրապարակում է հղումներ դեպի «պաշտոնական» թողարկումների և «ամենօրյա» բլոկների բաշխումները (պատկերապատկերային կառուցումներ):
Պաշտոնական Linux թողարկումները հասանելի են որպես արխիվներ (tar.gz) և deb/rpm փաթեթներ, բայց build-ները հասանելի են միայն որպես արխիվներ: Մենք կդիտարկենք «ընդհանուր տեղադրիչը» (ընդհանուր տեղադրիչը tar.gz-ից):
Ստեղծման արխիվը պետք է ներբեռնվի և ապափաթեթավորվի, բայց մենք կհամատեղենք երկու գործընթացները: Ապափաթեթավորումը կատարվում է /tmp
,URL-ը նշանակում է ներբեռնվող արխիվի հղումը:
գանգուր:
curl -L URL | tar -zxC /tmp
wget:
wget -O– URL | tar -zxC /tmp
By default 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
, ստուգեց հասանելիությունը և տեղադրեց ՄԿՈՒ, ncurses և tommath գրադարանները: Համոզվեք, որ 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
, կրճատեք այնտեղ էջի քեշը (2K-ից ոչ ավելի), նվազեցրեք տեսակավորման բուֆերը (բոլոր տեսակի ընդհանուր թույլատրելի ծավալը բաժանված է կապերի առավելագույն քանակի վրա), անջատեք և դադարեցրեք միավորը։ firebird-superserver
, միացրեք և գործարկեք միավորը firebird-classic.socket
.
Firebird 3.0-ում սուպերդասական ճարտարապետությունն օգտագործելն այնքան էլ իմաստ չունի. «հուսալիությունը» նման է գերսերվերի և նույն ընդհանուր տեսակավորման բուֆերին: Չկա ընդհանուր էջի քեշ, և տարբեր կապեր միմյանց հետ համաժամեցնելու «կորուստները» նույնն են, ինչ դասականում։
Պետք է հիշել, որ Firebird 3.0-ում որոշ պարամետրեր (էջի քեշ, կողպեքի ֆայլերի չափսեր, հեշ աղյուսակներ և որոշ այլ պարամետրեր) կարող են սահմանվել: databases.conf
յուրաքանչյուր տվյալների բազայի համար անհատապես: Սուպերսերվերի համար օգտակար է, օրինակ, փոքր արժեք սահմանելը DefaultDbCachePages
в firebird.conf
և տեղադրեք առանձին էջի քեշեր անհրաժեշտ տվյալների բազաների համար databases.conf
.
Հոդվածի վերաբերյալ հարցեր տվեք մեկնաբանություններում կամ նամակ գրեք մեր աջակցության հասցեին [էլեկտրոնային փոստով պաշտպանված].
Source: www.habr.com