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 ตัวจัดการการกู้คืนจะสร้างการลบออกจากบันทึก
หากธุรกรรมเสร็จสิ้นการอัปเดตตัวจัดการการกู้คืนจะสร้างการอัปเดตจากบันทึก