Menginstal Firebird 3 pada Versi Linux Modern: CentOS8 dan Ubuntu 19

Dalam artikel ini, kami menjelaskan sekumpulan langkah minimum yang diperlukan untuk menginstal Firebird versi 3.0 secara optimal pada distribusi Linux yang baru. Sebagai contoh, CentOS 8 dan Ubuntu 19 dipilih.

Untuk "mengirimkan" distribusi Firebird ke sistem target, dalam panduan ini, opsi untuk mengunduh arsip tar.gz dari tautan dari situs web resmi proyek ( firebirdsql.org ) telah dipilih .

Untuk yang paling tidak sabar - segera ke pertempuran:

Instalasi cepat


Edit file /etc/sysctl.confdengan menambahkan baris:

vm.max_map_count = 256000

Simpan file dan terapkan pengaturan:

sudo sysctl -p /etc/sysctl.conf

Instruksi lebih lanjut berbeda untuk CentOS 8 dan Ubuntu 19, tetapi mereka juga menunjukkan tautan dari situs web proyek Firebird resmi untuk mengunduh paket distribusi dan direktori di mana paket distribusi akan dibongkar selama proses boot.
Saat ini (Maret 2020) rilis Firebird 3.0.5 relevan (di sini ada tautan ke 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

Sebenarnya menginstal DBMS Firebird:

cd /tmp/
sudo ./install.sh

Jika Anda ingin lebih memahami apa tujuan tindakan ini, baca terus.

Bagian utama

Pembukaan kecil

Diasumsikan bahwa OS sudah diinstal dalam versi minimum dan akses ke repositori publik atau ke salinan lokal mereka telah dikonfigurasi.

Diasumsikan bahwa pembaca memiliki pengetahuan dasar tentang Linux dan Firebird DBMS.

Perencanaan

Dianjurkan untuk mengalokasikan bagian terpisah untuk file sementara ( /tmp), file database, dan cadangan lokal di server DBMS .

Sementara termasuk file kunci, mengurutkan file, file "materialisasi" dari tabel sementara global (GTT) dan tabel pemantauan. Sortir file dan tabel sementara global berada di /tmp, mon $ table file dan file kunci berada di /tmp/firebird.

Sortir file "dihapus" ( unlink) segera setelah pembuatan, oleh karena itu mereka tidak dapat "dilihat" dalam daftar direktori - hanya dalam daftar pegangan proses (ditandai sebagai deleted):

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

Dalam /proc/…/fd/daftar direktori pseudo , symlink ditampilkan, dan informasi aktual tentang file diberikan oleh:

sudo stat -L /proc/`pgrep firebird`/fd/

dimana deskriptor (deskriptor) dari file yang menarik.

Alih-alih memanggil " pgrep -", Anda dapat segera mengganti pengidentifikasi proses yang diminati.

File sementara bisa sangat besar, oleh karena itu /tmpdisarankan untuk mengalokasikan setidaknya 20-30 GB untuk. Perlu diingat bahwa ukuran file pengurutan hanya bergantung pada jumlah data yang secara eksplisit atau implisit diurutkan dalam permintaan dan satu pengguna dapat "membuat" gigabytes file sementara.

Bagian untuk file database harus berisi semua file database. ditambah setidaknya salinan file database terbesar. Seharusnya memperhitungkan pertumbuhan file database di masa depan selama beberapa tahun di muka.

Bagian cadangan lokal harus mengandung setidaknya satu arsip cadangan semua basis ditambah cadangan dari basis terbesar. Disarankan bahwa bagian ini juga memiliki tempat untuk memulihkan pangkalan terbesar. Ini harus memperhitungkan pertumbuhan cadangan dan arsip cadangan di masa depan selama beberapa tahun ke depan.

Persiapan awal

Server DBMS Firebird 3.0 secara dinamis mengalokasikan dan membebaskan memori sistem, yang dapat menyebabkan fragmentasi. Misalnya, setelah sejumlah besar pengguna memutuskan koneksi dari server super sekaligus, kesalahan dapat terjadi dengan koneksi baru.

Fragmentasi memori dikendalikan oleh parameter sistem vm.max_map_count, secara default - 64K. Disarankan untuk meningkatkan nilainya empat kali:

sudo sysctl vm.max_map_count=256000

Untuk mengatur nilai baru ketika sistem reboot, tambahkan /etc/sysctl.confbaris ke file :

vm.max_map_count = 256000

Dianjurkan untuk membuat komentar sehingga alasan untuk mengubah parameter ini dipahami. Pertama-tama Anda dapat mengedit file, dan kemudian menerapkan pengaturan yang tersimpan di dalamnya:

sudo sysctl -p /etc/sysctl.conf

Menginstal paket-paket yang diperlukan

Firebird 3.0 Linux executable DBMS bergantung pada pustaka ncurses ( libncurses.so.5), ICU (tanpa ikatan versi, dan tidak ada output ldd) dan tommath ( libtommath.so.0). Untuk mengunduh dan membongkar arsip rakitan, utilitas diperlukan gzip, tardan curlatau wget. Versi ICU gzip,, tardan curl/ wget- tidak signifikan.

Bekerja dengan paket tergantung pada sistem dan pada manajer paket yang digunakan dalam sistem, oleh karena itu, kami akan mempertimbangkannya satu per satu.

CentOS 8

CentOS 8 menggunakan manajer paket baru - dnfdan "secara transparan" dipanggil pada perintah yum. Karena tidak ada perbedaan di antara mereka untuk tujuan kita, akan ada contoh yum.

Memperbarui cache metadata:sudo yum makecache

Paket libtomath terletak di repositori E (xtra) P (ackages for) E (nterprise) L (inux) yang terpisah, jadi kami memeriksa apakah sudah terhubung:

yum -C repolist

Opsi "only from the cache" ( -Catau --cache-only) digunakan untuk menghilangkan pemeriksaan dan unduhan yang tidak perlu, mempercepat yum. Jika tidak ada repositori epel dalam daftar, instal dan perbarui cache metadata:

sudo yum install epel-release &&
sudo yum makecache

Kami mengkonfirmasi permintaan, jika perlu, memeriksa nilai kunci pgp dengan yang sudah diketahui dari sumber tepercaya.

Jika Anda memiliki masalah dalam mengunduh meta-informasi repositori dari sumber daya https, edit file /etc/yum.repos.d/epel.repo, ganti https://dengan http://dan ulangi perintah pembaruan cache.

Periksa status paket yang diperlukan (perintah dilipat, dalam contoh output, paket 32-bit difilter):

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

Kami melihat itu curl, gzipdan ncursesterletak di pseudo-repositori installer ( anaconda), dan tar- dikecualikan dari instalasi minimum sistem. Versi utama libncursesdan libtommathlebih dari yang dibutuhkan: masing-masing 6 dan 1 bukannya 5 dan 0. Jika paket yang sama diinstal dan tersedia, pembaruan telah dirilis untuknya. Instal paket yang hilang:

sudo yum install \
libicu libtommath tar

Ubuntu 19

Utilities dirancang untuk manajemen paket apt, apt‑getdan apt‑cache. Yang pertama dirancang untuk pekerjaan interaktif, dan dua yang terakhir - untuk digunakan dalam skrip. Nama paket sedikit berbeda dan termasuk versi.

Kami memeriksa status paket yang diperlukan (perintahnya kompleks, contoh keluaran dikurangi dan paket 32-bit difilter):

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]

