การสำรองข้อมูลอื่น - เป็นมากกว่าสคริปต์ ง่ายกว่าระบบ

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

การสำรองข้อมูลอื่น - เป็นมากกว่าสคริปต์ ง่ายกว่าระบบ

ช่วงบ่ายที่ดี ฮอร์นบีม!
ฉันชื่อนาตาเลีย ฉันเป็นหัวหน้าทีมกลุ่มผู้ดูแลระบบแอปพลิเคชันที่ NPO Krista เราเป็น Ops สำหรับกลุ่มโครงการของบริษัทเรา เรามีสถานการณ์ที่ค่อนข้างพิเศษ: เราติดตั้งและบำรุงรักษาซอฟต์แวร์ของเราทั้งบนเซิร์ฟเวอร์ของบริษัทและบนเซิร์ฟเวอร์ที่อยู่ที่ไซต์ของลูกค้า ในกรณีนี้ไม่จำเป็นต้องสำรองข้อมูลทั้งเซิร์ฟเวอร์ เฉพาะ “ข้อมูลสำคัญ” เท่านั้นที่สำคัญ: DBMS และไดเร็กทอรีระบบไฟล์แต่ละรายการ แน่นอนว่าลูกค้ามี (หรือไม่มี) กฎเกณฑ์ในการสำรองข้อมูลของตนเอง และมักจะจัดเตรียมพื้นที่จัดเก็บข้อมูลภายนอกบางประเภทสำหรับจัดเก็บข้อมูลสำรองไว้ที่นั่น ในกรณีนี้ หลังจากสร้างข้อมูลสำรองแล้ว เราจะตรวจสอบให้แน่ใจว่าได้ส่งไปยังที่จัดเก็บข้อมูลภายนอก

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

โซลูชันสำเร็จรูปไม่เหมาะสมด้วยเหตุผลหลายประการ: เนื่องจากความจำเป็นในการกระจายการสำรองข้อมูล, ข้อกำหนดในการจัดเก็บข้อมูลสำรองไว้ในเครื่องที่ไคลเอ็นต์, ความซับซ้อนของการตั้งค่า, การทดแทนการนำเข้า, ข้อจำกัดในการเข้าถึง

สำหรับเราดูเหมือนว่าการเขียนบางอย่างของเราเองง่ายกว่า ในขณะเดียวกัน ฉันก็อยากได้สิ่งที่เพียงพอสำหรับสถานการณ์ของเราในอีก N ปีข้างหน้า แต่มีความเป็นไปได้ที่จะขยายขอบเขตออกไป

เงื่อนไขของงานมีดังนี้:

  1. อินสแตนซ์การสำรองข้อมูลพื้นฐานเป็นแบบอัตโนมัติและทำงานภายในเครื่อง
  2. การจัดเก็บข้อมูลสำรองและบันทึกจะอยู่ภายในเครือข่ายของลูกค้าเสมอ
  3. อินสแตนซ์ประกอบด้วยโมดูล - ประเภทของ "ตัวสร้าง"
  4. จำเป็นต้องมีความเข้ากันได้กับลินุกซ์รุ่นปัจจุบัน รวมถึงรุ่นที่ล้าสมัยด้วย ดังนั้นจึงควรใช้ข้ามแพลตฟอร์มที่เป็นไปได้
  5. หากต้องการทำงานกับอินสแตนซ์ การเข้าถึงผ่าน ssh ก็เพียงพอแล้ว ไม่จำเป็นต้องเปิดพอร์ตเพิ่มเติม
  6. ความง่ายในการติดตั้งและการใช้งานสูงสุด
  7. เป็นไปได้ (แต่ไม่จำเป็น) ที่จะมีอินสแตนซ์แยกต่างหากที่ช่วยให้คุณสามารถดูสถานะของการสำรองข้อมูลจากเซิร์ฟเวอร์ต่างๆ จากส่วนกลางได้

คุณสามารถดูสิ่งที่เราเกิดขึ้นได้ที่นี่: github.com/javister/krista-backup
ซอฟต์แวร์นี้เขียนด้วย python3; ทำงานบน Debian, Ubuntu, CentOS, AstraLinux 1.6

เอกสารประกอบถูกโพสต์ในไดเร็กทอรี docs ของที่เก็บ

