在本文中,我們將描述在新的 Linux 發行版上優化安裝 Firebird DBMS 3.0 版所需的最少步驟。 以CentOS 8和Ubuntu 19為例。
為了將 Firebird 發行版“交付”到目標系統,在本指南中,可以選擇從項目官方網站的鏈接下載 tar.gz 存檔(
快速安裝
編輯文件 /etc/sysctl.conf
通過添加以下行:
vm.max_map_count = 256000
保存文件並應用設置:
sudo sysctl -p /etc/sysctl.conf
CentOS 8 和 Ubuntu 19 的進一步說明有所不同,但是 ССЫЛКА
и КАТАЛОГ
表示來自 Firebird 項目官方站點的用於下載發行版的鏈接以及在下載過程中將發行版解壓到的目錄。
目前(2020 年 3.0.5 月),Firebird XNUMX 版本是相關的(
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
如果您想更好地了解這些操作的用途,請繼續閱讀。
主要部分
一個小序言
假設操作系統已安裝最低版本,並配置了對公共存儲庫或其本地副本的訪問。
假設讀者俱有 Linux 和 Firebird DBMS 的基本知識。
Планирование
在 DBMS 服務器上,建議為臨時文件分配單獨的部分(/tmp
)、數據庫文件和本地備份。
臨時包括鎖定文件、排序文件、全局臨時表(GTT)和監控表的“物化”文件。 排序和全局臨時表文件位於 /tmp
、 mon$ 表文件和鎖文件 - in /tmp/firebird
.
排序文件被“刪除”(unlink
)創建後立即,因此它們不能在目錄列表中“看到” - 只能在進程句柄列表中(標記為 deleted
):
sudo ls -lhF /proc/`pgrep firebird`/fd
在偽目錄列表中 /proc/…/fd/
顯示符號鏈接,有關文件的實際信息由以下方式給出:
sudo stat -L /proc/`pgrep firebird`/fd/НОМЕР
哪裡 НОМЕР
– 感興趣的文件的描述符(descriptor)。
而不是調用“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
)和托馬斯(libtommath.so.0
)。 需要實用程序來下載並解壓程序集存檔 gzip
, tar
и curl
或 wget
。 ICU 版本, gzip
, tar
и curl
/wget
- 是微不足道的。
使用包取決於系統和系統中使用的包管理器,因此我們將一一考慮它們。
CentOS 8的
CentOS 8 使用新的包管理器 - dnf
並且它是根據命令“透明地”調用的 yum
。 因為就我們的目的而言,它們之間沒有區別 - 在示例中將有 yum
.
更新元數據緩存: sudo yum makecache
libtomath 軟件包位於單獨的 E(xtra)P(ackages for)E(nterprise)L(inux) 存儲庫中,因此請檢查它是否已包含在內:
yum -C repolist
僅緩存選項(-C
或 --cache-only
) 用於消除不必要的檢查和下載,使 yum 運行得更快。 如果列表中沒有 epel 存儲庫,請安裝它並更新元數據緩存:
sudo yum install epel-release &&
sudo yum makecache
如有必要,我們會確認請求,並使用可信來源已知的值檢查 pgp 密鑰的值。
如果從 https-resources 加載存儲庫元信息時出現問題,請編輯該文件 /etc/yum.repos.d/epel.repo
, 替換 https://
上 http://
並重複緩存更新命令。
檢查所需包的狀態(命令比較複雜,示例輸出中過濾了 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
我們看到 curl
, gzip
и ncurses
放置在安裝程序偽存儲庫中(anaconda
),和 tar
– 不包括在最小系統安裝中。 主要版本 libncurses
и libtommath
超出要求:分別為 6 和 1,而不是 5 和 0。 如果相同的軟件包已安裝且可用,則已發布更新。 安裝缺少的軟件包:
sudo yum install
libicu libtommath tar
Ubuntu的19
包管理實用程序 apt
, apt‑get
и apt‑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.6
向後兼容 libtommath.so.0
и libncurses.so.5
,那麼對於 Firebird 來說,創建指向可用版本的庫的符號鏈接就足夠了。
我們發現 libtommath.so.1
(libncurses.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
“, A wget
,相反:處理重定向,但將數據寫入文件,然後我們將“‑O‑
”。 為了 tar
註明用途 gzip
-filter 以及將執行解包的目錄。 該過程完成後,將出現一個表單目錄 Firebird‑3.0.5.33220‑0.amd64
包含三個文件: install.sh
, buildroot.tar.gz
и manifest.txt
.
安裝火鳥
在前期準備的過程中,我們調整了系統參數的值 vm.max_map_count
,檢查並安裝了 ICU、ncurses 和 tommath 庫。 驗證 ncurses 和 tommath 版本是否正確(libncures.so.5
и libtommath.so.0
)並創建了必要的符號鏈接。
實際安裝非常簡單。 轉至 Firebird 發行版存檔的解壓目錄,檢查並在必要時為腳本設置“可執行”標誌 install.sh
:
chmod +x install.sh
運行安裝腳本:
sudo ./install.sh
按 Enter 鍵,我們確認開始安裝,並在收到請求後輸入 sysdba 密碼。
安裝腳本自動運行 systemd
-單元 firebird-superserver
(默認Firebird 3.0架構)。 Firebird 服務將使用超級服務器的默認設置運行:2048 個頁面緩存(每個基礎)、64 MB 排序緩衝區(共享)以及僅適用於版本 XNUMX 客戶端的連接。 查看設置 firebird.conf
:
grep -v ^# firebird.conf | grep -v ^$
請注意,新值來自 firebird.conf
只有重新啟動 Firebird 服務後才會激活。
選擇參數值時,應考慮到三個主要“消費者”:頁緩存(用於數據庫)、排序緩衝區(共享)以及服務器為客戶端連接分配的內存。 您只能管理前兩個 - 客戶端連接的內存量取決於緩存查詢的數量和文本、它們的計劃以及查詢中涉及的數據庫對象。 客戶端連接的內存估計僅憑經驗進行,並且當客戶端應用程序和/或數據庫對象發生變化時可能會發生變化。
對於內存量較小(最多 12-16 GB)的主機上的超級服務器,您不應為頁面緩存和排序緩衝區分配超過總 RAM 的三分之一到四分之一。
如果基數不固定並且可以更改,則頁面高速緩存的總量應除以服務器上可容納的最大基數。 頁緩存大小以頁為單位指定,必須單獨轉換為字節。
要切換到經典架構,您至少必須顯式指定 ServerMode
в firebird.conf
,減少同處的頁緩存(不超過2K),減少排序緩衝區(所有排序允許的總容量除以最大連接數),禁用並停止該單元 firebird-superserver
,啟用並運行該單元 firebird-classic.socket
.
在 Firebird 3.0 中使用超經典架構沒有多大意義:“可靠性”就像超級服務器和相同的共享排序緩衝區。 沒有公共頁面緩存,並且相互同步不同連接的“損失”與經典中相同。
應該記住,在 Firebird 3.0 中,一些參數(頁面緩存、鎖定文件大小、哈希表和其他一些參數)可以在 databases.conf
分別針對每個數據庫。 例如,對於超級服務器來說,設置一個小值是有用的 DefaultDbCachePages
в firebird.conf
並為所需的數據庫安裝單獨的頁面緩存 databases.conf
.
在評論中提出有關文章的問題,或寫信給我們的支持地址 [電子郵件保護].
來源: www.habr.com