此页面为机器翻译。请阅读英文原文。 English

IBSurgeon 文库

如何在Linux上安装Firebird 3.0和4.0

by Vasily Sidorov, 2022年8月24日

在本文中,我们介绍如何在流行的Linux版本上安装Firebird 3和4:CentOS 7、Oracle Linux 7/8、Debian 9/10、Ubuntu18/20和OpenSUSE15.0。

为了获取适用于Linux的Firebird发行版,请使用Firebird官方网站上的tar归档文件:

我们假设安装是以root或sudoer身份完成的,并且Linux计算机可以访问互联网。

请注意,某些命令需要用户输入。另请注意,以分号(;)结尾的行表示该命令可以作为单行命令运行。

此外,我们建议阅读您打算安装的Firebird版本的发行说明。

先决条件

4.0.1和3.0的系统库要求变得相同:ncurses5和tommath0静态链接,ICU动态链接。

根据发行版的不同,ncurses5可能是系统库(RH7/Debian),或者作为向后兼容的软件包提供(RH8/Debian)。

tommath库将是版本0或版本1(它们二进制兼容)。如果没有tommath0,我们将创建符号链接。

其他必要的系统工具是tar和curl。

我们显式安装这些软件包,以便包管理器将它们标记为手动控制,不会自动卸载它们。

快速安装

1. 指定最大映射计数。

此步骤是可选的,但对于生产系统强烈推荐:

打开文件 /etc/sysctl.conf 并添加以下行:

Code
vm.max_map_count = 256000

然后应用

Code
sysctl -p /etc/sysctl.conf

2. 安装libtommath所需的仓库

对于CentOS 7

Code
yum install epel-release;

对于CentOS 8

Code
dnf install epel-release;

对于Oracle Linux 7

Code
yum install oracle-epel-release-el7;

对于Oracle Linux 8

Code
dnf install oracle-epel-release-el8;

对于其他发行版,必要的软件包应可在主仓库中获得。

3. 安装软件包和工具

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;

ICU的版本可能有所不同:

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

在具有libtommath1的发行版中(除CentOS7和Oracle Linux 7之外的所有上述发行版),有必要创建符号链接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;

Firebird 4.0.1及更高版本的安装脚本可以自动创建符号链接,但对于Firebird 3,应手动创建。

4. 下载并安装Firebird

在安装必要的工具和库之后,我们可以继续下载、解压并运行安装包。

我们假设DOWNLOADLINK是来自www.firebirdsql.org的链接,用于下载所需的Firebird。

Code
curl -L DOWNLOADLINK | tar -zxC /tmp
cd /tmp/FIREBIRD_folder
sudo ./install.sh

这里DOWNLOADLINK - 指向tar.gz的链接,FIREBIRD_folder - Firebird-version.build-0.architecture

发行版将由命令tar -zxC /tmp解压到该文件夹。

这就是在Linux上快速安装Firebird 3或4所需的全部内容。

可选地,您可以使用 Firebird Configuration Calculator 生成最佳配置文件(firebird.conf和databases.conf)。

关于Firebird安装的更多详细信息

对于那些希望更好地配置Firebird安装的用户,我们提供上述步骤的详细说明。

vm.max_map_count的配置

Firebird从版本3开始有效使用SuperServer架构,并大量动态分配内存。在高负载和高频率连接/断开的情况下,引擎可能会在Linux上遇到内存碎片限制,这将在firebird.log中显示为错误11(ENOMEM)或错误12(munmap)。

内存碎片限制由参数vm.max_map_count控制,默认值为65536。

为了在服务器重启后保持此设置,请将以下行添加到 /etc/sysctl.conf

Code
vm.max_map_count = 256000

要应用它,要么重启服务器,要么运行命令:

Code
sudo sysctl -p /etc/sysctl.conf

规划磁盘空间

一般来说,我们建议在带有Firebird数据库的服务器上分配3个独立分区:用于临时文件、数据库和本地备份。

临时文件分区

主要的临时文件是锁文件、排序文件、全局临时表和blob的文件、监控数据的文件。

默认情况下,在Linux上,排序文件和全局临时表的数据文件位于 /tmp,mon$数据和锁表的文件位于 /tmp/firebird。

