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

IBSurgeon 文库

在现代化Linux版本上安装Firebird 3:CentOS 8和Ubuntu 19

(C) Basil Sidorov, IBSurgeon, 22-May-2020

本文致力于在新的 Linux 发行版:CentOS 8 和 Ubuntu 19(也适用于 18)上快速安装 Firebird 3.0。

第一部分是快速安装指南,用于尽可能快地安装 Firebird 3.0,不涉及细节。第二部分描述详细信息。

在 CentOS 8 和 Ubuntu 19 上快速安装 Firebird 3

  1. 向文件 /etc/sysctl.conf 添加以下行:

vm.max_map_count = 256000

  1. 保存 sysctl.conf 并应用新设置:

sudo sysctl -p /etc/sysctl.conf

接下来的说明在 CentOS 8 和 Ubuntu 19 上略有不同。

请注意,我们使用了来自 FirebirdSQL.org 的 Firebird 3.0 最新发布版的显式链接,目前(2020 年 5 月)是 3.0.5,以下是 64 位版本的链接:

https://github.com/FirebirdSQL/firebird/releases/download/R3.0.5/Firebird-3.0.5.33220-0.amd64.tar.gz

将来,当 3.0.6 等版本出现时,您需要使用新版本的正确链接–它将在 www.firebirdsql.org 上发布。

  1. 安装软件包

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

结果,您将在 /tmp/firebird 中获得所有 Firebird 安装文件:

Code
/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
  1. 然后,安装 Firebird:

cd /tmp/Firebird-3.0.5.33220-0.amd64 sudo ./install.sh

然后,检查 Firebird 是否正在运行–下面的命令将显示所有与 Firebird 相关或以 firebird 用户身份运行的进程:

ps aux | grep firebird

如果您只需要安装 Firebird 3.0,这就是全部内容。

如果您想了解上述命令的含义,请继续阅读!

主要部分:在 Linux 上安装 Firebird 3 的详细信息

在本文中,我们假设操作系统是以最小版本安装的,并且您已经可以访问公共软件仓库或其本地副本。

规划空间分配

在用于服务 Firebird 数据库的服务器上,我们建议为临时文件(/tmp)、数据库文件和本地备份分配单独的卷。

临时文件卷

Firebird 临时文件包括锁文件、排序文件、用于“物化”全局临时表(GTT)的文件以及监控表。排序文件和 GTT 文件位于 /tmp 中,mon$- 和锁文件位于 /tmp/firebird 中。

排序文件在创建后立即被取消链接,因此您无法使用 ls 命令在文件夹中看到它们(与 Windows 不同)。

要查看这些文件,您需要请求 Firebird 进程的文件句柄(它们被标记为已删除):

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

要获取特定排序文件的详细信息,请运行命令

sudo stat -L /proc/`pgrep firebird`/fd/NUMBER

其中 NUMBER 是文件的文件描述符。

临时文件可能很大,因此建议为 /tmp 分配 20-30GB。

请注意,排序大小不取决于数据库大小:某些带有直接乘积的错误查询可以轻松地为 3MB 的数据库生成 100GB 的排序文件。

数据库文件卷

数据库文件卷应足够大,以容纳所有数据库文件,加上至少最大的数据库的大小,以便进行可能的就地操作。

此外,请记住数据库会随时间增长,并为它们预留一些可用空间。

强烈建议将数据库文件卷放在您拥有的最快驱动器/SAN/硬件上,具有最高的随机 IO 能力。

本地备份文件卷

本地备份文件卷应足够大,以容纳所有数据库的备份,加上最大的数据库文件的大小(不是备份–用于可能的测试恢复)。当然,还要记住数据库备份的增长。本地备份文件卷可以位于相对较慢的驱动器上。Firebird 备份文件具有线性结构,因此对于备份驱动器来说,具有较高的顺序速度就足够了。

准备

Firebird 引擎动态分配和释放内存,这可能导致内存碎片。

例如,在从 Firebird SuperServer 实例断开许多用户后可能会发生这种情况。内存碎片由系统参数 vm.max_map_count 控制,其默认值为 65K。建议将其增加至少 4 倍,并使此设置永久生效。

