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

Pada artikel ini, kami akan menjelaskan langkah-langkah minimum yang diperlukan untuk penginstalan DBMS Firebird versi 3.0 yang optimal pada distribusi Linux baru. CentOS 8 dan Ubuntu 19 dipilih sebagai contoh.

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

Untuk yang paling tidak sabar - segera berperang:

Instalasi cepat

Mengedit 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 ССЫЛКА и КАТАЛОГ menunjukkan tautan dari situs resmi proyek Firebird untuk mengunduh distribusi dan direktori tempat distribusi akan dibongkar selama pengunduhan.
Saat ini (Maret 2020), rilis Firebird 3.0.5 relevan (inilah linknya untuk versi 64-bit).

8 CentOS

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

Instalasi DBMS Firebird yang sebenarnya:

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

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

Bagian utama

Pembukaan kecil

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

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

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

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

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

Sortir file "dihapus" (unlink) segera setelah pembuatan, sehingga tidak dapat "dilihat" dalam daftar direktori - hanya dalam daftar pegangan proses (diberi label sebagai deleted):

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

Dalam daftar direktori semu /proc/…/fd/ symlink ditampilkan, dan informasi sebenarnya tentang file tersebut diberikan oleh:

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

dimana НОМЕР – deskriptor (deskriptor) dari file yang diminati.

Alih-alih menelepon "pgrep исполняемый-файл» Anda dapat langsung mengganti pengidentifikasi proses yang diminati.

File sementara bisa sangat besar, jadi untuk /tmp disarankan untuk mengalokasikan setidaknya 20-30 GB. Ingatlah bahwa ukuran file pengurutan hanya bergantung pada jumlah data yang diurutkan secara eksplisit atau implisit dalam permintaan, dan satu pengguna dapat "membuat" gigabyte file sementara.

Bagian untuk file database harus berisi file dari semua database. ditambah setidaknya salinan file database terbesar. Perlu untuk memperhitungkan pertumbuhan file database di masa depan untuk beberapa tahun ke depan.

Bagian pencadangan lokal harus berisi setidaknya satu arsip cadangan dari semua basis data ditambah cadangan dari basis data terbesar. Diinginkan bahwa bagian ini juga memiliki tempat untuk memulihkan database terbesar. Pertumbuhan cadangan dan arsip cadangan di masa mendatang selama beberapa tahun harus diperhitungkan.

Persiapan awal

Server DBMS Firebird 3.0 secara dinamis mengalokasikan dan membebaskan memori sistem, yang dapat menyebabkan fragmentasinya. Misalnya, setelah sejumlah besar pengguna terputus dari server super pada saat yang sama, kesalahan dapat terjadi selama koneksi baru.

Fragmentasi memori dikendalikan oleh parameter sistem vm.max_map_count, standarnya adalah 64K. Disarankan untuk melipatgandakan nilainya:

sudo sysctl vm.max_map_count=256000

Untuk mengatur nilai baru saat sistem di-boot ulang, tambahkan ke file /etc/sysctl.conf garis:

vm.max_map_count = 256000

Dianjurkan untuk memberikan komentar agar alasan perubahan parameter ini jelas. Anda dapat mengedit file terlebih dahulu dan kemudian menerapkan pengaturan yang disimpan di dalamnya:

sudo sysctl -p /etc/sysctl.conf

Menginstal paket yang diperlukan

Firebird 3.0 Linux DBMS yang dapat dieksekusi bergantung pada pustaka ncurses (libncurses.so.5), ICU (tanpa referensi ke versi dan tanpa tampilan di output ldd) dan tomat (libtommath.so.0). Utilitas diperlukan untuk mengunduh dan membongkar arsip perakitan gzip, tar и curl или wget. versi ICU, gzip, tar и curl/wget - tidak signifikan.

Bekerja dengan paket bergantung pada sistem dan pengelola paket yang digunakan dalam sistem, jadi kami akan mempertimbangkannya satu per satu.

8 CentOS

CentOS 8 menggunakan manajer paket baru − dnf dan itu "secara transparan" dipanggil sesuai perintah yum. Karena untuk tujuan kita tidak ada perbedaan di antara mereka - akan ada contoh yum.

Perbarui cache metadata: sudo yum makecache

Paket libtomath berada dalam repositori E(xtra)P(ackages for)E(nterprise)L(inux) yang terpisah, jadi pastikan sudah disertakan:

yum -C repolist

Opsi hanya cache (-C или --cache-only) digunakan untuk menghilangkan pemeriksaan dan unduhan yang tidak perlu, membuat yum berjalan lebih cepat. Jika tidak ada repositori epel dalam daftar, instal dan perbarui cache metadata:

sudo yum install epel-release &&
sudo yum makecache

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

Jika ada masalah saat memuat informasi meta repositori dari https-resources, maka edit file tersebut /etc/yum.repos.d/epel.repo, mengganti https:// pada http:// dan ulangi perintah pembaruan cache.

