Cài đặt Firebird 3 trên các phiên bản Linux hiện đại: CentOS8 và Ubuntu 19

Trong bài viết này, chúng tôi sẽ mô tả tập hợp hành động tối thiểu cần thiết để cài đặt tối ưu Firebird DBMS phiên bản 3.0 trên các bản phân phối Linux mới. CentOS 8 và Ubuntu 19 được chọn làm ví dụ.

Để “cung cấp” bản phân phối Firebird đến hệ thống đích, trong hướng dẫn này, tùy chọn tải xuống kho lưu trữ tar.gz được chọn bằng liên kết từ trang web chính thức của dự án (firebirdsql.org).

Đối với những người thiếu kiên nhẫn nhất, hãy lao thẳng vào trận chiến:

Cài đặt nhanh

chỉnh sửa tập tin /etc/sysctl.confbằng cách thêm dòng:

vm.max_map_count = 256000

Lưu tệp và áp dụng cài đặt:

sudo sysctl -p /etc/sysctl.conf

Các hướng dẫn khác sẽ khác nhau đối với CentOS 8 và Ubuntu 19, nhưng ССЫЛКА и КАТАЛОГ chỉ ra liên kết từ trang web chính thức của dự án Firebird để tải xuống bản phân phối và thư mục mà bản phân phối sẽ được giải nén trong quá trình tải xuống.
Hiện tại (tháng 2020 năm 3.0.5) bản phát hành hiện tại là Firebird XNUMX (đây là đường dẫn sang phiên bản 64-bit).

CentOS 8

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

Quá trình cài đặt thực tế của Firebird DBMS:

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

Nếu bạn muốn hiểu rõ hơn những hành động này làm gì, hãy đọc tiếp.

Phần chính

Lời mở đầu ngắn

Giả định rằng HĐH đã được cài đặt ở phiên bản tối thiểu và quyền truy cập vào các kho lưu trữ công cộng hoặc các bản sao cục bộ của chúng đã được định cấu hình.

Giả định rằng người đọc có kiến ​​thức cơ bản về Linux và Firebird DBMS.

Lập kế hoạch

Trên máy chủ DBMS, nên phân bổ các phần riêng biệt cho các tệp tạm thời (/tmp), tệp cơ sở dữ liệu và bản sao lưu cục bộ.

Các tệp tạm thời bao gồm các tệp khóa, các tệp sắp xếp, các tệp “hiện thực hóa” của các bảng tạm thời toàn cầu (GTT) và các bảng giám sát. Các tập tin để sắp xếp và các bảng tạm thời toàn cục được đặt tại /tmp, tập tin bảng mon$ và tập tin khóa – trong /tmp/firebird.

Sắp xếp các tập tin bị “xóa” (unlink) ngay sau khi tạo, do đó chúng không thể "nhìn thấy" trong danh sách thư mục - chỉ trong danh sách các thẻ điều khiển quy trình (được đánh dấu là deleted):

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

Trong danh sách thư mục giả /proc/…/fd/ các liên kết tượng trưng được hiển thị và thông tin thực tế về tệp được cung cấp bởi:

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

đâu НОМЕР – bộ mô tả (descriptor) của file quan tâm.

Thay vì gọi "pgrep исполняемый-файл"Bạn có thể thay thế ngay mã định danh của quá trình quan tâm.

Các tập tin tạm thời có thể rất lớn, vì vậy /tmp Nên phân bổ ít nhất 20-30 GB. Cần lưu ý rằng kích thước của việc sắp xếp tệp chỉ phụ thuộc vào lượng dữ liệu được sắp xếp rõ ràng hoặc ngầm định trong yêu cầu và một người dùng có thể “tạo” hàng gigabyte tệp tạm thời.

Phần dành cho tệp cơ sở dữ liệu phải chứa tất cả các tệp cơ sở dữ liệu. cộng với tối thiểu một bản sao của tệp cơ sở dữ liệu lớn nhất. Cần phải tính đến sự phát triển của các tệp cơ sở dữ liệu trong tương lai trong vài năm tới.

