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.conf
dengan 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 8sudo 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 19sudo 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 utamaPembukaan kecilDiasumsikan 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.PerencanaanDianjurkan 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 /tmp
disarankan 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 awalServer 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.conf
baris 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 diperlukanFirebird 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
, tar
dan curl
atau wget
. Versi ICU gzip
,, tar
dan 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 8CentOS 8 menggunakan manajer paket baru - dnf
dan "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" ( -C
atau --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
, gzip
dan ncurses
terletak di pseudo-repositori installer ( anaconda
), dan tar
- dikecualikan dari instalasi minimum sistem. Versi utama libncurses
dan libtommath
lebih 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 19Utilities dirancang untuk manajemen paket apt
, apt‑get
dan 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 curl
diinstal wget
. Instal paket yang hilang:sudo apt‑get install \
libncurses5 libtommath1
Membuat symlinkKarena libtommath.so.1
mereka libncurses.so.6
kompatibel dengan libtommath.so.0
dan 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 curl
mengirimkan data yang dimuat ke output standar, tetapi tidak memproses pengalihan dan kami menambahkan " ‑L
", tetapi wget
sebaliknya: ia memproses pengalihan, tetapi menulis data ke file dan kami menempatkan " ‑O‑
". Untuk tar
menunjukkan penggunaan gzip
filter dan direktori di mana pembongkaran akan dilakukan. Setelah menyelesaikan proses akan jenis direktori Firebird‑3.0.5.33220‑0.amd64
dengan tiga file: install.sh
, buildroot.tar.gz
dan manifest.txt
.Menginstal FirebirdSelama 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.5
dan 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 systemd
unit 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.conf
hanya 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 ServerMode
di 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.conf
individual untuk setiap database. Untuk superserver itu adalah berguna, misalnya, untuk menetapkan nilai kecil DefaultDbCachePages
di firebird.conf
dan 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.