在现代Linux版本上安装Firebird 3:CentOS8和Ubuntu 19

在本文中,我们描述了在新的Linux发行版上最佳安装Firebird 3.0所需的最少步骤。例如,选择了CentOS 8和Ubuntu 19,并选择

了从项目官方网站(firebirdsql.org的链接下载tar.gz归档文件,以将Firebird发行版“交付”到目标系统

最不耐烦的是-立即战斗:

快速安装


/etc/sysctl.conf通过添加以下行来 编辑文件

vm.max_map_count = 256000

保存文件并应用设置:

sudo sysctl -p /etc/sysctl.conf

对于CentOS 8和Ubuntu 19的进一步说明有所不同,但它们指示来自Firebird官方网站的链接,该链接用于下载分发软件包以及在引导过程中将分发软件包解压缩到的目录。
当前(2020年3月)与Firebird 3.0.5版本相关(此处是指向 64位版本的链接)。

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

实际安装Firebird DBMS:

cd /tmp/
sudo ./install.sh

如果您想更好地了解这些操作的用途,请继续阅读。

主体部分

小序言

假定已经以最低版本安装了OS,并且已配置对公共存储库或其本地副本的访问。

假定读者具有Linux和Firebird DBMS的基本知识。

规划

建议在DBMS服务器上为临时文件(/tmp),数据库文件和本地备份分配单独的部分

临时文件包括锁定文件,排序文件,全局临时表(GTT)和监视表的“实现”文件。排序文件和全局临时表位于中/tmp,mon $表文件和锁定文件位于中/tmp/firebird

排序文件unlink在创建后立即被“删除”(),因此无法在目录列表中“看到”它们-仅在进程句柄列表中(标记为deleted):

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

在伪/proc/…/fd/目录列表中,将显示符号链接,有关该文件的实际信息如下:

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

感兴趣的文件的描述符(描述符) 在哪里

无需调用“ pgrep -”,您可以立即替换感兴趣的进程的标识符。

临时文件可能非常大,因此/tmp建议为其分配至少20-30 GB的空间。请记住,排序文件的大小仅取决于在请求中显式或隐式排序的数据量,并且单个用户可以“创建”千兆字节的临时文件。

数据库文件部分应包含所有数据库文件。至少要加上最大的数据库文件的副本。它应该提前几年考虑未来数据库文件的增长。

本地备份部分必须至少包含所有基础的一个备份存档以及最大基础的备份。建议在此部分中也要保留最大的基础。它应考虑到未来几年中备份和备份存档的增长。

初步准备

Firebird 3.0 DBMS服务器动态分配并释放系统内存,这可能导致碎片。例如,大量用户一次从超级服务器断开连接后,新连接可能会发生错误。默认情况下,

内存碎片由系统参数vm.max_map_count-64K控制。建议将其值增加四倍:

sudo sysctl vm.max_map_count=256000

要在系统重启时设置新值,请将该/etc/sysctl.conf添加到文件中

vm.max_map_count = 256000

建议发表评论,以便了解更改此参数的原因。您可以首先编辑文件,然后应用保存在其中的设置:

sudo sysctl -p /etc/sysctl.conf

安装必要的软件包

Firebird 3.0 Linux DBMS 可执行文件取决于ncurses(libncurses.so.5),ICU(无版本绑定,并且在输出中不显示ldd)和tommath(libtommath.so.0。要下载并解压装配存档,公用事业需要gziptar以及curlwget。在ICU的版本,gziptarcurl/ wget-是微不足道的。

使用软件包的方法取决于系统和系统中使用的软件包管理器,因此,我们将一一考虑。

CentOS 8

CentOS 8使用了新的软件包管理器- dnf它在命令上被“透明地”调用yum。由于我们之间没有区别,因此将有示例yum

更新元数据缓存:sudo yum makecache

libtomath软件包位于单独的E(企业)L(inux)存储库中,因此我们检查它是否已连接:

yum -C repolist

“仅从缓存”(-C--cache-only选项用于消除不必要的检查和下载,从而加快yum的速度。如果列表中没有epel存储库,请安装它并更新元数据缓存:

sudo yum install epel-release &&
sudo yum makecache

我们确认请求,如果有必要,请使用可信赖来源中已知的值来检查pgp-key的值。

如果在从https资源下载存储库元信息时遇到问题,请编辑文件/etc/yum.repos.d/epel.repo,将其替换为https://http://然后重复cache update命令。

检查必要软件包的状态(命令已折叠,在输出示例中,已过滤了32位软件包):

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

我们看到curlgzipncurses位于安装程序(anaconda的伪存储库中,并且tar-被排除在系统的最小安装范围之外。主要版本libncurseslibtommath超出要求的版本:分别为6和1而不是5和0。如果安装了相同的软件包并可用,则已经发布了更新。安装缺少的软件包:

sudo yum install \
libicu libtommath tar

Ubuntu的19个

公用事业设计的包管理aptapt‑getapt‑cache第一个是为交互工作而设计的,最后两个是在脚本中使用的。软件包名称稍有不同,其中包括一个版本。

我们检查必要软件包的状态(命令很复杂,输出示例已减少,并且32位数据包已被滤除):

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]

installed/ upgradable-安装 在方括号中的软件包可用,但未安装ncurses5,而不是已curl安装wget安装缺少的软件包:

sudo apt‑get install \
libncurses5 libtommath1

创建符号链接

由于libtommath.so.1它们libncurses.so.6libtommath.so.0向后兼容libncurses.so.5,因此Firebird可以创建指向现有版本库的符号链接。

我们发现libtommath.so.1libncurses.so.?位于同一目录中):

find /usr -name libtommath.so.1

CentOS的:

/usr/lib64/libtommath.so.1

Ubuntu:

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

创建符号链接。

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

检查结果(命令已折叠,输出示例已缩短):

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

下载Firebird DBMS分发工具包。

Firebird项目的官方站点(firebirdsql.org)发布指向“正式”发行版(发行版)和“每日”程序集(快照构建)的发行版的链接。

正式的Linux版本可作为存档(tar.gz)和deb / rpm软件包提供,而构建仅可作为存档提供。我们将看“通用安装程序”(来自tar.gz的通用安装程序)。

程序集档案需要下载并解压缩,但是我们将结合这两个过程。解压缩是在中完成的/tmp,URL指示指向可下载档案的链接。

卷曲:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

默认情况下,它curl会将加载的数据发送到标准输出,但不处理重定向,我们添加“ ‑L”,但wget相反:它处理重定向,但将数据写入文件,然后放入“ ‑O‑”。用于tar指示使用gzip过滤器和将在其中执行解压缩的目录。一旦完成该过程将是一种目录Firebird‑3.0.5.33220‑0.amd64有三个文件:install.shbuildroot.tar.gzmanifest.txt

安装Firebird

在初步准备期间,我们调整了系统参数的值vm.max_map_count,检查了可用性并安装了ICU,ncurses和tommath库。我们确保ncurses和tommath(libncures.so.5libtommath.so.0的版本正确,并创建了必要的符号链接。

其实安装很简单。我们转到解压缩Firebird分发工具包档案的目录,检查并在必要时为脚本设置“ executable”标志install.sh

chmod +x install.sh

运行安装脚本:

sudo ./install.sh

通过按Enter键,我们确认安装已开始,并在收到请求后-输入sysdba密码。

安装脚本会自动启动一个systemd单元firebird-superserver(默认的Firebird 3.0架构)。Firebird服务将与超级服务器的默认参数一起使用:2048个页面的缓存(每基本),64 MB的排序缓冲区(共享)和仅连接第三版客户端。查看选项firebird.conf

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

请注意,from的新值firebird.conf仅在Firebird服务重启后才能激活。

选择参数值时,应考虑三个主要的“消费者”:页面缓存(用于数据库),排序缓冲区(共享)以及服务器为客户端连接分配的内存。您只能管理前两个-客户端连接的内存量取决于缓存的请求的数量和文本,其计划以及请求中涉及的数据库对象。客户端连接的内存评估仅凭经验进行,并且可以在客户端应用程序和/或数据库对象更改时更改。

对于具有少量内存(最多12-16 GB)的主机上的超级服务器,您不应为页面缓存和排序缓冲区分配超过总RAM三分之一或四分之一的内存。

如果数据库的数量不是固定的并且可以更改,则页面高速缓存的总内存应除以服务器上可以容纳的最大数据库数量。页缓存的大小以页为单位设置,必须单独转换为字节。

要切换到经典架构,您必须至少明确地指定ServerModein firebird.conf,在同一位置减少页面缓存(不超过2K),减少排序缓冲区(所有排序的总允许数量除以最大连接数),禁用和停止单元firebird-superserver,启用并运行单位firebird-classic.socket

在Firebird 3.0中使用超经典体系结构没有多大意义:“可靠性”-就像超级服务器和相同的常规排序缓冲区一样。没有通用的页面缓存,同步它们之间不同连接的“损失”与经典的相同。

应当记住,在Firebird 3.0中,可以databases.conf为每个数据库分别设置一些参数(页面缓存,锁定文件大小,哈希表等)对于超级服务器它是有用的,例如,要设置一个小的值DefaultDbCachePagesfirebird.conf,并设置各个页面的高速缓存,以必要的数据库databases.conf

在评论中询问有关文章的问题,或写信给我们的支持地址support@ibase.ru。

All Articles