Memasang Firebird 3 pada Versi Linux Moden: CentOS8 dan Ubuntu 19

Dalam artikel ini kami akan menerangkan set tindakan minimum yang diperlukan untuk pemasangan optimum Firebird DBMS versi 3.0 pada pengedaran Linux baharu. CentOS 8 dan Ubuntu 19 dipilih sebagai contoh.

Untuk "menyampaikan" pengedaran Firebird kepada sistem sasaran, dalam panduan ini, pilihan untuk memuat turun arkib tar.gz dipilih menggunakan pautan daripada tapak web projek rasmi (firebirdsql.org).

Bagi yang paling tidak sabar, pergi terus ke pertempuran:

Pemasangan pantas

Mengedit fail /etc/sysctl.confdengan menambah baris:

vm.max_map_count = 256000

Simpan fail dan gunakan tetapan:

sudo sysctl -p /etc/sysctl.conf

Arahan lanjut berbeza untuk CentOS 8 dan Ubuntu 19, tetapi ССЫЛКА и КАТАЛОГ nyatakan pautan daripada tapak web projek Firebird rasmi untuk memuat turun pengedaran dan direktori tempat pengedaran akan dibongkar semasa proses muat turun.
Pada masa ini (Mac 2020) keluaran semasa ialah Firebird 3.0.5 (di sini adalah pautan kepada versi 64-bit).

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

Pemasangan sebenar DBMS Firebird:

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

Jika anda ingin lebih memahami apa yang dilakukan oleh tindakan ini, baca terus.

Bahagian utama

Mukadimah ringkas

Diandaikan bahawa OS telah dipasang dalam versi minimum dan akses kepada repositori awam atau salinan tempatan mereka dikonfigurasikan.

Diandaikan bahawa pembaca mempunyai pengetahuan asas tentang Linux dan DBMS Firebird.

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

Pada pelayan DBMS adalah disyorkan untuk memperuntukkan bahagian berasingan untuk fail sementara (/tmp), fail pangkalan data dan sandaran tempatan.

Yang sementara termasuk fail kunci, menyusun fail, fail "pemwujudan" jadual sementara global (GTT) dan jadual pemantauan. Fail untuk menyusun dan jadual sementara global terletak di /tmp, mon$-table files dan lock-files – in /tmp/firebird.

Isih fail "dipadamkan" (unlink) sejurus selepas penciptaan, jadi mereka tidak boleh "dilihat" dalam penyenaraian direktori - hanya dalam senarai pengendalian proses (ditandakan sebagai deleted):

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

Dalam senarai direktori pseudo /proc/…/fd/ symlinks dipaparkan, dan maklumat sebenar tentang fail diberikan oleh:

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

mana НОМЕР – deskriptor (deskriptor) fail yang diminati.

Daripada memanggil "pgrep исполняемый-файл"Anda boleh segera menggantikan pengecam proses yang diminati.

Fail sementara boleh menjadi sangat besar, jadi /tmp Adalah disyorkan untuk memperuntukkan sekurang-kurangnya 20-30 GB. Perlu diambil kira bahawa saiz pengisihan fail hanya bergantung pada jumlah data yang diisih secara eksplisit atau tersirat dalam permintaan, dan pengguna tunggal boleh "membuat" gigabait fail sementara.

Bahagian untuk fail pangkalan data mesti memuatkan semua fail pangkalan data. ditambah, sekurang-kurangnya, salinan fail pangkalan data terbesar. Ia adalah perlu untuk mengambil kira pertumbuhan fail pangkalan data pada masa hadapan untuk beberapa tahun akan datang.

Bahagian sandaran tempatan mesti mengandungi sekurang-kurangnya satu arkib sandaran semua pangkalan data serta sandaran pangkalan data terbesar. Adalah wajar bahawa bahagian ini juga mengandungi ruang untuk memulihkan pangkalan data terbesar. Pertumbuhan sandaran dan arkib sandaran pada masa hadapan untuk beberapa tahun perlu diambil kira.

Penyediaan awal

Pelayan DBMS Firebird 3.0 memperuntukkan dan membebaskan memori sistem secara dinamik, yang boleh membawa kepada pemecahannya. Contohnya, selepas sebilangan besar pengguna diputuskan sambungan daripada superserver sekaligus, ralat mungkin berlaku semasa membuat sambungan baharu.

Pemecahan memori dikawal oleh parameter sistem vm.max_map_count, lalai ialah 64K. Adalah disyorkan untuk meningkatkan nilainya sebanyak empat kali:

sudo sysctl vm.max_map_count=256000

Supaya nilai baharu ditetapkan apabila sistem but semula, tambahkan pada fail /etc/sysctl.conf baris:

