نصب Firebird 3 در نسخه های مدرن لینوکس: CentOS8 و Ubuntu 19

در این مقاله حداقل مجموعه اقدامات مورد نیاز برای نصب بهینه Firebird DBMS نسخه 3.0 در توزیع های جدید لینوکس را شرح خواهیم داد. CentOS 8 و Ubuntu 19 به عنوان نمونه انتخاب شده اند.

برای "تحویل" توزیع Firebird به سیستم هدف، در این راهنما، گزینه دانلود بایگانی tar.gz با استفاده از پیوندی از وب سایت رسمی پروژه انتخاب شده است (firebirdsql.org).

برای بی حوصله ترین ها، مستقیم به جنگ بروید:

نصب سریع

در حال ویرایش فایل /etc/sysctl.confبا اضافه کردن خط:

vm.max_map_count = 256000

فایل را ذخیره کنید و تنظیمات را اعمال کنید:

sudo sysctl -p /etc/sysctl.conf

دستورالعمل های بیشتر برای CentOS 8 و Ubuntu 19 متفاوت است، اما ССЫЛКА и КАТАЛОГ پیوندی از وب سایت رسمی پروژه Firebird برای دانلود توزیع و دایرکتوری که توزیع در طی فرآیند دانلود در آن باز می شود را نشان دهید.
در حال حاضر (مارس 2020) نسخه فعلی 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

اوبونتو 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

اگر می خواهید بهتر بفهمید که این اقدامات چه می کنند، ادامه مطلب را بخوانید.

قسمت اصلی

یک مقدمه کوتاه

فرض بر این است که سیستم عامل قبلاً در نسخه حداقلی نصب شده است و دسترسی به مخازن عمومی یا نسخه های محلی آنها پیکربندی شده است.

فرض بر این است که خواننده دانش پایه لینوکس و Firebird DBMS دارد.

برنامه ریزی

در سرور DBMS توصیه می شود بخش های جداگانه ای را برای فایل های موقت اختصاص دهید (/tmp)، فایل های پایگاه داده و پشتیبان گیری های محلی.

موارد موقت شامل فایل‌های قفل، مرتب‌سازی فایل‌ها، فایل‌های «مادی‌سازی» جداول موقت جهانی (GTT) و جداول نظارت است. فایل های مرتب سازی و جداول موقت سراسری در آن قرار دارند /tmp، فایل‌های mon$-table و lock-files – in /tmp/firebird.

مرتب سازی فایل ها "حذف شده اند" (unlink) بلافاصله پس از ایجاد، بنابراین آنها را نمی توان در فهرست دایرکتوری "دیده کرد" - فقط در لیست دسته های فرآیند (علامت گذاری شده به عنوان deleted):

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

در فهرست دایرکتوری شبه /proc/…/fd/ پیوندهای نمادین نمایش داده می شوند و اطلاعات واقعی در مورد فایل توسط:

sudo stat -L /proc/`pgrep firebird`/fd/НОМЕР

جایی که НОМЕР – توصیفگر (توصیفگر) فایل مورد علاقه.

به جای زنگ زدن "pgrep исполняемый-файл"شما می توانید بلافاصله شناسه فرآیند مورد علاقه را جایگزین کنید.

فایل های موقت می توانند بسیار بزرگ باشند، بنابراین /tmp توصیه می شود حداقل 20-30 گیگابایت را اختصاص دهید. باید در نظر داشت که اندازه فایل‌های مرتب‌سازی تنها به مقدار داده‌هایی که به طور صریح یا ضمنی در درخواست مرتب شده‌اند بستگی دارد و یک کاربر می‌تواند گیگابایت فایل‌های موقت ایجاد کند.

بخش فایل های پایگاه داده باید همه فایل های پایگاه داده را در خود جای دهد. به علاوه، حداقل، یک کپی از بزرگترین فایل پایگاه داده. باید به رشد فایل های پایگاه داده در آینده برای چندین سال آینده توجه کرد.

بخش پشتیبان‌گیری محلی باید شامل حداقل یک آرشیو پشتیبان از همه پایگاه‌های داده به اضافه یک نسخه پشتیبان از بزرگترین پایگاه داده باشد. مطلوب است که این بخش دارای فضایی برای بازیابی بزرگترین پایگاه داده نیز باشد. رشد پشتیبان گیری و آرشیوهای پشتیبان در آینده برای چندین سال باید مورد توجه قرار گیرد.

آماده سازی مقدماتی