/etc/sysctl.conf 添加以下行:

vm.max_map_count = 256000

并应用它

sudo sysctl -p /etc/sysctl.conf

安装必要的软件包

Firebird 3 依赖于几个 Linux 软件包:ncursesICUtommath。此外,我们还需要工具 gziptar 以及 curlwget

CentOS 8

CentOS 使用新的软件包管理器 dnf,它由 yum 透明地调用。我们喜欢 yum,所以让我们使用 yum。首先,更新元数据缓存:

sudo yum makecache

软件包 libtommath 位于单独的仓库 EPEL(E(xtra)P(ackages for)E(nterprise)L(inux))中,因此我们需要检查它是否已启用:

yum -C repolist

选项 -C(–cache-only)使 yum 仅使用缓存。

如果在 yum -C repolist 的结果中没有看到 epel-repository,请安装它:

sudo yum install epel-release && sudo yum makecache

如果出现问题,请编辑文件 /etc/yum.repos.d/epel.repo,将 https:// 替换为 http://,然后再次尝试 yum makecache

然后,让我们检查是否拥有所有必要的软件包(示例中为 64 位):

Code
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

在 CentOS 8 上安装缺失的软件包

sudo yum install libicu libtommath tar

Ubuntu 19

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

在 Ubuntu 19 上安装缺失的软件包:

sudo apt‑get install libncurses5 libtommath1

创建符号链接

Libtommath.so.1 和 libncurses.so.6 与 libtommath.so.0 和 libncurses.so.5 兼容,Firebird 只需为现有库版本创建符号链接即可。

首先,让我们找到 libtommath.so.1(libncurses.so.? 位于同一文件夹中):

find /usr -name libtommath.so.1

在 CentOS8 上,它位于:

Code
/usr/lib64/libtommath.so.1

在 Ubuntu 19 上:

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

让我们创建符号链接

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

要检查结果:

ls -lhF $(dirname `find /usr -name libtommath.so.1`) | grep "lib\(ncurses\|tommath\)\.so\."

在 CentOS8 上,它会给出:

Code
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 上,它会给出:

Code
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

获取 Firebird 3.0 发布版本

Firebird Linux 版本可在 www.firebirdsql.org 上以 tar.gz 压缩包的形式获取。假设 URL 是 Firebird 发布版 tar.gz 压缩包的下载链接。我们需要下载并解压该压缩包,为此可以使用 curl 或 wget。

curl

curl -L URL | tar -zxC /tmp

wget

wget -O- URL | tar -zxC /tmp

结果将创建文件夹 /tmp/Firebird‑3.0.5.33220‑0.amd64,其中包含 3 个文件:install.sh、buildroot.tar.gz 和 manifest.txt。

安装 Firebird

作为先决条件,我们已经设置了 vm.max_map_count,检查并安装了 ICU、ncurses 和 tommath,并创建了符号链接。

之后,最后一步很简单–运行

sudo ./install.sh

此脚本会启动系统单元 firebird-superserver,Firebird 即可开始工作。

配置文件及其优化

请注意,默认的 Firebird 配置文件 firebird.conf 的配置方式非常保守。您可以使用以下命令检查 firebird.conf 的内容(非注释行):

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

对于默认的 firebird.conf,上述命令将不返回任何内容,这意味着所有值均为默认值。

如果您正在配置生产系统,请考虑使用优化的 Firebird 配置文件:/zh/optimized-firebird-configuration/

常见问题解答 #1

常见的问题是“为什么不直接使用软件仓库,通过 yum 或 apt 安装 Firebird?”。当然,这是可能的,但有两大原因:

  1. 软件仓库可能包含旧版本(即,上一个次要版本),

  2. 我们喜欢控制环境,以确保所有内容都正确安装和配置。

此外,我们更倾向于安装到 /opt 目录,这更便于跨平台脚本编写,也是良好的管理实践。

联系方式

请随时将问题、建议和可能的错误发送至 [email protected]