如何确定临时文件分区的适当大小?

排序和blob文件可能相当大,因此对于用户数量可观的生产系统,实际建议是临时文件分区约为30-40Gb。为了更精确地确定适当大小,我们建议监控临时文件的实际大小。

这种监控的一个小问题是排序文件在创建后立即被取消链接,因此无法使用通常的“ls”命令查看它们。要查看它们,我们需要使用以下命令检查进程的句柄(它们将被标记为已删除):

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

作为此命令的结果,我们将看到伪文件夹 /proc/…/fd/ 的内容。

要查看此文件夹中特定文件的信息,需要使用命令:

Code
sudo stat -L /proc/`pgrep firebird`/fd/NNNNN

其中NNNNN是文件的描述符。

您可以在SuperServer和SuperClassic架构上使用此命令,当引擎作为单个进程运行时。当然,除了pgrep firebird之外,也可以指定Firebird进程的句柄号。

数据库文件分区

数据库文件分区应足以存储所有数据库文件,加上等于最大数据库大小的空闲空间,再加上未来2-3年的增长储备。

本地备份分区

至少,本地备份分区应足以存储所有本地备份加上最大数据库的备份。

此外,为了执行恢复,我们建议在备份分区上有额外的空闲空间,等于最大数据库大小。

更多关于备份的阅读

创建firebird用户(可选)

安装脚本会创建(如果不存在)名为“firebird”的用户和组,以便使用此用户执行Firebird的所有活动(这是Linux系统的最佳实践)。

这也意味着数据库文件以及数据库和备份所在的文件夹应具有此用户的所有权或权限。

有时在安装之前创建用户和组“firebird”是有意义的:

Code
groupadd firebird &&
useradd -M -b /opt -s /sbin/nologin \
 -g firebird -u UID firebird

对于firebird用户,我们不创建主文件夹(开关 -M),只指定基本文件夹(-b)。

Shell nologin 配合 -s 开关可阻止标准登录到服务器。

安装必要的软件包

Firebird 3.0 和 4.0 依赖于库 ncurses(libncurses.so.5)、ICU(无版本链接,且不会在 ldd 输出中显示)以及 tommath(libtommath.so.0)。

根据 Linux 发行版的不同,我们需要使用带或不带版本的库名称。上面展示了实用的复制粘贴命令,下面我们进行说明。

CentOS 和 Oracle Linux

版本 7 默认包含必要的软件包,版本 8 需要安装 ncurses-compat-libs 并创建符号链接 libtommath.so.0。

Debian、Ubuntu 和 OpenSUSE

在 Debian 9 和 10、Ubuntu 18 和 20、OpenSUSE 15 中,我们需要安装 libncurses5 和 libtommath1,并且可以通过搜索不完整的名称来识别 ICU 的版本:

在 Ubuntu 中

Code
apt-cache search libicu5

在 OpenSUSE 15 中

Code
zypper search libicu6

Firebird 安装详情

在安装之前,我们增加了系统参数 vm.max_map_count,安装了库 ICU、ncurses 和 tommath。然后我们检查了 ncurses 和 tommath 的版本是否正确(libncures.so.5 和 libtommath.so.0),或者创建了必要的符号链接。

可选地,我们可以创建用户和组 firebird。

之后我们可以安装 Firebird,为此我们进入安装包解压的文件夹并启动安装:

Code
./install.sh

按 Enter 确认安装,并在提示时指定 SYSDBA 的密码。

最初 Firebird 将使用默认配置文件安装。默认配置以 SuperServer 架构运行,并采用适中的值:每个数据库的缓存(DefaultDbCachePages,也称为 Page buffers)设置为 2048,排序缓冲区(TempCacheLimit)为 64M(在 v3 中为服务器级别,在 v4 中为每个数据库级别)。

要查看 firebird.conf 中未注释的参数,可以使用以下命令:

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

如果您将使用 Firebird Configuration Calculator 生成最佳配置文件或手动更改参数,请注意,更改将在 Firebird 服务重启后生效(对于 SuperServer 和 SuperClassic,对于 Classic 则需要重启所有 Firebird 进程)。

请注意,自 Firebird 3 起,SuperServer、SuperClassic 和 Classic 有独立的 systemd 单元。