vm.max_map_count = 256000

Adalah dinasihatkan untuk membuat ulasan supaya sebab untuk menukar parameter ini jelas. Anda boleh mengedit fail dahulu dan kemudian menggunakan tetapan yang disimpan di dalamnya:

sudo sysctl -p /etc/sysctl.conf

Memasang pakej yang diperlukan

Fail boleh laku DBMS Linux Firebird 3.0 bergantung pada perpustakaan ncurses (libncurses.so.5), ICU (tidak terikat dengan versi dan tidak dipaparkan dalam output ldd) dan tommath (libtommath.so.0). Untuk memuat turun dan membongkar arkib pemasangan, anda memerlukan utiliti gzip, tar и curl atau wget. versi ICU, gzip, tar и curl/wget – tidak penting.

Bekerja dengan pakej bergantung pada sistem dan pada pengurus pakej yang digunakan dalam sistem, jadi kami akan mempertimbangkannya satu demi satu.

CentOS 8

CentOS 8 menggunakan pengurus pakej baharu – dnf dan ia dipanggil "secara telus" dengan arahan yum. Oleh kerana untuk tujuan kami tidak ada perbezaan di antara mereka - dalam contoh akan ada yum.

Kemas kini cache metadata: sudo yum makecache

Pakej libtomath terletak dalam repositori E(xtra)P(ackages for)E(nterprise)L(inux) yang berasingan, jadi kami menyemak sama ada ia sudah disertakan:

yum -C repolist

Pilihan "hanya dari cache" (-C atau --cache-only) digunakan untuk menghapuskan semakan dan muat turun yang tidak perlu, menjadikan yum lebih pantas. Jika tiada repositori epel dalam senarai, pasang dan kemas kini cache metadata:

sudo yum install epel-release &&
sudo yum makecache

Kami mengesahkan permintaan, jika perlu, menyemak nilai kunci pgp dengan yang telah diketahui daripada sumber yang dipercayai.

Jika terdapat masalah memuatkan metamaklumat repositori daripada sumber https, kemudian edit fail tersebut /etc/yum.repos.d/epel.repo, menggantikan https:// pada http:// dan ulangi arahan kemas kini cache.

Kami menyemak status pakej yang diperlukan (arahannya rumit, dalam contoh output pakej 32-bit ditapis):

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

Kita nampak itu curl, gzip и ncurses dihoskan dalam pseudo-repository pemasang (anaconda), dan tar – dikecualikan daripada pemasangan sistem minimum. Versi utama libncurses и libtommath lebih daripada yang diperlukan: 6 dan 1 bukannya 5 dan 0, masing-masing. Jika pakej yang sama dipasang dan tersedia, kemas kini telah dikeluarkan untuknya. Pasang pakej yang hilang:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Utiliti direka untuk mengurus pakej apt, apt‑get и apt‑cache. Yang pertama direka untuk kerja interaktif, dan dua yang terakhir direka untuk digunakan dalam skrip. Nama pakej berbeza sedikit dan termasuk versi.

Kami menyemak status pakej yang diperlukan (arahan digabungkan, contoh output dipendekkan, dan pakej 32-bit ditapis):

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]

Pakej yang ditunjukkan oleh kurungan segi empat sama installed/upgradable – dipasang. Tersedia tetapi tidak dipasang ncurses5, bukannya curl dipasang wget. Pasang pakej yang hilang:

sudo apt‑get install 
libncurses5 libtommath1

Mencipta symlinks

Sejak libtommath.so.1 и libncurses.so.6 serasi ke belakang dengan libtommath.so.0 и libncurses.so.5, maka untuk Firebird sudah cukup untuk membuat symlink ke versi sedia ada perpustakaan.

Kita dapati libtommath.so.1 (libncurses.so.? terletak dalam direktori yang sama):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

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

Kami mencipta symlinks.

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

Mari semak hasilnya (arahannya rumit, contoh output dipendekkan):

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

Memuat turun kit pengedaran DBMS Firebird.

Tapak web rasmi projek Firebird (firebirdsql.org) menerbitkan pautan kepada pengedaran keluaran "rasmi" dan binaan "harian" (binaan syot kilat).

Keluaran Linux rasmi tersedia sebagai pakej arkib (tar.gz) dan deb/rpm, tetapi binaan hanya tersedia sebagai arkib. Kami akan mempertimbangkan "pemasang generik" (pemasang generik daripada tar.gz).

Arkib binaan perlu dimuat turun dan dibongkar, tetapi kami akan menggabungkan kedua-dua proses. Pembongkaran dilakukan dalam /tmp,URL menandakan pautan ke arkib yang boleh dimuat turun.

keriting:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