แนวคิดพื้นฐานที่ระบบทำงาน:
การกระทำ - การกระทำที่ใช้การดำเนินการแบบอะตอมมิกเดียว (การสำรองฐานข้อมูล การสำรองไดเรกทอรี การถ่ายโอนจากไดเรกทอรี A ไปยังไดเรกทอรี B ฯลฯ ) การดำเนินการที่มีอยู่จะอยู่ในไดเร็กทอรี core/actions
งาน - งานชุดของการดำเนินการที่อธิบาย "งานสำรองข้อมูล" แบบลอจิคัลหนึ่งรายการ
กำหนดการ – กำหนดการ ชุดของงานที่มีตัวเลือกบ่งชี้เวลาดำเนินการของงาน

การกำหนดค่าการสำรองข้อมูลจะถูกจัดเก็บไว้ในไฟล์ yaml โครงสร้างการกำหนดค่าทั่วไป:

  • การตั้งค่าทั่วไป
  • ส่วนการกระทำ: คำอธิบายการกระทำที่ใช้บนเซิร์ฟเวอร์นี้
  • ส่วนกำหนดการ: คำอธิบายของงานทั้งหมด (ชุดของการดำเนินการ) และกำหนดเวลาสำหรับการเปิดตัวโดย cron หากจำเป็นต้องมีการเปิดตัวดังกล่าว

สามารถดูการกำหนดค่าตัวอย่างได้ที่นี่

แอปพลิเคชันสามารถทำอะไรได้บ้างในปัจจุบัน:

  • รองรับการดำเนินการหลักสำหรับเรา: การสำรองข้อมูล PostgreSQL ผ่าน pg_dump, การสำรองข้อมูลไดเรกทอรีระบบไฟล์ผ่าน tar; การดำเนินการกับที่จัดเก็บข้อมูลภายนอก rsync ระหว่างไดเรกทอรี การหมุนเวียนข้อมูลสำรอง (การลบสำเนาเก่า)
  • เรียกสคริปต์ภายนอก
  • การดำเนินการด้วยตนเองของงานแยกต่างหาก
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • คุณสามารถเพิ่ม (หรือลบ) งานเดียวหรือกำหนดการทั้งหมดลงใน crontab
    /opt/KristaBackup/KristaBackup.py enable all
  • สร้างไฟล์ทริกเกอร์ตามผลการสำรองข้อมูล ฟังก์ชันนี้มีประโยชน์เมื่อใช้ร่วมกับ Zabbix สำหรับการตรวจสอบการสำรองข้อมูล
  • สามารถทำงานในพื้นหลังใน webapi หรือโหมดเว็บได้
    /opt/KristaBackup/KristaBackup.py web start [--api]

ความแตกต่างระหว่างโหมดต่างๆ: webapi ไม่มีเว็บอินเตอร์เฟส แต่แอปพลิเคชันตอบสนองต่อคำขอจากอินสแตนซ์อื่น สำหรับโหมดเว็บ คุณต้องติดตั้ง flask และแพ็คเกจเพิ่มเติมหลายรายการ ซึ่งไม่เป็นที่ยอมรับในทุกที่ เช่น ใน AstraLinux SE ที่ได้รับการรับรอง

คุณสามารถดูสถานะและบันทึกการสำรองข้อมูลของเซิร์ฟเวอร์ที่เชื่อมต่อผ่านเว็บอินเทอร์เฟซ: “อินสแตนซ์เว็บ” ร้องขอข้อมูลจาก “อินสแตนซ์สำรอง” ผ่าน API การเข้าถึงเว็บต้องได้รับอนุญาต แต่การเข้าถึง webapi ไม่ต้องได้รับอนุญาต

การสำรองข้อมูลอื่น - เป็นมากกว่าสคริปต์ ง่ายกว่าระบบ

บันทึกการสำรองข้อมูลที่ไม่ถูกต้องจะถูกทำเครื่องหมายเป็นสี: คำเตือน – สีเหลือง, ข้อผิดพลาด – สีแดง

การสำรองข้อมูลอื่น - เป็นมากกว่าสคริปต์ ง่ายกว่าระบบ

การสำรองข้อมูลอื่น - เป็นมากกว่าสคริปต์ ง่ายกว่าระบบ

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

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

ผลก็คือ เราได้รับยูทิลิตี้การทำสำเนาขนาดกะทัดรัดแบบสแตนด์อโลนที่สามารถทำงานอัตโนมัติและสามารถใช้งานได้แม้กระทั่งผู้ดูแลระบบที่ไม่มีประสบการณ์ก็ตาม สะดวกสำหรับเรา - บางทีมันอาจจะมีประโยชน์สำหรับคุณเช่นกัน?

ที่มา: will.com

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