Phần sao lưu cục bộ phải chứa ít nhất một kho lưu trữ sao lưu của tất cả các cơ sở dữ liệu cộng với bản sao lưu của cơ sở dữ liệu lớn nhất. Điều mong muốn là phần này cũng chứa không gian để khôi phục cơ sở dữ liệu lớn nhất. Cần tính đến sự phát triển của các bản sao lưu và kho lưu trữ sao lưu trong tương lai trong vài năm.

Chuẩn bị sơ bộ

Máy chủ DBMS Firebird 3.0 tự động phân bổ và giải phóng bộ nhớ hệ thống, điều này có thể dẫn đến sự phân mảnh của nó. Ví dụ: sau khi một số lượng lớn người dùng bị ngắt kết nối khỏi siêu máy chủ cùng một lúc, lỗi có thể xảy ra khi tạo kết nối mới.

Sự phân mảnh bộ nhớ được điều khiển bởi một tham số hệ thống vm.max_map_count, mặc định là 64K. Nên tăng giá trị của nó lên bốn lần:

sudo sysctl vm.max_map_count=256000

Để giá trị mới được đặt khi hệ thống khởi động lại, hãy thêm vào tệp /etc/sysctl.conf đường kẻ:

vm.max_map_count = 256000

Nên đưa ra nhận xét để làm rõ lý do thay đổi thông số này. Trước tiên, bạn có thể chỉnh sửa tệp rồi áp dụng các cài đặt được lưu trong đó:

sudo sysctl -p /etc/sysctl.conf

Cài đặt các gói cần thiết

Các tệp thực thi của Firebird 3.0 Linux DBMS phụ thuộc vào thư viện ncurses (libncurses.so.5), ICU (không gắn với phiên bản và không hiển thị ở đầu ra ldd) và tommath (libtommath.so.0). Để tải xuống và giải nén kho lưu trữ lắp ráp, bạn sẽ cần các tiện ích gzip, tar и curl hoặc wget. Phiên bản ICU, gzip, tar и curl/wget – là không đáng kể.

Làm việc với các gói phụ thuộc vào hệ thống và trình quản lý gói được sử dụng trong hệ thống, vì vậy chúng tôi sẽ xem xét từng gói một.

CentOS 8

CentOS 8 sử dụng trình quản lý gói mới – dnf và nó được gọi là “minh bạch” bằng lệnh yum. Vì mục đích của chúng tôi không có sự khác biệt giữa chúng - trong các ví dụ sẽ có yum.

Cập nhật bộ đệm siêu dữ liệu: sudo yum makecache

Gói libtomath được đặt trong một kho lưu trữ E(xtra)P(ackages for)E(nterprise)L(inux) riêng biệt, vì vậy chúng tôi kiểm tra xem nó đã được bao gồm chưa:

yum -C repolist

Tùy chọn "chỉ từ bộ đệm" (-C hoặc --cache-only) được sử dụng để loại bỏ việc kiểm tra và tải xuống không cần thiết, giúp yum nhanh hơn. Nếu không có kho lưu trữ epel trong danh sách, hãy cài đặt nó và cập nhật bộ đệm siêu dữ liệu:

sudo yum install epel-release &&
sudo yum makecache

Chúng tôi xác nhận các yêu cầu, nếu cần, kiểm tra giá trị của khóa pgp với những giá trị đã biết từ một nguồn đáng tin cậy.

Nếu có vấn đề khi tải siêu thông tin kho lưu trữ từ tài nguyên https, hãy chỉnh sửa tệp /etc/yum.repos.d/epel.repo, thay thế https:// trên http:// và lặp lại lệnh cập nhật bộ đệm.

Chúng tôi kiểm tra trạng thái của các gói được yêu cầu (lệnh rất phức tạp, trong ví dụ đầu ra, gói 32 bit được lọc):

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

Chúng ta thấy rằng curl, gzip и ncurses được lưu trữ trong kho lưu trữ giả của trình cài đặt (anaconda) và tar – loại trừ khỏi cài đặt hệ thống tối thiểu. Phiên bản chính libncurses и libtommath nhiều hơn yêu cầu: lần lượt là 6 và 1 thay vì 5 và 0. Nếu cùng một gói được cài đặt và có sẵn thì bản cập nhật đã được phát hành cho gói đó. Cài đặt các gói còn thiếu:

