Cách cài đặt Firebird 3.0 và 4.0 trên Linux
by Vasily Sidorov, Aug-24, 2022
Trong bài viết này, chúng tôi mô tả cách cài đặt Firebird phiên bản 3 và 4 trên các phiên bản Linux phổ biến: CentOS 7, Oracle Linux 7/8, Debian 9/10, Ubuntu18/20 và OpenSUSE15.0.
Để có được bản phân phối Firebird cho Linux, vui lòng sử dụng kho lưu trữ tar từ trang web chính thức của Firebird:
- Firebird 4: https://firebirdsql.org/en/firebird-4-0/
- Firebird 3: https://firebirdsql.org/en/firebird-3-0/
Chúng tôi giả định rằng việc cài đặt được thực hiện bằng root hoặc sudoer, và máy tính Linux có truy cập Internet.
Xin lưu ý rằng một số lệnh yêu cầu nhập liệu từ người dùng. Xin lưu ý rằng các dòng có dấu chấm phẩy (;) ở cuối nghĩa là lệnh có thể được chạy như một lệnh đơn dòng.
Ngoài ra, chúng tôi khuyên bạn nên đọc Ghi chú Phát hành cho phiên bản Firebird mà bạn định cài đặt.
Điều kiện tiên quyết
Yêu cầu thư viện hệ thống cho 4.0.1 và 3.0 trở nên giống nhau: liên kết tĩnh cho ncurses5 và tommath0 và động cho ICU.
Tùy thuộc vào bản phân phối, ncurses5 sẽ là thư viện hệ thống (RH7/Debian) hoặc có sẵn dưới dạng gói để tương thích ngược (RH8/Debian).
Thư viện tommath sẽ có phiên bản 0 hoặc phiên bản 1 (chúng tương thích nhị phân). Nếu không có tommath0, chúng tôi sẽ tạo symlink.
Các công cụ hệ thống cần thiết khác là tar và curl.
Chúng tôi cài đặt các gói này một cách rõ ràng để trình quản lý gói đánh dấu chúng là được kiểm soát thủ công và không tự động gỡ cài đặt chúng.
Cài đặt nhanh
1. Chỉ định số lượng maps tối đa.
Bước này là tùy chọn, nhưng rất được khuyến nghị cho hệ thống sản xuất:
Mở tệp /etc/sysctl.conf và thêm dòng sau:
vm.max_map_count = 256000
sau đó áp dụng
sysctl -p /etc/sysctl.conf
2. Cài đặt kho lưu trữ cần thiết cho libtommath
Cho CentOS 7
yum install epel-release;
Cho CentOS 8
dnf install epel-release;
Cho Oracle Linux 7
yum install oracle-epel-release-el7;
Cho Oracle Linux 8
dnf install oracle-epel-release-el8;
Đối với các bản phân phối khác, các gói cần thiết sẽ có sẵn trong các kho lưu trữ chính.
3. Cài đặt các gói và công cụ
CentOS 7 / Oracle Linux 7
yum makecache;
yum install ncurses libicu libtommath;
yum install curl tar;
CentOS 8 / Oracle Linux 8
dnf makecache;
dnf install ncurses-compat-libs libicu libtommath;
dnf install curl tar;
Debian 9/10, Ubuntu 18/20
apt-get install libncurses5 libtommath1;
apt-get install curl tar;
Open SUSE 15
zypper install libncurses5 libtommath1;
zypper install curl tar;
Phiên bản ICU có thể khác nhau:
Debian 9
apt-get install libicu57
Debian 10
apt-get install libicu63
Ubuntu 18
apt-get install libicu60
Ubuntu 20
apt-get install libicu66
OpenSUSE 15.0
zypper install libicu60_2
Trong các bản phân phối có libtommath1 (tất cả các bản trên ngoại trừ CentOS7 và Oracle Linux 7), cần tạo symlink libtommath.so.0:
TM=libtommath.so;
for LIB in `find /lib* /usr/lib* -name ${TM}.1`;
do ln -s ${TM}.1 `dirname ${LIB}`/${TM}.0;
done;
unset TM;
Tập lệnh cài đặt của Firebird 4.0.1 trở lên có thể tự động tạo symlink, nhưng đối với Firebird 3 thì cần tạo thủ công.
4. Tải xuống và cài đặt Firebird
Sau khi cài đặt các công cụ và thư viện cần thiết, chúng ta có thể tiến hành tải xuống, giải nén và chạy gói cài đặt.
Chúng tôi giả định rằng DOWNLOADLINK là một liên kết từ www.firebirdsql.org để tải xuống Firebird cần thiết.
curl -L DOWNLOADLINK | tar -zxC /tmp
cd /tmp/FIREBIRD_folder
sudo ./install.sh
Ở đây DOWNLOADLINK - liên kết đến tar.gz, và FIREBIRD_folder - Firebird-version.build-0.architecture
nơi bản phân phối sẽ được giải nén bằng lệnh tar -zxC /tmp
Đó là tất cả những gì cần thiết để cài đặt nhanh Firebird 3 hoặc 4 trên Linux.
Tùy chọn, bạn có thể tạo các tệp cấu hình tối ưu (firebird.conf và databases.conf) bằng Firebird Configuration Calculator.
Chi tiết hơn về cài đặt Firebird
Đối với những người muốn cấu hình cài đặt Firebird tốt hơn, chúng tôi cung cấp giải thích chi tiết về các bước trên.
Cấu hình vm.max_map_count
Firebird từ phiên bản 3 sử dụng hiệu quả kiến trúc SuperServer với việc cấp phát bộ nhớ động mạnh mẽ. Trong trường hợp tải cao và tần suất kết nối và ngắt kết nối cao, engine có thể gặp giới hạn phân mảnh bộ nhớ trên Linux, điều này sẽ được hiển thị dưới dạng lỗi 11 (ENOMEM) hoặc lỗi 12 (munmap) trong firebird.log.
Giới hạn phân mảnh bộ nhớ được kiểm soát bởi tham số vm.max_map_count, mặc định có giá trị 65536.
Để giữ cài đặt này sau khi khởi động lại máy chủ, hãy thêm dòng sau vào /etc/sysctl.conf
vm.max_map_count = 256000
Để áp dụng, hãy khởi động lại máy chủ hoặc chạy lệnh:
sudo sysctl -p /etc/sysctl.conf
Lập kế hoạch dung lượng đĩa
Nói chung, chúng tôi khuyên bạn nên phân bổ 3 phân vùng riêng biệt trên máy chủ có cơ sở dữ liệu Firebird: cho tệp tạm, cho cơ sở dữ liệu và cho bản sao lưu cục bộ.
Phân vùng cho tệp tạm
Các tệp tạm chính là tệp khóa, tệp sắp xếp, tệp cho bảng tạm toàn cục và blob, tệp với dữ liệu giám sát.
Theo mặc định, trên Linux, các tệp sắp xếp và tệp với dữ liệu cho bảng tạm toàn cục nằm trong /tmp, các tệp cho dữ liệu mon$ và bảng khóa nằm trong /tmp/firebird.
Làm thế nào để xác định kích thước phù hợp cho phân vùng với tệp tạm?
Về tiềm năng, các tệp sắp xếp và blob có thể khá lớn, vì vậy khuyến nghị thực tế là có phân vùng cho tệp tạm cho hệ thống sản xuất với số lượng người dùng hợp lý khoảng 30-40Gb. Để xác định kích thước phù hợp chính xác hơn, chúng tôi khuyên bạn nên theo dõi kích thước thực tế của các tệp tạm.
Một vấn đề nhỏ cho việc giám sát như vậy là các tệp sắp xếp được hủy liên kết ngay sau khi tạo, vì vậy không thể thấy chúng bằng lệnh “ls” thông thường. Để xem chúng, chúng ta cần kiểm tra các handle cho quá trình (và chúng sẽ được đánh dấu là đã xóa) bằng lệnh sau:
sudo ls -lhF /proc/`pgrep firebird`/fd
Kết quả của lệnh này, chúng ta sẽ thấy nội dung của thư mục giả /proc/…/fd/
Để xem thông tin về tệp cụ thể trong thư mục này, cần sử dụng lệnh:
sudo stat -L /proc/`pgrep firebird`/fd/NNNNN
trong đó NNNNN là descriptor của tệp.
Bạn có thể sử dụng lệnh này cho kiến trúc SuperServer và SuperClassic, khi engine chạy như một quá trình đơn. Tất nhiên, thay vì pgrep firebird, có thể chỉ định số handle của quá trình Firebird.
Phân vùng cho tệp cơ sở dữ liệu
Phân vùng cho tệp cơ sở dữ liệu phải đủ để lưu trữ tất cả các tệp cơ sở dữ liệu cộng với không gian trống bằng kích thước của cơ sở dữ liệu lớn nhất, cộng với dự trữ để tăng trưởng trong 2-3 năm tới.
Phân vùng cho bản sao lưu cục bộ
Tối thiểu, phân vùng cho bản sao lưu cục bộ phải đủ để lưu trữ tất cả các bản sao lưu cục bộ cộng với bản sao lưu của cơ sở dữ liệu lớn nhất.
Ngoài ra, để thực hiện khôi phục, trên phân vùng với bản sao lưu, chúng tôi khuyên bạn nên có thêm không gian trống, bằng kích thước cơ sở dữ liệu lớn nhất.
Đọc thêm về các bản sao lưu
Tạo người dùng firebird (tùy chọn)
Tập lệnh cài đặt tạo, nếu chưa tồn tại, người dùng và nhóm tên “firebird” để thực hiện tất cả hoạt động của Firebird bằng người dùng này (đây là thực hành tốt nhất cho hệ thống Linux).
Điều đó cũng có nghĩa là các tệp cơ sở dữ liệu và thư mục nơi cơ sở dữ liệu và bản sao lưu được đặt phải có quyền sở hữu hoặc quyền cho người dùng này.
Đôi khi việc tạo người dùng và nhóm “firebird” trước khi cài đặt là hợp lý:
groupadd firebird &&
useradd -M -b /opt -s /sbin/nologin \
-g firebird -u UID firebird
Đối với người dùng firebird, chúng tôi không tạo thư mục chính (công tắc -M), chỉ chỉ định thư mục cơ sở (-b).
Shell nologin với công tắc -s ngăn đăng nhập tiêu chuẩn vào máy chủ.
Cài đặt các gói cần thiết
Firebird 3.0 và 4.0 phụ thuộc vào các thư viện ncurses (libncurses.so.5), ICU (không có liên kết đến phiên bản, và chúng không được hiển thị trong đầu ra ldd), và tommath (libtommath.so.0).
Tùy thuộc vào bản phân phối Linux, chúng ta cần sử dụng tên thư viện có hoặc không có phiên bản. Các lệnh sao chép-dán thực tế được hiển thị ở trên, và dưới đây chúng tôi mô tả chúng.
CentOS và Oracle Linux
Phiên bản 7 chứa các gói cần thiết theo mặc định, phiên bản 8 yêu cầu cài đặt ncurses-compat-libs và tạo symlink libtommath.so.0.
Debian, Ubuntu và OpenSUSE
Trong phiên bản Debian 9 và 10, Ubuntu 18 và 20, OpenSUSE 15, chúng ta phải cài đặt libncurses5 và libtommath1, và để xác định phiên bản ICU, chúng ta có thể sử dụng tìm kiếm cho tên không đầy đủ:
trong Ubuntu
apt-cache search libicu5
trong OpenSUSE 15
zypper search libicu6
Chi tiết cài đặt Firebird
Trước khi cài đặt, chúng ta đã tăng tham số hệ thống vm.max_map_count, cài đặt các thư viện ICU, ncurses và tommath. Sau đó, chúng ta đã kiểm tra rằng chúng ta có các phiên bản chính xác của ncurses và tommath (libncures.so.5 và libtommath.so.0) hoặc đã tạo các symlink cần thiết.
Tùy chọn, chúng ta có thể tạo người dùng và nhóm firebird.
Sau đó, chúng ta có thể cài đặt Firebird, để làm điều này, chúng ta đi đến thư mục nơi gói cài đặt được giải nén và bắt đầu cài đặt:
./install.sh
nhấn Enter để xác nhận cài đặt, và khi được nhắc, chỉ định mật khẩu cho SYSDBA.
Ban đầu Firebird sẽ được cài đặt với tệp cấu hình mặc định. Cấu hình mặc định chạy với kiến trúc SuperServer với các giá trị khiêm tốn: cache (DefaultDbCachePages, còn gọi là Page buffers) cho mỗi cơ sở dữ liệu được đặt là 2048, bộ đệm cho sắp xếp (TempCacheLimit) là 64M (cho máy chủ trong v3 và cho mỗi cơ sở dữ liệu trong v4).
Để xem các tham số không được chú thích của firebird.conf, bạn có thể sử dụng lệnh sau:
grep -v ^# firebird.conf | grep -v ^$
Nếu bạn sẽ tạo tệp cấu hình tối ưu bằng Firebird Configuration Calculator hoặc thay đổi các tham số thủ công, xin lưu ý rằng các thay đổi sẽ được áp dụng sau khi khởi động lại dịch vụ Firebird (trong trường hợp SuperServer và SuperClassic, trong trường hợp Classic cần khởi động lại tất cả các quá trình Firebird).
Xin lưu ý rằng kể từ Firebird 3, có các đơn vị systemd riêng biệt cho SuperServer, SuperClassic và Classic.