Periksa status paket yang diperlukan (perintahnya kompleks, dalam contoh keluaran 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, gzip и ncurses ditempatkan di pseudo-repository installer (anaconda), dan tar – Dikecualikan dari instalasi sistem minimum. Versi utama libncurses и libtommath lebih dari yang dibutuhkan: masing-masing 6 dan 1 bukannya 5 dan 0. Jika paket yang sama terinstal dan tersedia, pembaruan telah dirilis untuknya. Instal paket yang hilang:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Utilitas manajemen paket apt, apt‑get и apt‑cache. Yang pertama dirancang untuk pekerjaan interaktif, dan dua yang terakhir untuk digunakan dalam skrip. Nama paketnya sedikit berbeda dan menyertakan versinya.

Periksa status paket yang diperlukan (perintah dilipat, keluaran sampel dipersingkat dan paket 32-bit disaring):

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 dengan tanda kurung siku installed/upgradable – terpasang. Tersedia tetapi tidak diinstal ncurses5bukannya curl terpasang wget. Instal paket yang hilang:

sudo apt‑get install 
libncurses5 libtommath1

Membuat symlink

Sejak libtommath.so.1 и libncurses.so.6 kompatibel dengan mundur libtommath.so.0 и libncurses.so.5, maka untuk Firebird cukup membuat symlink ke versi pustaka yang tersedia.

Temukan 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

Kami membuat 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

Kami memeriksa hasilnya (perintahnya rumit, contoh keluaran dipersingkat):

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 kit distribusi DBMS Firebird.

Situs web resmi proyek Firebird (firebirdsql.org) menerbitkan tautan ke distribusi rilis "resmi" dan build "harian" (snapshot build).

Rilis resmi untuk Linux tersedia sebagai paket arsip (tar.gz) dan deb/rpm, sedangkan build hanya tersedia sebagai arsip. Kami akan mempertimbangkan "pemasang umum" (pemasang umum dari tar.gz).

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

keriting:

curl -L URL | tar -zxC /tmp

dapatkan:

wget -O– URL | tar -zxC /tmp

По умолчанию curl mengirimkan data yang diunduh ke stdout, tetapi tidak menangani pengalihan, jadi kami menambahkan "‑L", A wget, sebaliknya: menangani pengalihan, tetapi menulis data ke file dan kami menempatkan "‑O‑". Untuk tar menunjukkan penggunaan gzip-filter dan direktori tempat pembongkaran akan dilakukan. Setelah proses selesai, direktori formulir akan muncul Firebird‑3.0.5.33220‑0.amd64 dengan tiga file: install.sh, buildroot.tar.gz и manifest.txt.

Menginstal Firebird

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

Instalasi sebenarnya sangat sederhana. Buka direktori tempat arsip distribusi Firebird dibongkar, centang dan, jika perlu, setel tanda "dapat dieksekusi" untuk skrip install.sh:

chmod +x install.sh

jalankan skrip instalasi:

sudo ./install.sh

dengan menekan tombol Enter, kami mengonfirmasi awal penginstalan, dan setelah menerima permintaan, kami memasukkan kata sandi sysdba.

Skrip instalasi secara otomatis berjalan systemd-satuan firebird-superserver (arsitektur Firebird 3.0 bawaan). Layanan Firebird akan berjalan dengan pengaturan default untuk server super: cache halaman 2048 (per basis), buffer pengurutan 64 MB (dibagi), dan koneksi hanya untuk klien versi XNUMX. Lihat pengaturan firebird.conf:

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

Perhatikan bahwa nilai baru dari firebird.conf akan diaktifkan hanya setelah memulai ulang layanan Firebird.

Saat memilih nilai parameter, perlu diperhatikan bahwa ada tiga "konsumen" utama: cache halaman (untuk database), buffer pengurutan (dibagi) dan memori yang dialokasikan oleh server untuk koneksi klien. Anda hanya dapat mengelola dua yang pertama - jumlah memori untuk koneksi klien bergantung pada jumlah dan teks permintaan yang di-cache, paket mereka, dan objek database yang terlibat dalam permintaan. Estimasi memori koneksi klien dilakukan hanya secara empiris dan dapat berubah ketika aplikasi klien dan/atau objek database berubah.

Untuk server super di 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 buffer pengurutan.

Jika jumlah basis tidak tetap dan dapat berubah, jumlah total memori cache halaman harus dibagi dengan jumlah maksimum basis yang dapat ada di server. Ukuran cache halaman ditentukan dalam halaman dan harus dikonversi ke byte secara terpisah.

Untuk beralih ke arsitektur klasik, Anda setidaknya harus menentukan secara eksplisit ServerMode в firebird.conf, kurangi cache halaman di tempat yang sama (tidak lebih dari 2K), kurangi buffer pengurutan (total volume yang diizinkan untuk semua jenis dibagi dengan jumlah koneksi maksimum), nonaktifkan dan hentikan unit firebird-superserver, aktifkan dan jalankan unit firebird-classic.socket.

Menggunakan arsitektur superklasik di Firebird 3.0 tidak masuk akal: "keandalan" seperti server super dan jenis buffer yang sama. Tidak ada cache halaman umum dan "kerugian" untuk menyinkronkan koneksi yang berbeda satu sama lain sama seperti di klasik.

Harus diingat bahwa di Firebird 3.0 beberapa parameter (cache halaman, ukuran file kunci, tabel hash, dan beberapa lainnya) dapat diatur di databases.conf secara individual untuk setiap pangkalan. Untuk server super, berguna, misalnya, menetapkan nilai kecil DefaultDbCachePages в firebird.conf dan instal cache halaman individual untuk database yang diperlukan di databases.conf.

Ajukan pertanyaan tentang artikel di komentar, atau tulis surat ke alamat dukungan kami [email dilindungi].

Sumber: www.habr.com

Tambah komentar