sudo yum install 
libicu libtommath tar

Ubuntu 19

Tiện ích được thiết kế để quản lý các gói apt, apt‑get и apt‑cache. Cái đầu tiên được thiết kế cho công việc tương tác và hai cái cuối cùng được thiết kế để sử dụng trong các tập lệnh. Tên gói hơi khác một chút và bao gồm phiên bản.

Chúng tôi kiểm tra trạng thái của các gói được yêu cầu (lệnh được kết hợp, đầu ra ví dụ được rút ngắn và các gói 32 bit được lọc ra):

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ác gói có dấu ngoặc vuông chỉ ra installed/upgradable - Cài đặt. Có sẵn nhưng chưa được cài đặt ncurses5, thay vì curl Cài đặt wget. Cài đặt các gói còn thiếu:

sudo apt‑get install 
libncurses5 libtommath1

Tạo liên kết tượng trưng

Kể từ khi libtommath.so.1 и libncurses.so.6 tương thích ngược với libtommath.so.0 и libncurses.so.5, thì đối với Firebird, việc tạo liên kết tượng trưng đến các phiên bản hiện có của thư viện là đủ.

Chúng tôi tìm thấy libtommath.so.1 (libncurses.so.? nằm trong cùng thư mục):

find /usr -name libtommath.so.1

CentOS:

/usr/lib64/libtommath.so.1

Ubuntu:

/usr/lib/x86_64-linux-gnu/libtommath.so.1

Chúng tôi tạo liên kết tượng trưng.

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

Hãy kiểm tra kết quả (lệnh phức tạp, các ví dụ đầu ra được rút ngắn):

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

Đang tải xuống bộ phân phối Firebird DBMS.

Trang web chính thức của dự án Firebird (firebirdsql.org) công bố các liên kết đến các bản phân phối của các bản phát hành “chính thức” và các bản dựng “hàng ngày” (bản dựng ảnh chụp nhanh).

Các bản phát hành Linux chính thức có sẵn dưới dạng gói lưu trữ (tar.gz) và gói deb/rpm, nhưng các bản dựng chỉ có sẵn dưới dạng kho lưu trữ. Chúng tôi sẽ xem xét "trình cài đặt chung" (trình cài đặt chung từ tar.gz).

Kho lưu trữ bản dựng cần được tải xuống và giải nén nhưng chúng tôi sẽ kết hợp cả hai quy trình. Việc giải nén được thực hiện trong /tmp,URL biểu thị liên kết đến kho lưu trữ có thể tải xuống.

Xoăn:

curl -L URL | tar -zxC /tmp

quên đi:

wget -O– URL | tar -zxC /tmp

Theo mặc định curl gửi dữ liệu đã tải xuống tới thiết bị xuất chuẩn nhưng không xử lý các chuyển hướng và chúng tôi thêm "‑L", MỘT wget, ngược lại: xử lý các chuyển hướng, nhưng ghi dữ liệu vào một tệp và chúng tôi đặt "‑O‑" Vì tar cho biết sử dụng gzip-filter và thư mục mà quá trình giải nén sẽ được thực hiện. Khi quá trình hoàn tất, một thư mục như thế này sẽ xuất hiện Firebird‑3.0.5.33220‑0.amd64 với ba tập tin: install.sh, buildroot.tar.gz и manifest.txt.

Cài đặt Firebird

Trong quá trình chuẩn bị sơ bộ, chúng tôi đã điều chỉnh giá trị của tham số hệ thống vm.max_map_count, kiểm tra tính khả dụng và cài đặt thư viện ICU, ncurses và tommath. Đảm bảo phiên bản của ncurses và tommath là chính xác (libncures.so.5 и libtommath.so.0) và tạo các liên kết tượng trưng cần thiết.

Việc cài đặt thực tế rất đơn giản. Chuyển đến thư mục nơi kho lưu trữ phân phối Firebird đã được giải nén, kiểm tra và nếu cần, đặt cờ “có thể thực thi” cho tập lệnh install.sh:

