تثبيت Firebird 3 على إصدارات Linux الحديثة: CentOS8 و Ubuntu 19

سنصف في هذه المقالة الحد الأدنى من الإجراءات المطلوبة للتثبيت الأمثل لنظام Firebird DBMS الإصدار 3.0 على توزيعات Linux الجديدة. تم اختيار 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

إذا كنت تريد أن تفهم بشكل أفضل ما تفعله هذه الإجراءات، فتابع القراءة.

الجزء الرئيسي

ديباجة قصيرة

من المفترض أن نظام التشغيل مثبت بالفعل في إصدار مصغر وتم تكوين الوصول إلى المستودعات العامة أو نسخها المحلية.

من المفترض أن يكون لدى القارئ معرفة أساسية بنظام 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/НОМЕР

حيث НОМЕР – الواصف (الواصف) للملف محل الاهتمام.

بدلاً من الاتصال "pgrep исполняемый-файл"يمكنك استبدال معرف العملية محل الاهتمام على الفور.

يمكن أن تكون الملفات المؤقتة كبيرة جدًا، لذا /tmp يوصى بتخصيص ما لا يقل عن 20-30 جيجابايت. يجب أن يؤخذ في الاعتبار أن حجم فرز الملفات يعتمد فقط على كمية البيانات التي تم فرزها صراحةً أو ضمنًا في الطلب، ويمكن لمستخدم واحد "إنشاء" غيغابايت من الملفات المؤقتة.

يجب أن يستوعب قسم ملفات قاعدة البيانات جميع ملفات قاعدة البيانات. بالإضافة إلى نسخة من أكبر ملف قاعدة بيانات على الأقل. من الضروري مراعاة نمو ملفات قاعدة البيانات في المستقبل لعدة سنوات قادمة.

يجب أن يحتوي قسم النسخ الاحتياطية المحلية على أرشيف نسخ احتياطي واحد على الأقل لجميع قواعد البيانات بالإضافة إلى نسخة احتياطية لأكبر قاعدة بيانات. ومن المرغوب فيه أن يحتوي هذا القسم أيضًا على مساحة لاستعادة أكبر قاعدة بيانات. يجب أن يؤخذ في الاعتبار نمو النسخ الاحتياطية وأرشيفات النسخ الاحتياطي في المستقبل لعدة سنوات.

تحضير تمهيدي

يقوم خادم Firebird 3.0 DBMS بتخصيص ذاكرة النظام وتحريرها ديناميكيًا، مما قد يؤدي إلى تجزئتها. على سبيل المثال، بعد قطع اتصال عدد كبير من المستخدمين بالخادم الفائق مرة واحدة، قد تحدث أخطاء عند إجراء اتصالات جديدة.

يتم التحكم في تجزئة الذاكرة بواسطة معلمة النظام vm.max_map_count، الافتراضي هو 64 كيلو بايت. ويستحب زيادة قيمته أربع مرات:

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. إصدارات وحدة العناية المركزة, 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

CentOS:

/usr/lib64/libtommath.so.1

أوبونتو:

/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

أوبونتو:

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*

أوبونتو:

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 -O– URL | tar -zxC /tmp

بشكل افتراضي curl يرسل البيانات التي تم تنزيلها إلى stdout لكنه لا يتعامل مع عمليات إعادة التوجيه ونضيف "‑L"، لكن wget، على العكس من ذلك: يعالج عمليات إعادة التوجيه، ولكنه يكتب البيانات إلى ملف ونضع "‑O‑" ل tar تشير إلى الاستخدام gzip-filter والدليل الذي سيتم تنفيذ التفريغ فيه. عند اكتمال العملية، سيظهر دليل مثل هذا Firebird‑3.0.5.33220‑0.amd64 مع ثلاثة ملفات: install.sh, buildroot.tar.gz и manifest.txt.

تثبيت فايربيرد

أثناء الإعداد الأولي، قمنا بتعديل قيمة معلمة النظام vm.max_map_count، تم التحقق من التوفر وتثبيت وحدة العناية المركزة ومكتبات ncurses وtomatath. تأكد من صحة إصدارات 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، وتقليل ذاكرة التخزين المؤقت للصفحة هناك (لا يزيد عن 2 كيلو بايت)، وتقليل المخزن المؤقت للفرز (إجمالي الحجم المسموح به لجميع الأنواع مقسومًا على الحد الأقصى لعدد الاتصالات)، وتعطيل الوحدة وإيقافها firebird-superserver، تمكين وبدء تشغيل الوحدة firebird-classic.socket.

إن استخدام البنية الكلاسيكية الفائقة في Firebird 3.0 ليس له معنى كبير: "الموثوقية" تشبه الخادم الفائق ونفس المخزن المؤقت للفرز العام. لا توجد ذاكرة تخزين مؤقت مشتركة للصفحة و"الخسائر" الناجمة عن مزامنة الاتصالات المختلفة مع بعضها البعض هي نفسها كما في الاتصال الكلاسيكي.

يجب أن نتذكر أنه في Firebird 3.0، يمكن تعيين بعض المعلمات (ذاكرة التخزين المؤقت للصفحة، وأحجام ملفات القفل، وجداول التجزئة، وبعض المعلمات الأخرى) في databases.conf بشكل فردي لكل قاعدة بيانات. بالنسبة للخادم الفائق، من المفيد، على سبيل المثال، تعيين قيمة صغيرة DefaultDbCachePages в firebird.conf وتثبيت ذاكرة التخزين المؤقت للصفحة الفردية لقواعد البيانات المطلوبة في databases.conf.

اطرح أسئلة حول المقالة في التعليقات، أو اكتب رسائل إلى عنوان الدعم الخاص بنا [البريد الإلكتروني محمي].

المصدر: www.habr.com

إضافة تعليق