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
- 在文件 /etc/sysctl.conf 中添加以下行:
vm.max_map_count = 256000
- 保存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上发布。
- 安装软件包
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安装文件:
/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
- 然后,安装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软件包:ncurses、ICU、tommath。此外,我们还需要工具gzip、tar以及curl或wget。
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位):
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
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上,它位于:
/usr/lib64/libtommath.so.1
在Ubuntu 19上:
/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では、次のように表示されます:
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
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つあります:
-
リポジトリには古いバージョン(つまり、前のマイナーリリース)が含まれている可能性がある、
-
すべてが正しくインストールおよび設定されていることを確認するために、環境を制御したい。
また、/opt へのインストールを好みます。これはクロスプラットフォームのスクリプトにとって簡単で、優れた管理プラクティスです。
連絡先
質問、提案、および可能性のある誤りについては、お気軽に [email protected] までお送りください。