วิธีที่ดีที่สุดในการสำรองและตัดทอนบันทึกธุรกรรมตามกำหนดเวลา


9

ฉันไม่ใช่ DBA แต่สิ่งต่าง ๆ ที่เป็นอยู่ฉันต้องสวมหมวก DBA และตั้งค่าแผนการบำรุงรักษาบนอินสแตนซ์ SQL Server ของฉัน

ดังนั้นในขณะที่ฉันได้รับการมีกระบวนการในชั่วข้ามคืน SSIS ของฉันทำงานดำเนินงาน SQLเพื่อดำเนินการสำรองข้อมูล - พื้นทำงานเพื่อให้แน่ใจว่าปลายทางโฟลเดอร์ที่มีอยู่แล้วmaster.dbo.xp_create_subdirBACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT

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

สคริปต์ "manual truncate" มีลักษณะดังนี้:

use Staging;
alter database Staging set recovery simple
alter database Staging set recovery full
dbcc shrinkfile ('Staging_log', 0, truncateonly);
go

ดังนั้นฉันเริ่มเบื่อกับสิ่งนี้และฉันตัดสินใจที่จะลองทำสิ่งต่าง ๆ ให้ถูกต้องและทำตามขั้นตอนที่นี่และสร้างแผนการบำรุงรักษาจริง:

แผนการบำรุงรักษา SQL Server

สิ่งที่ฉันไม่เคยทำมาก่อนดังนั้นฉันมีคำถามสองสามข้อ:

  • จะสำรองข้อมูลบันทึกธุรกรรมเช่นนี้โดยอัตโนมัติหรือไม่?
  • การเรียกใช้ข้อมูลและการสำรองข้อมูลบันทึกธุรกรรมพร้อมกันหรือไม่ ถ้าไม่เช่นนั้นวิธีที่เหมาะสมในการทำเช่นนี้คืออะไร?
  • มีการรับไฟล์สำรองข้อมูลข้ามคืนโดยกระบวนการอื่นที่คว้าไฟล์ทั้งหมดบนเซิร์ฟเวอร์และเก็บไว้ที่อื่น - เป็นความคิดที่ดีไหมที่จะหมดอายุชุดข้อมูลสำรองหลังจาก 2 วัน? ฉันต้องทำให้มันหมดอายุหรือเปล่า?
  • งานล้างตามลำดับลบ "เก่า" บากและไฟล์ .trn G:\Backupsภายใต้โฟลเดอร์ย่อยของ มันสมเหตุสมผลไหม
  • การทำเช่นนี้จะดีกว่าไหมใน SSIS ดังนั้นฉันสามารถ ETL ของฉันล้มเหลวได้หาก / เมื่อการสำรองข้อมูลล้มเหลว หรือกระบวนการ ETL ของฉันควรดูแลด้วยหรือไม่

ขออภัยถ้านี่เป็นคำถามที่มากเกินไปสำหรับหนึ่งโพสต์หากจำเป็นฉันจะแก้ไขและถามคำถามหลายข้อแทน - ฉันคิดว่าพวกเขาทั้งหมดเกี่ยวข้องกันอย่างแน่นหนา


3
คุณช่วยอธิบายความหมายของคำว่า "truncate" ได้ไหม? คุณหมายถึงคุณคาดหวังว่าการสำรองข้อมูลบันทึกจะลดขนาดไฟล์บันทึกหรือไม่ เพื่อจุดประสงค์อะไร? ดังนั้นมันสามารถเติบโตได้อีกครั้ง?
Aaron Bertrand

3
นอกจากนี้ฉันขอแนะนำให้คุณอ่านคำถามนี้และคำตอบสำหรับพื้นหลังก่อนเพิ่มเติม: dba.stackexchange.com/q/29829/1186
Aaron Bertrand

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

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

3
เนื่องจากคุณบอกว่าคุณไม่ต้องการการกู้คืนตรงเวลาฉันไม่แน่ใจว่าทำไมคุณถึงเลือกตัวเลือกการกู้คืนแบบเต็มรูปแบบ
Aaron Aaron Bertrand