chmod +x install.sh

chạy tập lệnh cài đặt:

sudo ./install.sh

Bằng cách nhấn phím Enter, chúng tôi xác nhận việc bắt đầu cài đặt và khi nhận được yêu cầu, hãy nhập mật khẩu sysdba.

Kịch bản cài đặt tự động bắt đầu systemd-đơn vị firebird-superserver (kiến trúc Firebird 3.0 im lặng). Dịch vụ Firebird sẽ hoạt động với các tham số mặc định cho siêu máy chủ: bộ đệm trang gồm 2048 trang (mỗi cơ sở dữ liệu), bộ đệm sắp xếp 64 MB (được chia sẻ) và chỉ kết nối các máy khách phiên bản XNUMX. Xem tùy chọn firebird.conf:

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

Xin lưu ý rằng các giá trị mới từ firebird.conf sẽ chỉ được kích hoạt sau khi khởi động lại dịch vụ Firebird.

Khi chọn các giá trị tham số, cần tính đến ba “người tiêu dùng” chính: bộ đệm trang (cho cơ sở dữ liệu), bộ đệm sắp xếp (được chia sẻ) và bộ nhớ được máy chủ cấp phát cho các kết nối máy khách. Bạn chỉ có thể quản lý hai mục đầu tiên - dung lượng bộ nhớ cho các kết nối máy khách phụ thuộc vào số lượng và văn bản của các truy vấn được lưu trong bộ nhớ đệm, các gói của chúng và các đối tượng cơ sở dữ liệu liên quan đến các truy vấn. Ước tính bộ nhớ kết nối máy khách chỉ được thực hiện theo kinh nghiệm và có thể thay đổi khi ứng dụng khách và/hoặc đối tượng cơ sở dữ liệu thay đổi.

Đối với siêu máy chủ trên các máy chủ có dung lượng bộ nhớ nhỏ (tối đa 12-16 GB), bạn không nên phân bổ quá một phần ba hoặc một phần tư tổng dung lượng RAM cho bộ đệm trang và bộ đệm sắp xếp.

Nếu số lượng cơ sở dữ liệu không cố định và có thể thay đổi thì tổng dung lượng bộ nhớ đệm trang sẽ được chia cho số lượng cơ sở dữ liệu tối đa có thể có trên máy chủ. Kích thước của bộ đệm trang được chỉ định trong các trang và phải được chuyển đổi riêng thành byte.

Để chuyển sang kiến ​​trúc cổ điển, tối thiểu bạn phải chỉ định rõ ràng ServerMode в firebird.conf, giảm bộ đệm trang ở đó (không quá 2K), giảm bộ đệm sắp xếp (tổng khối lượng cho phép của tất cả các loại chia cho số lượng kết nối tối đa), tắt và dừng thiết bị firebird-superserver, kích hoạt và khởi động thiết bị firebird-classic.socket.

Việc sử dụng kiến ​​trúc siêu cổ điển trong Firebird 3.0 không có nhiều ý nghĩa: “độ tin cậy” giống như một siêu máy chủ và cùng một bộ đệm sắp xếp chung. Không có bộ đệm trang chung và "sự mất mát" khi đồng bộ hóa các kết nối khác nhau với nhau cũng giống như trong bộ đệm cổ điển.

Cần nhớ rằng trong Firebird 3.0 một số tham số (bộ đệm trang, kích thước tệp khóa, bảng băm và một số tham số khác) có thể được đặt trong databases.conf riêng cho từng cơ sở dữ liệu. Ví dụ, đối với một siêu máy chủ, sẽ rất hữu ích khi đặt một giá trị nhỏ DefaultDbCachePages в firebird.conf và cài đặt bộ đệm trang riêng lẻ cho cơ sở dữ liệu cần thiết trong databases.conf.

Đặt câu hỏi về bài viết trong phần bình luận hoặc viết thư đến địa chỉ hỗ trợ của chúng tôi [email được bảo vệ].

Nguồn: www.habr.com

Thêm một lời nhận xét