การติดตั้ง Firebird 3 บนลินุกซ์เวอร์ชั่นสมัยใหม่: 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 บิต)

8 CentOS

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$-table files และ lock-files - in /tmp/firebird.

ไฟล์เรียงถูก "ลบ" (unlink) ทันทีหลังจากสร้าง ดังนั้นจึงไม่สามารถ "เห็น" ในรายการไดเร็กทอรี - เฉพาะในรายการของกระบวนการจับ (ทำเครื่องหมายเป็น deleted):

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

ในรายการไดเรกทอรีหลอก /proc/…/fd/ symlink จะแสดงขึ้น และข้อมูลจริงเกี่ยวกับไฟล์จะได้รับจาก:

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) และทอมมัท (libtommath.so.0). จำเป็นต้องใช้ยูทิลิตี้เพื่อดาวน์โหลดและคลายไฟล์เก็บถาวรของแอสเซมบลี gzip, tar и curl หรือ wget. รุ่นไอซียู, gzip, tar и curl/wget - ไม่มีนัยสำคัญ

การทำงานกับแพ็คเกจขึ้นอยู่กับระบบและตัวจัดการแพ็คเกจที่ใช้ในระบบ ดังนั้นเราจะพิจารณาทีละตัว

8 CentOS

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

อูบุนตู 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

การสร้าง symlink

ตั้งแต่ libtommath.so.1 и libncurses.so.6 ย้อนหลังได้กับ libtommath.so.0 и libncurses.so.5ดังนั้นสำหรับ Firebird การสร้าง symlink ไปยังไลบรารีเวอร์ชันที่มีอยู่ก็เพียงพอแล้ว

หา 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", NS 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 และ tommath libraries ตรวจสอบว่าเวอร์ชัน ncurses และ tommath ถูกต้อง (libncures.so.5 и libtommath.so.0) และสร้าง symlink ที่จำเป็น

การติดตั้งจริงนั้นง่ายมาก ไปที่ไดเร็กทอรีที่คลายไฟล์เก็บถาวรการแจกจ่าย 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 มากกว่าหนึ่งในสามถึงหนึ่งในสี่ของ RAM ทั้งหมดสำหรับแคชเพจและบัฟเฟอร์การเรียงลำดับ

หากจำนวนฐานไม่คงที่และสามารถเปลี่ยนแปลงได้ จำนวนรวมของหน่วยความจำแคชเพจควรหารด้วยจำนวนฐานสูงสุดที่สามารถอยู่บนเซิร์ฟเวอร์ได้ ขนาดแคชของหน้าระบุไว้ในหน้าและต้องแปลงเป็นไบต์แยกกัน

หากต้องการเปลี่ยนไปใช้สถาปัตยกรรมแบบคลาสสิก คุณต้องระบุให้ชัดเจนเป็นอย่างน้อย ServerMode в firebird.conf, ลดแคชเพจในที่เดียวกัน (ไม่เกิน 2K), ลดบัฟเฟอร์การจัดเรียง (ปริมาณรวมที่อนุญาตของการจัดเรียงทั้งหมดหารด้วยจำนวนการเชื่อมต่อสูงสุด), ปิดใช้งานและหยุดหน่วย firebird-superserverเปิดใช้งานและเรียกใช้หน่วย firebird-classic.socket.

การใช้สถาปัตยกรรม superclassic ใน Firebird 3.0 นั้นไม่สมเหตุสมผล: "ความน่าเชื่อถือ" เป็นเหมือนเซิร์ฟเวอร์ระดับสูงและบัฟเฟอร์การจัดเรียงเดียวกัน ไม่มีแคชเพจทั่วไปและ "การสูญเสีย" สำหรับการซิงโครไนซ์การเชื่อมต่อที่แตกต่างกันจะเหมือนกับในคลาสสิก

ควรจำไว้ว่าใน Firebird 3.0 พารามิเตอร์บางตัว (แคชเพจ, ขนาดไฟล์ล็อค, ตารางแฮชและอื่น ๆ ) สามารถตั้งค่าได้ databases.conf เป็นรายบุคคลสำหรับแต่ละฐาน สำหรับเซิร์ฟเวอร์ระดับสูง จะมีประโยชน์ เช่น ตั้งค่าเล็กน้อย DefaultDbCachePages в firebird.conf และติดตั้งแคชเพจแต่ละรายการสำหรับฐานข้อมูลที่ต้องการใน databases.conf.

ถามคำถามเกี่ยวกับบทความในความคิดเห็นหรือเขียนจดหมายไปยังที่อยู่สนับสนุนของเรา [ป้องกันอีเมล].

ที่มา: will.com

เพิ่มความคิดเห็น