Cài đặt Firebird 3 trên các phiên bản Linux hiện đại: CentOS 8 và Ubuntu 19
(C) Basil Sidorov, IBSurgeon, 22-May-2020
Bài viết này dành cho việc cài đặt nhanh Firebird 3.0 trên các bản phân phối Linux mới: CentOS 8 và Ubuntu 19 (cũng hoạt động trên 18).
Phần đầu tiên là hướng dẫn cài đặt nhanh để cài Firebird 3.0 nhanh nhất có thể, không cần chi tiết. Phần thứ hai mô tả chi tiết.
Cài đặt nhanh Firebird 3 trên CentOS 8 và Ubuntu 19
- Thêm dòng sau vào tệp /etc/sysctl.conf:
vm.max_map_count = 256000
- Lưu sysctl.conf và áp dụng các cài đặt mới:
sudo sysctl -p /etc/sysctl.conf
Các hướng dẫn tiếp theo hơi khác nhau cho CentOS 8 và Ubuntu 19.
Xin lưu ý rằng chúng tôi đã sử dụng liên kết trực tiếp đến bản phân phối phát hành mới nhất của Firebird 3.0 từ FirebirdSQL.org, hiện tại (tháng 5 năm 2020), đó là 3.0.5, và đây là liên kết cho phiên bản 64-bit:
https://github.com/FirebirdSQL/firebird/releases/download/R3.0.5/Firebird-3.0.5.33220-0.amd64.tar.gz
Trong tương lai, khi 3.0.6, v.v. xuất hiện, bạn sẽ cần sử dụng liên kết chính xác đến bản phát hành mới - nó sẽ được công bố trên www.firebirdsql.org.
- Cài đặt các gói
CentOS8
sudo yum -y install epel-release sudo yum -y makecache sudo yum -y install libicu libtommath tar sudo ln -s libncurses.so.6 /usr/lib64/libncurses.so.5 sudo ln -s libtommath.so.1 /usr/lib64/libtommath.so.0
sudo ln -s ln -s libncurses.so.5 /usr/lib64/libncurses.so.5
curl -L https://github.com/FirebirdSQL/firebird/releases/download/R3_0_5/Firebird-3.0.5.33220-0.amd64.tar.gz|tar -zxC /tmp
Ubuntu 19
sudo apt-get -y install libncurses5 libtommath1 sudo ln -s libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0 wget -O- https://github.com/FirebirdSQL/firebird/releases/download/R3_0_5/Firebird-3.0.5.33220-0.amd64.tar.gz|tar -zxC /tmp
Kết quả là, bạn sẽ có tất cả các tệp cài đặt Firebird sẵn sàng trong /tmp/firebird:
/tmp/Firebird-3.0.5.33220-0.amd64# ll
total 8484
drwxr-xr-x 2 root root 4096 Jan 9 13:13 ./
drwxrwxrwt 28 root root 4096 May 22 17:20 ../
-rw-r--r-- 1 root root 8615663 Jan 9 13:13 buildroot.tar.gz
-rwxr-xr-x 1 root root 44096 Jan 9 13:13 install.sh*
-rw-r--r-- 1 root root 14967 Jan 9 13:13 manifest.txt
- Và sau đó, cài đặt Firebird:
cd /tmp/Firebird-3.0.5.33220-0.amd64 sudo ./install.sh
sau đó, kiểm tra rằng Firebird đang chạy - lệnh dưới đây sẽ hiển thị tất cả các tiến trình liên quan đến Firebird hoặc chạy dưới người dùng firebird:
ps aux | grep firebird
Đó là tất cả nếu bạn chỉ cần cài đặt Firebird 3.0.
Nếu bạn muốn biết các lệnh trên có nghĩa là gì, hãy đọc tiếp!
Phần chính: chi tiết cài đặt Firebird 3 trên Linux
Trong bài viết này, chúng tôi giả định rằng hệ điều hành đã được cài đặt ở phiên bản tối thiểu và bạn đã có quyền truy cập vào các kho lưu trữ công khai hoặc các bản sao cục bộ của chúng.
Lập kế hoạch phân bổ không gian
Trên máy chủ dành cho việc phục vụ cơ sở dữ liệu Firebird, chúng tôi khuyên bạn nên phân bổ các ổ đĩa riêng cho tệp tạm thời (/tmp), tệp cơ sở dữ liệu và bản sao lưu cục bộ.
Ổ đĩa cho tệp tạm thời
Các tệp tạm thời của Firebird bao gồm tệp khóa, tệp sắp xếp, tệp để “vật chất hóa” bảng tạm thời toàn cục (GTT) và bảng giám sát. Các tệp sắp xếp và tệp GTT nằm trong /tmp, các tệp mon$- và tệp khóa nằm trong /tmp/firebird.
Các tệp sắp xếp được hủy liên kết ngay sau khi tạo, đó là lý do tại sao bạn không thể thấy chúng trong thư mục (không giống như Windows) bằng lệnh ls.
Để xem các tệp này, bạn cần yêu cầu các bộ mô tả tệp của tiến trình Firebird (và chúng được đánh dấu là đã xóa):
sudo ls -lhF /proc/`pgrep firebird`/fd
Để biết chi tiết về một tệp sắp xếp cụ thể, hãy chạy lệnh
sudo stat -L /proc/`pgrep firebird`/fd/NUMBER
trong đó NUMBER là bộ mô tả tệp của tệp.
Các tệp tạm thời có thể lớn, vì vậy nên phân bổ 20-30Gb cho /tmp.
Xin lưu ý rằng kích thước sắp xếp không phụ thuộc vào kích thước cơ sở dữ liệu: một số truy vấn sai với tích trực tiếp có thể dễ dàng tạo ra tệp sắp xếp 100Gb từ cơ sở dữ liệu 3Mb.
Ổ đĩa cho tệp cơ sở dữ liệu
Ổ đĩa cho tệp cơ sở dữ liệu phải đủ lớn để chứa tất cả các tệp cơ sở dữ liệu cộng với, tối thiểu, kích thước của cơ sở dữ liệu lớn nhất, cho các thao tác tại chỗ có thể.
Ngoài ra, hãy nhớ rằng cơ sở dữ liệu phát triển theo thời gian và dành một số không gian trống cho chúng.
Rất khuyến khích đặt ổ đĩa cho các tệp cơ sở dữ liệu trên ổ đĩa/SAN/phần cứng nhanh nhất bạn có, với khả năng I/O ngẫu nhiên cao nhất.
Ổ đĩa cho tệp sao lưu cục bộ
Ổ đĩa cho tệp sao lưu cục bộ phải đủ lớn để có bản sao lưu cho tất cả cơ sở dữ liệu cộng với kích thước cho tệp cơ sở dữ liệu lớn nhất (không phải bản sao lưu - nó dành cho khả năng khôi phục thử nghiệm). Tất nhiên, hãy nhớ về sự phát triển của các bản sao lưu cơ sở dữ liệu. Ổ đĩa cho tệp sao lưu cục bộ có thể nằm trên các ổ đĩa tương đối chậm. Các tệp sao lưu Firebird có cấu trúc tuyến tính, vì vậy đối với ổ đĩa sao lưu, chỉ cần có tốc độ tuần tự cao là đủ.
Chuẩn bị
Công cụ Firebird phân bổ và giải phóng bộ nhớ động, điều này có thể dẫn đến phân mảnh bộ nhớ.
Ví dụ, điều này có thể xảy ra sau khi ngắt kết nối nhiều người dùng khỏi phiên bản Firebird SuperServer. Phân mảnh bộ nhớ được kiểm soát bởi tham số hệ thống v m.max_map_count, có giá trị mặc định là 65K. Nên tăng nó lên ít nhất 4 lần và làm cho cài đặt này vĩnh viễn.
Thêm dòng sau vào /etc/sysctl.conf:
vm.max_map_count = 256000
và áp dụng nó
sudo sysctl -p /etc/sysctl.conf
Cài đặt các gói cần thiết
Firebird 3 phụ thuộc vào một số gói Linux: ncurses, ICU, tommath. Ngoài ra, chúng ta cần các tiện ích gzip, tar và curl hoặc wget.
CentOS 8
CentOS sử dụng trình quản lý gói mới dnf, được gọi một cách minh bạch bởi yum. Chúng tôi thích yum, vì vậy hãy sử dụng yum. Đầu tiên, làm mới bộ nhớ cache siêu dữ liệu:
sudo yum makecache
Gói libtommath nằm trong kho lưu trữ riêng EPEL (E(xtra)P(ackages for)E(nterprise)L(inux)), vì vậy chúng ta cần kiểm tra xem nó đã được kích hoạt chưa:
yum -C repolist
Tùy chọn -C (–cache-only) làm cho yum chỉ sử dụng bộ nhớ cache.
Nếu bạn không thấy epel-repository trong kết quả của yum -C repolist, hãy cài đặt nó:
sudo yum install epel-release && sudo yum makecache
Trong trường hợp có vấn đề, hãy chỉnh sửa tệp /etc/yum.repos.d/epel.repo và thay thế https:// bằng http://, rồi thử yum makecache lại.
Sau đó, hãy kiểm tra rằng chúng ta có tất cả các gói cần thiết (64-bit trong ví dụ):
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
Cài đặt các gói bị thiếu trên CentOS 8
sudo yum install libicu libtommath tar
Ubuntu 19
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]
Cài đặt các gói bị thiếu trên Ubuntu 19:
sudo apt‑get install libncurses5 libtommath1
Tạo các liên kết tượng trưng
Libtommath.so.1 và libncurses.so.6 tương thích với libtommath.so.0 và libncurses.so.5, sẽ đủ cho Firebird để tạo các liên kết tượng trưng đến các phiên bản thư viện hiện có.
Đầu tiên, hãy tìm libtommath.so.1 (libncurses.so.? nằm trong cùng thư mục):
find /usr -name libtommath.so.1
Trên CentOS8, nó nằm trong:
/usr/lib64/libtommath.so.1
Trên Ubuntu 19:
/usr/lib/x86_64-linux-gnu/libtommath.so.1
Hãy tạo các liên kết tượng trưng
CentOS8
sudo ln -s libtommath.so.1 /usr/lib64/libtommath.so.0 sudo ln -s libncurses.so.6 /usr/lib64/libncurses.so.5
Ubuntu 19
sudo ln -s libtommath.so.1 /usr/lib/x86_64-linux-gnu/libtommath.so.0
để kiểm tra kết quả:
ls -lhF $(dirname `find /usr -name libtommath.so.1`) | grep "lib\(ncurses\|tommath\)\.so\."
trên CentOS8, nó cho kết quả:
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*
Trên Ubuntu, nó cho kết quả:
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
Lấy bản phân phối phát hành Firebird 3.0
Các bản phát hành Firebird Linux có sẵn trên www.firebirdsql.org dưới dạng kho lưu trữ tar.gz. Giả sử rằng URL là liên kết tải xuống đến kho lưu trữ tar.gz phát hành Firebird. Chúng ta cần tải xuống và giải nén kho lưu trữ, vì điều này chúng ta có thể sử dụng curl hoặc wget.
curl
curl -L URL | tar -zxC /tmp
wget
wget -O- URL | tar -zxC /tmp
Kết quả là, sẽ có thư mục /tmp/Firebird‑3.0.5.33220‑0.amd64 được tạo với 3 tệp: install.sh, buildroot.tar.gz và manifest.txt.
Cài đặt Firebird
Như các điều kiện tiên quyết, chúng ta đã đặt vm.max_map_count, kiểm tra và cài đặt ICU, ncurses và tommath, và tạo các liên kết tượng trưng.
Sau đó, bước cuối cùng rất dễ dàng - chạy
sudo ./install.sh
Tập lệnh này khởi động đơn vị hệ thống firebird-superserver và Firebird sẵn sàng hoạt động.
Tệp cấu hình và tối ưu hóa của nó
Xin lưu ý rằng tệp cấu hình Firebird mặc định firebird.conf được cấu hình một cách rất khiêm tốn. Bạn có thể kiểm tra nội dung của firebird.conf (các dòng không bị comment) bằng lệnh:
grep -v ^# firebird.conf | grep -v ^$
Đối với firebird.conf mặc định, lệnh trên sẽ không trả về gì, điều đó có nghĩa là tất cả các giá trị đều là mặc định.
Nếu bạn đang cấu hình hệ thống sản xuất, hãy cân nhắc sử dụng các tệp cấu hình Firebird được tối ưu hóa: /vi/optimized-firebird-configuration/
Câu hỏi thường gặp #1
Câu hỏi thường gặp là “tại sao không chỉ đơn giản sử dụng kho lưu trữ và cài đặt Firebird bằng yum hoặc apt?”. Tất nhiên, điều đó là có thể, nhưng có 2 lý do lớn:
-
kho lưu trữ có thể chứa phiên bản cũ (tức là bản phát hành phụ trước đó),
-
chúng tôi thích kiểm soát môi trường để đảm bảo rằng mọi thứ được cài đặt và cấu hình chính xác.
Ngoài ra, chúng tôi thích cài đặt vào /opt, dễ dàng hơn cho các tập lệnh đa nền tảng và thực hành quản trị tốt.
Liên hệ
Vui lòng gửi câu hỏi, đề xuất và các lỗi có thể có đến [email protected]