سرور 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.5ICU (به نسخه متصل نیست و در خروجی نمایش داده نمی شود ldd) و تومات (libtommath.so.0). برای دانلود و باز کردن آرشیو اسمبلی، به ابزارهای کمکی نیاز دارید gzip, tar и curl یا wget. نسخه های آی سی یو، 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 وجود دارد، فایل را ویرایش کنید /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

اوبونتو 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

لینوکس:

/usr/lib64/libtommath.so.1

اوبونتو:

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

ما پیوندهای نمادین ایجاد می کنیم.

لینوکس:

sudo ln -s libtommath.so.1 
/usr/lib64/libtommath.so.0
sudo ln -s libncurses.so.6 
/usr/lib64/libncurses.so.5

اوبونتو:

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."

لینوکس:

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*

اوبونتو:

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) پیوندهایی را به توزیع نسخه‌های «رسمی» و ساخت‌های «روزانه» (ساخت‌های عکس فوری) منتشر می‌کند.

نسخه‌های رسمی لینوکس به‌صورت بایگانی (tar.gz) و بسته‌های deb/rpm در دسترس هستند، اما بیلدها فقط به‌عنوان بایگانی در دسترس هستند. ما "نصب کننده عمومی" (نصب کننده عمومی از tar.gz) را در نظر خواهیم گرفت.

آرشیو ساخت باید دانلود و باز شود، اما ما هر دو فرآیند را ترکیب می کنیم. باز کردن بسته بندی در انجام می شود /tmp,URL نشان دهنده پیوند بایگانی قابل دانلود است.

حلقه:

curl -L URL | tar -zxC /tmp

wget:

wget -O– URL | tar -zxC /tmp

به طور پیش فرض curl داده های بارگیری شده را به stdout می فرستد اما تغییر مسیرها را مدیریت نمی کند و ما اضافه می کنیم "‑L"، آ wget، برعکس: تغییر مسیرها را کنترل می کند، اما داده ها را در یک فایل می نویسد و ما "‑O‑". برای tar استفاده را نشان می دهد gzip-فیلتر و دایرکتوری که در آن باز کردن بسته بندی انجام خواهد شد. پس از اتمام فرآیند، دایرکتوری مانند این ظاهر می شود Firebird‑3.0.5.33220‑0.amd64 با سه فایل: install.sh, buildroot.tar.gz и manifest.txt.

نصب Firebird

در طول آماده سازی اولیه، مقدار پارامتر سیستم را تنظیم کردیم vm.max_map_count، در دسترس بودن را بررسی کرد و ICU، ncurses و کتابخانه های تومث را نصب کرد. مطمئن شوید که نسخه‌های 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 مگابایتی (اشتراک‌گذاری شده) و اتصال فقط مشتریان نسخه XNUMX. مشاهده گزینه ها firebird.conf:

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

لطفا توجه داشته باشید که مقادیر جدید از firebird.conf فقط پس از راه اندازی مجدد سرویس Firebird فعال می شود.

هنگام انتخاب مقادیر پارامتر، باید در نظر گرفت که سه "مصرف کننده" اصلی وجود دارد: حافظه پنهان صفحه (برای پایگاه داده)، بافر مرتب سازی (اشتراک گذاری شده) و حافظه اختصاص داده شده توسط سرور برای اتصالات مشتری. شما فقط می توانید دو مورد اول را مدیریت کنید - مقدار حافظه برای اتصالات مشتری به تعداد و متن پرس و جوهای کش شده، طرح های آنها و اشیاء پایگاه داده درگیر در کوئری ها بستگی دارد. تخمین‌های حافظه اتصال کلاینت فقط به صورت تجربی انجام می‌شوند و ممکن است با تغییر برنامه‌های مشتری و/یا اشیاء پایگاه داده تغییر کنند.

برای یک سوپر سرور در هاست هایی با حافظه کم (تا 12-16 گیگابایت)، نباید بیش از یک سوم یا یک چهارم کل مقدار رم را برای کش صفحه و بافر مرتب سازی اختصاص دهید.

اگر تعداد پایگاه های داده ثابت نیست و می تواند تغییر کند، مقدار کل حافظه کش صفحه باید بر حداکثر تعداد پایگاه های داده ای که می تواند روی سرور باشد تقسیم شود. اندازه کش صفحه در صفحات مشخص می شود و باید جداگانه به بایت تبدیل شود.

برای تغییر به معماری کلاسیک، حداقل باید به صراحت مشخص کنید 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

اضافه کردن نظر