このページは機械翻訳されています。英語の原文をお読みください。 English

IBSurgeon ライブラリ

Firebird 3 を最新の Linux バージョン(CentOS 8 および Ubuntu 19)にインストールする

(C) Basil Sidorov, IBSurgeon, 2020年5月22日

本文介绍如何在新的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 フォルダーが作成され、install.sh、buildroot.tar.gz、manifest.txt の3つのファイルが含まれます。

Firebird のインストール

前提条件として、vm.max_map_count を設定し、ICU、ncurses、tommath を確認・インストールし、シンボリックリンクを作成しました。

その後、最後のステップは簡単です。次のコマンドを実行します:

sudo ./install.sh

このスクリプトは system-unit firebird-superserver を起動し、Firebird はすぐに使用できる状態になります。

設定ファイルとその最適化

デフォルトの Firebird 設定ファイル firebird.conf は非常に控えめに設定されていることに注意してください。firebird.conf の内容(コメント行以外)は、次のコマンドで確認できます:

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

デフォルトの firebird.conf の場合、上記のコマンドは何も返しません。つまり、すべての値がデフォルトであることを意味します。

本番システムを設定する場合は、最適化された Firebird 設定ファイルの使用を検討してください:/ja/optimized-firebird-configuration/

よくある質問 #1

よくある質問は「なぜ単にリポジトリを使用して yum や apt で Firebird をインストールしないのか?」というものです。もちろん、それは可能ですが、大きな理由が2つあります:

  1. リポジトリには古いバージョン(つまり、前のマイナーリリース)が含まれている可能性がある、

  2. すべてが正しくインストールおよび設定されていることを確認するために、環境を制御したい。

また、/opt へのインストールを好みます。これはクロスプラットフォームのスクリプトにとって簡単で、優れた管理プラクティスです。

連絡先

質問、提案、および可能性のある誤りについては、お気軽に [email protected] までお送りください。