DBMS แบบกระจาย - การกู้คืนฐานข้อมูล

ในการกู้คืนจากความล้มเหลวของฐานข้อมูลระบบการจัดการฐานข้อมูลจะใช้เทคนิคการจัดการการกู้คืนจำนวนมาก ในบทนี้เราจะศึกษาแนวทางต่างๆสำหรับการกู้คืนฐานข้อมูล

กลยุทธ์ทั่วไปสำหรับการกู้คืนฐานข้อมูล ได้แก่ -

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

  • ในกรณีที่เกิดความล้มเหลวอย่างหนักซึ่งส่งผลให้ฐานข้อมูลเสียหายอย่างกว้างขวางกลยุทธ์การกู้คืนจะครอบคลุมการกู้คืนสำเนาที่ผ่านมาของฐานข้อมูลจากการสำรองข้อมูล สถานะปัจจุบันของฐานข้อมูลจะได้รับจากการทำซ้ำการดำเนินการของธุรกรรมที่ผูกมัดจากบันทึกธุรกรรม

การกู้คืนจากไฟฟ้าขัดข้อง

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

ในกรณีของโหมดอัปเดตทันทีตัวจัดการการกู้คืนจะดำเนินการดังต่อไปนี้ -

  • ธุรกรรมที่อยู่ในรายการที่ใช้งานอยู่และรายการที่ล้มเหลวจะถูกยกเลิกและเขียนอยู่ในรายการยกเลิก

  • ธุรกรรมที่อยู่ในรายการก่อนกระทำจะถูกทำใหม่

  • ไม่มีการดำเนินการใด ๆ สำหรับธุรกรรมในรายการคอมมิตหรือยกเลิก

ในกรณีของโหมดอัพเดตที่เลื่อนออกไปตัวจัดการการกู้คืนจะดำเนินการดังต่อไปนี้ -

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

  • ธุรกรรมที่อยู่ในรายการก่อนกระทำจะถูกทำใหม่

  • ไม่มีการดำเนินการใด ๆ สำหรับธุรกรรมในรายการคอมมิตหรือยกเลิก

การกู้คืนจากความล้มเหลวของดิสก์

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

ตัวจัดการการกู้คืนดำเนินการดังต่อไปนี้ -

  • ธุรกรรมในรายการคอมมิตและรายการก่อนคอมมิตจะถูกทำซ้ำและเขียนลงในรายการคอมมิตในบันทึกธุรกรรม

  • ธุรกรรมในรายการที่ใช้งานอยู่และรายการที่ล้มเหลวจะถูกยกเลิกและเขียนลงในรายการยกเลิกในบันทึกธุรกรรม

จุดตรวจ

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

เทคนิคการตรวจสอบสองประเภทคือ -

  • การตรวจสอบที่สอดคล้องกัน
  • การตรวจสอบที่คลุมเครือ

จุดตรวจที่สอดคล้องกัน

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

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

หากในขั้นตอนที่ 4 บันทึกธุรกรรมจะถูกเก็บถาวรเช่นกันการตรวจสอบนี้จะช่วยในการกู้คืนจากความล้มเหลวของดิสก์และไฟดับมิฉะนั้นจะช่วยกู้คืนจากความล้มเหลวของไฟเท่านั้น

จุดตรวจที่คลุมเครือ

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

ตัวอย่าง Checkpointing

ให้เราพิจารณาว่าในระบบเวลาของการตรวจสอบคือ tcheck และเวลาที่ระบบขัดข้องคือ tfail ให้มีการทำธุรกรรมสี่รายการ T a , T b , T cและ T dเช่นนั้น -

  • T กระทำก่อนที่ด่าน

  • T bเริ่มก่อนจุดตรวจและตกลงก่อนระบบล่ม

  • T cเริ่มต้นหลังจากจุดตรวจและกระทำก่อนระบบล่ม

  • T dเริ่มต้นหลังจากจุดตรวจสอบและทำงานในช่วงเวลาที่ระบบขัดข้อง

สถานการณ์แสดงในแผนภาพต่อไปนี้ -

การดำเนินการที่ดำเนินการโดยตัวจัดการการกู้คืนคือ -

  • ไม่มีอะไรทำ T a .
  • การทำซ้ำการทำธุรกรรมจะดำเนินการสำหรับ T Bและ T ค
  • ยกเลิกการทำธุรกรรมจะดำเนินการสำหรับ T d

การกู้คืนธุรกรรมโดยใช้ UNDO / REDO

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

การกู้คืนธุรกรรมในกรณีเหล่านี้เป็นกระบวนการสองขั้นตอน -

  • ยกเลิกธุรกรรมและธุรกรรมที่ผิดพลาดทั้งหมดที่อาจได้รับผลกระทบจากการทำธุรกรรมที่ผิดพลาด

  • ทำธุรกรรมทั้งหมดที่ไม่ผิดพลาด แต่ถูกยกเลิกเนื่องจากธุรกรรมผิดพลาด

ขั้นตอนในการดำเนินการ UNDO ได้แก่ -

  • หากธุรกรรมผิดพลาดได้ทำการ INSERT ผู้จัดการการกู้คืนจะลบรายการข้อมูลที่แทรก

  • หากธุรกรรมผิดพลาด DELETE ผู้จัดการการกู้คืนจะแทรกรายการข้อมูลที่ถูกลบออกจากบันทึก

  • หากธุรกรรมผิดพลาดได้ทำการ UPDATE ตัวจัดการการกู้คืนจะกำจัดค่าโดยการเขียนค่าก่อนการอัพเดตจากบันทึก

ขั้นตอนในการดำเนินการ REDO ได้แก่ -

  • หากธุรกรรมเสร็จสิ้น INSERT ตัวจัดการการกู้คืนจะสร้างส่วนแทรกจากบันทึก

  • หากธุรกรรมเสร็จสิ้น DELETE ตัวจัดการการกู้คืนจะสร้างการลบออกจากบันทึก

  • หากธุรกรรมเสร็จสิ้นการอัปเดตตัวจัดการการกู้คืนจะสร้างการอัปเดตจากบันทึก