По умолчанию curl menghantar data yang dimuat turun ke stdout tetapi tidak mengendalikan pengalihan dan kami menambah "‑L", tetapi wget, sebaliknya: mengendalikan pengalihan, tetapi menulis data ke fail dan kami meletakkan "‑O‑" Untuk tar menunjukkan penggunaan gzip-penapis dan direktori di mana pembongkaran akan dilakukan. Apabila proses selesai, direktori seperti ini akan muncul Firebird‑3.0.5.33220‑0.amd64 dengan tiga fail: install.sh, buildroot.tar.gz и manifest.txt.

Memasang Firebird

Semasa penyediaan awal, kami melaraskan nilai parameter sistem vm.max_map_count, menyemak ketersediaan dan memasang ICU, ncurses dan perpustakaan tommath. Pastikan versi ncurses dan tommath adalah betul (libncures.so.5 и libtommath.so.0) dan mencipta symlink yang diperlukan.

Pemasangan sebenar adalah sangat mudah. Pergi ke direktori tempat arkib pengedaran Firebird dibongkar, semak dan, jika perlu, tetapkan bendera "boleh laku" untuk skrip install.sh:

chmod +x install.sh

jalankan skrip pemasangan:

sudo ./install.sh

Dengan menekan kekunci Enter kami mengesahkan permulaan pemasangan, dan setelah menerima permintaan, masukkan kata laluan sysdba.

Skrip pemasangan bermula secara automatik systemd-unit firebird-superserver (seni bina Firebird 3.0 senyap). Perkhidmatan Firebird akan berfungsi dengan parameter lalai untuk superserver: cache halaman 2048 halaman (setiap pangkalan data), penimbal isihan 64 MB (dikongsi) dan hanya menyambungkan klien versi XNUMX. Lihat pilihan firebird.conf:

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

Sila ambil perhatian bahawa nilai baharu daripada firebird.conf akan diaktifkan hanya selepas memulakan semula perkhidmatan Firebird.

Apabila memilih nilai parameter, perlu diambil kira bahawa terdapat tiga "pengguna" utama: cache halaman (untuk pangkalan data), penimbal pengisihan (dikongsi) dan memori yang diperuntukkan oleh pelayan untuk sambungan klien. Anda hanya boleh menguruskan dua yang pertama - jumlah memori untuk sambungan pelanggan bergantung pada bilangan dan teks pertanyaan cache, rancangan mereka dan objek pangkalan data yang terlibat dalam pertanyaan. Anggaran memori sambungan pelanggan dibuat secara empirik sahaja dan mungkin berubah apabila aplikasi klien dan/atau objek pangkalan data berubah.

Untuk superserver pada hos dengan jumlah memori yang kecil (sehingga 12-16 GB), anda tidak seharusnya memperuntukkan lebih daripada satu pertiga atau satu perempat daripada jumlah keseluruhan RAM untuk cache halaman dan penimbal isih.

Jika bilangan pangkalan data tidak tetap dan boleh berubah, jumlah jumlah memori cache halaman hendaklah dibahagikan dengan bilangan maksimum pangkalan data yang boleh berada pada pelayan. Saiz cache halaman ditentukan dalam halaman dan mesti ditukar secara berasingan kepada bait.

Untuk beralih kepada seni bina klasik, anda mesti, sekurang-kurangnya, nyatakan secara eksplisit ServerMode в firebird.conf, kurangkan cache halaman di sana (tidak lebih daripada 2K), kurangkan penimbal isihan (jumlah jumlah yang dibenarkan untuk semua jenis dibahagikan dengan bilangan sambungan maksimum), lumpuhkan dan hentikan unit firebird-superserver, dayakan dan mulakan unit firebird-classic.socket.

Menggunakan seni bina superklasik dalam Firebird 3.0 tidak masuk akal: "kebolehpercayaan" adalah seperti superserver dan penimbal pengisihan umum yang sama. Tiada cache halaman biasa dan "kerugian" untuk menyegerakkan sambungan yang berbeza antara satu sama lain adalah sama seperti dalam yang klasik.

Harus diingat bahawa dalam Firebird 3.0 beberapa parameter (cache halaman, saiz fail kunci, jadual hash dan beberapa yang lain) boleh ditetapkan dalam databases.conf secara individu untuk setiap pangkalan data. Untuk superserver adalah berguna, sebagai contoh, untuk menetapkan nilai yang kecil DefaultDbCachePages в firebird.conf dan pasang cache halaman individu untuk pangkalan data yang diperlukan dalam databases.conf.

Tanya soalan tentang artikel dalam ulasan, atau tulis surat ke alamat sokongan kami [e-mel dilindungi].

Sumber: www.habr.com

Tambah komen