การสำรองข้อมูลธุรกรรม SQL Server เทียบกับบันทึก


12

ฉันได้รับฐานข้อมูล SQL Server 2008 ที่มีความสำคัญทางธุรกิจในระดับปานกลางและกำลังพยายามวางแผนการสำรองข้อมูล (ฉันเป็นนักพัฒนาไม่ใช่ DBA)

วิธีการตั้งค่าระบบของเราในขณะนี้มีระบบสำรองข้อมูลสองระบบ:

  1. การสำรองข้อมูลเต็มรูปแบบรายสัปดาห์ ( .bak) และการทำธุรกรรมบันทึกรายชั่วโมง ( .trn) การสำรองข้อมูล เราเก็บสำรองข้อมูลเหล่านี้หลายชุดและจัดส่งนอกสถานที่เป็นประจำ
  2. บันทึก SQL Server ( .ldf) Fullที่มีรูปแบบการกู้คืนการตั้งค่า ไฟล์นี้อยู่ในไดรฟ์แยกต่างหากจาก.mdfไฟล์หลักแต่ไม่ได้สำรองไว้

ในกรณีที่มีการกู้คืนฉุกเฉิน (หรือเมื่อกู้คืนการสำรองข้อมูลไปยังเครื่อง dev) ขั้นตอนของฉันคือการใช้.bakไฟล์แล้วใช้ไฟล์. trn เรามีสคริปต์ที่ทำให้ขั้นตอนนี้ค่อนข้างตรงไปตรงมา

คำถามของฉัน:

  1. เป็นไปได้หรือไม่ที่จะกู้คืนฐานข้อมูลจาก.ldfไฟล์? มันคืออะไรสำหรับ
  2. มันซ้ำซ้อนโดยไม่จำเป็นหรือไม่ที่จะต้องมีบันทึกธุรกรรมทั้งสองนี้?
  3. การสำรอง.ldfไฟล์เป็นสิ่งสำคัญหรือไม่

คำตอบ:


16

ไม่มันเป็นไปไม่ได้ที่จะกู้คืนฐานข้อมูลจากไฟล์ ldf ไฟล์ ldf จะถูกกู้คืนพร้อมกับไฟล์ mdf

ไม่มันไม่ซ้ำซ้อนเนื่องจากมีวัตถุประสงค์ที่แตกต่างกันสองประการ

การสำรองข้อมูลเต็มรูปแบบและการสำรองข้อมูลธุรกรรมเป็นสิ่งสำคัญ การมีสำเนาไฟล์ ldf เท่านั้นไม่ช่วยให้คุณกู้คืนฐานข้อมูล

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

หากเซิร์ฟเวอร์ล้มเหลวหรือเกิดไฟฟ้าขัดข้องเมื่อ SQL เริ่มทำงานเซิร์ฟเวอร์จะอ่านการเปลี่ยนแปลงเหล่านั้น ldf และนำไปใช้ใหม่ (REDO)

นอกจากนี้หากคุณมีธุรกรรมที่ไม่ได้รับการยอมรับและเกิดปัญหาการล่มการเปลี่ยนแปลงทั้งหมดที่ทำโดยธุรกรรมนั้นจะต้องยกเลิกเพื่อให้ฐานข้อมูลสอดคล้องกัน ไฟล์ ldf มีภารกิจนั้นเช่นกัน (UNDO)

ฉันกล่าวถึงข้างต้นว่าไฟล์ ldf เป็นวงกลม การสำรองข้อมูลบันทึกธุรกรรม (.trn) คัดลอกส่วนหนึ่งของไฟล์ ldf หลังจากไฟล์ trn ถูกสร้างอย่างปลอดภัย sql สามารถนำส่วนนั้นมาใช้ใหม่ของไฟล์ ldf ชุดของการสำรองข้อมูล trn สร้างห่วงโซ่ที่บันทึกการเปลี่ยนแปลงทุกครั้งที่เกิดขึ้นกับฐานข้อมูล แน่นอนถ้าคุณไม่เคยใช้ไฟล์สำรองข้อมูล tranaction ไฟล์ ldf ก็จะโตขึ้นเรื่อย ๆ

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

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


2
+1 คำตอบที่ดีมาก สิ่งเดียวที่ฉันจะเพิ่มคือเมื่อ DBA บอกว่า "ฐานข้อมูล" หมายถึงไฟล์. mdf (ไฟล์ข้อมูล) และ. ldf (ไฟล์บันทึก) รวมกัน ไฟล์ทั้งสองเข้าด้วยกันทำให้หน่วยเดียว ในบางฐานข้อมูลคุณอาจเห็นไฟล์. pdf และ / หรือ .ndfs หลายไฟล์ (ไฟล์ข้อมูลรอง) ด้วย ไฟล์เหล่านี้จะถูกรวมเข้าด้วยกันเพื่อสร้างหน่วยเดียวที่เรียกว่าฐานข้อมูล หากคุณทำสิ่งใดหายคุณกำลังตกอยู่ในโหมดภัยพิบัติและต้องดำเนินการแก้ไข
Kenneth Fisher

+1 คำตอบที่ดีอย่าพลาดการสำรองข้อมูล 'ฟิสิคัลไฟล์' (.mdf / .ndf / .ldfs จริง) ในขณะที่ใช้งานบนระบบแม้มีแอพบุคคลที่สามอย่าง Norton ในขณะที่ MS SQL Server ทำงานเป็น การสำรองข้อมูลที่ปลอดภัย ไฟล์เหล่านั้นมีความอ่อนไหวสูงดังนั้นไฟล์สำรองข้อมูล MS SQL Server จริงจึงควรถูกสร้างขึ้นเสมอเมื่อเป็นไปได้
Ali Razeghi

ขอบคุณสิ่งนี้มีประโยชน์มาก ดูเหมือนว่าแผนการสำรองข้อมูล SQL Server ปกติของเรานั้นเพียงพอและไม่จำเป็นต้องยุ่งเกี่ยวกับไฟล์. pdf หรือ. ldf โดยตรง
แฮงค์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.