ในบทความนี้ เราจะอธิบายชุดขั้นตอนขั้นต่ำที่จำเป็นสำหรับการติดตั้ง Firebird DBMS เวอร์ชัน 3.0 ที่เหมาะสมที่สุดบน Linux รุ่นใหม่ ยกตัวอย่าง 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) การเปิดตัว Firebird 3.0.5 มีความเกี่ยวข้อง (
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