คำตอบ:


7

มีเพียง SSIS ข้ามคืนเท่านั้นที่จะทำการเขียนเวลากลางวันคือการอ่านทั้งหมด - ฉันต้องการการกู้คืนรายวันเท่านั้น

คุณควรเลือกรูปแบบการกู้คืนตามความต้องการทางธุรกิจของคุณ:

  • ธุรกิจข้อมูลมีจำนวนเท่าไหร่ที่สามารถหลุดรอดและในเวลาเดียวกันสามารถอยู่รอดได้?

ขึ้นอยู่กับคำตอบข้างต้นคุณควรเลือกของรูปแบบการกู้คืนฐานข้อมูล

ในแง่ง่าย(ไม่ได้พูดคุยเป็นกลุ่มเข้าสู่ระบบรูปแบบการกู้คืน) ,

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

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

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


ฉันอยากจะแนะนำให้คุณคูแผนการบำรุงรักษาและดำเนินการ [วิธีการแก้ปัญหาการบำรุงรักษาสมาร์ท - ที่เป็นเรื่องง่ายและมีความยืดหยุ่นและต่อไปนี้ปฏิบัติที่ดีที่สุด] - 5 - โซลูชันสำรองของ Ola (และโซลูชันการบำรุงรักษาดัชนีเช่นกัน)


ช่วยตอบคำถามของคุณ:

จะสำรองข้อมูลบันทึกธุรกรรมเช่นนี้โดยอัตโนมัติหรือไม่?

โปรดอย่าผนวกข้อมูลสำรองหรือตั้งค่าให้หมดอายุ พวกเขาสร้างระเบียบใหญ่ ใช้INITและทำการสำรองข้อมูลบันทึกแยกต่างหากด้วยการประทับวันที่และเวลา ดูแลรักษาง่าย ใช้โซลูชันสำรองของ Ola สำหรับสิ่งนั้น โซลูชันมีความยืดหยุ่นในการลบข้อมูลสำรองเก่าเช่นกัน

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

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

นอกจากนี้การสำรองข้อมูลบันทึกในระหว่างการสำรองข้อมูลเต็มรูปแบบจะไม่ตัดทอนบันทึกธุรกรรม A (สองสาม) บันทึกสำรอง / s หลังจากเสร็จสิ้นการสำรองข้อมูลเต็มจะตัดทอนบันทึก

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

งานการล้างข้อมูลตามลำดับจะลบไฟล์ "เก่า" .bak และ. trn ภายใต้โฟลเดอร์ย่อยของ G: \ Backups มันสมเหตุสมผลไหม การทำเช่นนี้จะดีกว่าไหมใน SSIS ดังนั้นฉันสามารถ ETL ของฉันล้มเหลวได้หาก / เมื่อการสำรองข้อมูลล้มเหลว หรือกระบวนการ ETL ของฉันควรดูแลด้วยหรือไม่

สำหรับทั้งคู่ข้างต้นให้ใช้โซลูชันบำรุงรักษาสำรองของ Ola มันจะดูแลการลบไฟล์เก่า


น่ากลัว ดังนั้นฉันจึงเปลี่ยนรูปแบบการกู้คืนเป็น 'ง่าย' สำหรับฐานข้อมูลทั้งหมดของฉันและเรียกใช้สคริปต์ของ Ola ดูเหมือนทั้งหมดที่ฉันต้องทำตอนนี้คือการกำหนดเวลางานที่สร้างขึ้นจริงหรือ
Mathieu Guindon

ได้โปรด นอกจากนี้อย่าลืมทำเครื่องหมายว่าเป็นคำตอบ / upvote หากคำตอบคือทางออกหรือเป็นประโยชน์ - วิธีนี้จะไม่ตั้งค่าสถานะเป็นไม่ได้รับคำตอบ
Kin Shah
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.