วันศุกร์ที่ 2 พฤศจิกายน พ.ศ. 2555

Transaction Log และ Check Point กับการกู้ข้อมูล


      Transaction Log (.ldf) คือ log file ที่จะบันทึกคำสั่งของการทำงานรวมถึงการเปลี่ยนแปลงที่เกิดขึ้นกับ database ตั้งแต่ Insert, Update และ Delete และเมื่อถึง Check point ก็จะบันทึกลงใน Database โดย Transition Log จะแยกเก็บเป็น Files ซึ่งเมื่อเขียนจนถึงตำแหน่งสุดท้ายของไฟล์แล้ววนกลับไปที่จุดเริ่มต้นของพื้นที่ว่าง แต่ถ้าไม่มีที่ว่าง Log file ก็จะขยายใหญ่ขึ้นเรื่อยๆ

      Checkpoint จะถูกสร้างโดยอัตโนมัติเมื่อ Transaction log ถูกเขียน record ไปเรื่อยๆ ระยะเวลาหนึ่ง หรือ stop/start sql server instant, backup, alter database

      ทั้ง Transaction Log และ Check Point ถือได้ว่าเป็นบทบาทสำคัญต่อการกู้ข้อมูลเมื่อมีความเสียหายเกิดกับระบบอย่างกะทันหัน และหลังจากสตาร์ทเซอร์วิสของ MSSOL Server ใหม่แล้ว ระบบจัดการฐานข้อมูล (RDBMS) จะทำการกู้ความเสียหายเบื้องต้น โดยจะกู้ดาต้าเบสที่เสียหาย (ถ้ามี) เรียงลำดับ Master,Model,Temp DB,MSDB และดาต้าเบสอื่นๆ เช่น ดาต้าเบสที่สร้างโดยยูสเซอร์ เป็นต้น

ตัวอย่าง






















จากรูปอธิบายได้ดังนี้
1. System Failure เกิดขึ้นที่ T(f) และ Check Point ล่าสุดเมื่อเวลา T(c)
2. Transaction T1 เสร็จสิ้นก่อนเวลาT(c)
3. Transaction T2 เกิดก่อนเวลา T(c) และเสร็จสิ้นหลังเวลา T(c)
4. Transaction T3 เกิดก่อนเวลา T(c) แต่ไม่เสร็จสิ้นหลังเวลา T(c) 5. Transaction T4เกิดก่อนเวลา T(c) และเสร็จสิ้นหลังเวลา T(c)
6. Transaction T2 เกิดก่อนเวลา T(c) แต่ไม่เสร็จสิ้นหลังเวลา T(c)

และหลังจากสตาร์ทเซอร์วิส MSSQL Server ใหม่ได้แล้ว ระบบจะทำการกู้ข้อมูลและตรวจสอบทรานแซคชั่นต่างๆจาก Transaction Log ซึ่งพบว่า
  1. T3 และ T5 จะต้องยกเลิก (Roll Back)
  2. T2 และ T4 จะต้องเข้าไปทำงานใหม่ (Roll Forward) เพราะข้อมูลที่ทำงานตามคำสั่งใน T2,T4 ยังไม่ได้บันทึกลงในดาต้าเบสเท่านั้น
  3. T1ไม่ต้อง Roll Back หรือ Roll Forward เพราะระบบได้ทำการบันทึกข้อมูลของการเปลี่ยนแปลงลงดาต้าเบสเรียบร้อยแล้ว

ไม่มีความคิดเห็น:

แสดงความคิดเห็น