Trang này được dịch bằng máy. Đọc bản gốc tiếng Anh. English

Thư viện IBSurgeon

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:

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:

Code
vm.max_map_count = 256000

sau đó áp dụng

Code
sysctl -p /etc/sysctl.conf

2. Cài đặt kho lưu trữ cần thiết cho libtommath

Cho CentOS 7

Code
yum install epel-release;

Cho CentOS 8

Code
dnf install epel-release;

Cho Oracle Linux 7

Code
yum install oracle-epel-release-el7;

Cho Oracle Linux 8

Code
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

Code
yum makecache;
yum install ncurses libicu libtommath;
yum install curl tar;

CentOS 8 / Oracle Linux 8

Code
dnf makecache;
dnf install ncurses-compat-libs libicu libtommath;
dnf install curl tar;

Debian 9/10, Ubuntu 18/20

Code
apt-get install libncurses5 libtommath1;
apt-get install curl tar;

Open SUSE 15

Code
zypper install libncurses5 libtommath1;
zypper install curl tar;

Phiên bản ICU có thể khác nhau:

Debian 9

Code
apt-get install libicu57

Debian 10

Code
apt-get install libicu63

Ubuntu 18

Code
apt-get install libicu60

Ubuntu 20

Code
apt-get install libicu66

OpenSUSE 15.0

Code
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:

Code
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.

Code
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

Code
vm.max_map_count = 256000

Để áp dụng, hãy khởi động lại máy chủ hoặc chạy lệnh:

Code
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:

Code
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:

Code
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ý:

Code
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

Code
apt-cache search libicu5

trong OpenSUSE 15

Code
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:

Code
./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:

Code
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.