Paket yang installed/ upgradable- dipasang dalam kurung siku . Tersedia, tetapi tidak diinstal ncurses5, bukannya curldiinstal wget. Instal paket yang hilang:

sudo apt‑get install \
libncurses5 libtommath1

Membuat symlink

Karena libtommath.so.1mereka libncurses.so.6kompatibel dengan libtommath.so.0dan libncurses.so.5, itu cukup bagi Firebird untuk membuat symlink ke versi perpustakaan yang ada.

Kami menemukan libtommath.so.1( libncurses.so.?terletak di 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

Buat 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

Periksa hasilnya (perintah dilipat, contoh keluaran disingkat):

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

Mengunduh kit distribusi Firebird DBMS.

Situs web resmi proyek Firebird (firebirdsql.org) menerbitkan tautan ke distribusi rilis "resmi" (rilis) dan majelis "harian" (pembuatan foto).

Rilis Linux resmi tersedia sebagai arsip (tar.gz) dan paket deb / rpm, dan versi build hanya tersedia sebagai arsip. Kita akan melihat "installer generik" (installer generik dari tar.gz).

Arsip perakitan perlu diunduh dan dibongkar, tetapi kami akan menggabungkan kedua proses ini. Pembongkaran selesai dilakukan /tmp, URL menunjukkan tautan ke arsip yang dapat diunduh.

ikal:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

Secara default, ia curlmengirimkan data yang dimuat ke output standar, tetapi tidak memproses pengalihan dan kami menambahkan " ‑L", tetapi wgetsebaliknya: ia memproses pengalihan, tetapi menulis data ke file dan kami menempatkan " ‑O‑". Untuk tarmenunjukkan penggunaan gzipfilter dan direktori di mana pembongkaran akan dilakukan. Setelah menyelesaikan proses akan jenis direktori Firebird‑3.0.5.33220‑0.amd64dengan tiga file: install.sh, buildroot.tar.gzdan manifest.txt.

Menginstal Firebird

Selama persiapan awal, kami menyesuaikan nilai parameter sistem vm.max_map_count, memeriksa ketersediaan dan menginstal ICU, ncurses, dan pustaka tommath. Kami memastikan bahwa versi ncurses dan tommath ( libncures.so.5dan libtommath.so.0) benar dan menciptakan symlink yang diperlukan.

Sebenarnya pemasangannya sangat sederhana. Kami pergi ke direktori tempat arsip paket distribusi Firebird dibongkar, periksa dan, jika perlu, tetapkan bendera "yang dapat dieksekusi" untuk skrip install.sh:

chmod +x install.sh

jalankan skrip instalasi:

sudo ./install.sh

dengan menekan tombol Enter kami mengkonfirmasi awal instalasi, dan setelah menerima permintaan - masukkan kata sandi sysdba.

Script instalasi secara otomatis meluncurkan systemdunit firebird-superserver(arsitektur Firebird 3.0 default). Layanan Firebird akan bekerja dengan parameter default untuk server super: cache halaman 2048 halaman (per basis), buffer penyortiran 64 MB (dibagi-pakai), dan menghubungkan hanya klien dari versi ketiga. Lihat opsi firebird.conf:

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

Harap perhatikan bahwa nilai baru dari firebird.confhanya akan diaktifkan setelah layanan Firebird dimulai kembali.

Ketika memilih nilai parameter, harus dipertimbangkan bahwa ada tiga "konsumen" utama: cache halaman (untuk database), buffer penyortiran (dibagi), dan memori yang dialokasikan oleh server untuk koneksi klien. Anda hanya dapat mengelola dua yang pertama - jumlah memori untuk koneksi klien tergantung pada jumlah dan teks permintaan yang di-cache, rencana mereka, dan objek database yang terlibat dalam permintaan. Evaluasi memori koneksi klien dilakukan hanya secara empiris dan dapat berubah ketika aplikasi klien dan / atau objek database berubah.

Untuk server super pada host dengan jumlah memori kecil (hingga 12-16 GB), Anda tidak boleh mengalokasikan lebih dari sepertiga hingga seperempat dari total RAM untuk cache halaman dan mengurutkan buffer.

Jika jumlah database tidak diperbaiki dan dapat berubah, total memori cache halaman harus dibagi dengan jumlah maksimum database yang bisa di server. Ukuran cache halaman diatur dalam halaman dan harus secara terpisah dikonversi ke byte.

Untuk beralih ke arsitektur klasik, Anda harus setidaknya secara eksplisit menentukan ServerModedi firebird.conf, mengurangi cache halaman di tempat yang sama (tidak lebih dari 2K), mengurangi semacam penyangga (jumlah total yang diijinkan dari segala macam, dibagi dengan jumlah maksimum koneksi), menonaktifkan dan menghentikan unit firebird-superserver, mengaktifkan dan menjalankan unit firebird-classic.socket.

Menggunakan arsitektur superclassics di Firebird 3.0 tidak masuk akal: "keandalan" - seperti server super dan buffer sorting umum yang sama. Tidak ada cache halaman umum dan "kehilangan" untuk menyinkronkan koneksi yang berbeda di antara mereka adalah sama dengan yang klasik.

Harus diingat bahwa dalam Firebird 3.0 beberapa parameter (cache halaman, ukuran file kunci, tabel hash, dan beberapa lainnya) dapat diatur secara databases.confindividual untuk setiap database. Untuk superserver itu adalah berguna, misalnya, untuk menetapkan nilai kecil DefaultDbCachePagesdi firebird.confdan mengatur cache halaman individu untuk database yang diperlukan dalam databases.conf.

Ajukan pertanyaan tentang artikel di komentar, atau tulis surat ke alamat dukungan kami support@ibase.ru.

All Articles