คำถามติดแท็ก transaction-log

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

4
ตั้งค่าขนาดของไฟล์บันทึกด้วยตนเองหลังจากลดขนาด SQL Server 2008 R2
กำลังกลายเป็น DBA ที่ไม่ได้ตั้งใจในการทำงานที่พวกเขาในเวลานั้นและต้องการความช่วยเหลือในบางสิ่งบางอย่าง เรามีฐานข้อมูล 40GB ในโหมดการกู้คืนเต็มไม่มีการสำรองข้อมูลบันทึกการกำหนดค่าและไฟล์บันทึกขนาดใหญ่ 84GB แผนของฉันในการกอบกู้สถานการณ์นี้คือการเรียกใช้การสำรองข้อมูลบันทึกเต็มรูปแบบในฐานข้อมูลลดขนาดแฟ้มบันทึกและสร้างแผนการบำรุงรักษาเพื่อเรียกใช้การสำรองข้อมูลบันทึกทุกคืนด้วยการสำรองฐานข้อมูลเพื่อช่วยให้สามารถควบคุมได้ ปัญหาของฉันคือฉันไม่ต้องการให้ล็อกไฟล์ย่อขนาดลงและใช้จ่ายในเช้าวันแรกของวันจันทร์ที่เติบโตอย่างต่อเนื่อง ฉันมีการประมาณการคร่าวๆว่าไฟล์ควรเป็นอย่างไร (ประมาณ 20% ของฐานข้อมูล) และต้องการตั้งค่านี้จาก get-go เพื่อให้แน่ใจว่ามีพื้นที่ต่อเนื่องมากที่สุด นี่เป็นเพียงกรณีของการเปลี่ยน "ขนาดเริ่มต้น" ภายใต้คุณสมบัติของฐานข้อมูล -> ไฟล์หรือไม่ ฉันเดาเช่นกันว่าฐานข้อมูลจะต้องออฟไลน์เพื่อให้เกิดสิ่งนี้? ขอบคุณล่วงหน้า

1
ไม่สามารถตัดทอนบันทึกธุรกรรม log_reuse_wait_desc - AVAILABILITY_REPLICA
เช้านี้ฉันตื่นขึ้นมาด้วยการทำธุรกรรมบันทึกการแจ้งเตือนอย่างเต็มรูปแบบในหนึ่งในฐานข้อมูลของเรา เซิร์ฟเวอร์นี้เป็นคลัสเตอร์ alwayson และยังเป็นสมาชิกการจำลองแบบของทรานแซคชัน ฉันตรวจสอบ log_reuse_wait_desc และพบว่ามีการสำรองข้อมูล มีคนปิดการใช้งานการสำรองข้อมูลโดยไม่ตั้งใจ 4 วันก่อนหน้าฉันเปิดใช้งานงานสำรองข้อมูลบันทึกอีกครั้งและบันทึกถูกล้าง ตั้งแต่ 4 โมงเช้าฉันคิดว่าฉันจะไปทำงานในภายหลังในเช้าวันนั้นและปัดท่อนไม้ตามที่มันโตขึ้นเป็น 400GB 10:00 น. - ฉันอยู่ในสำนักงานและฉันตรวจสอบการใช้งานบันทึกก่อนที่จะย่อขนาดลงและประมาณ 16% ฉันประหลาดใจและตรวจสอบ log_reuse_wait_desc ซึ่งแสดงการจำลองแบบ ฉันสับสนเพราะนี่เป็นสมาชิกการจำลองแบบ จากนั้นเราเห็นว่า db ถูกเปิดใช้งานสำหรับ CDC และคิดว่าอาจเป็นสาเหตุ CDC ที่ถูกปิดใช้งานและตอนนี้ log_reuse_wait_desc แสดง AVAILABILITY_REPLICA การใช้งานบันทึกในขณะที่ยังคงเติบโตอย่างต่อเนื่องและที่ 17% ในขณะนี้ ฉันตรวจสอบแดชบอร์ด alwayson และตรวจสอบคิวที่ส่งและทำซ้ำและทั้งคู่นั้นแทบจะเป็นศูนย์ ฉันไม่แน่ใจว่าทำไมการใช้บันทึกซ้ำจึงแสดงเป็น AVAILABILITY_REPLICA และไม่สามารถล้างบันทึกได้ มีความคิดว่าทำไมสิ่งนี้เกิดขึ้น?

1
วิธีที่ดีที่สุดในการสำรองและตัดทอนบันทึกธุรกรรมตามกำหนดเวลา
ฉันไม่ใช่ 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); …

1
สำรองข้อมูล Tail Log เมื่อทำการกู้คืน?
โดยทั่วไปเมื่อทำการกู้คืนฐานข้อมูลจากเซิร์ฟเวอร์ที่ใช้งานจริงไปยังเซิร์ฟเวอร์ที่ไม่ได้ใช้งานจริงฉันจะใช้ตัวเลือก WITH REPLACE เช่นเดียวกับเมื่อฉันลืมฉันได้รับข้อผิดพลาดเกี่ยวกับ tail log ที่ไม่มีการสำรองข้อมูล ตาม MSDNฉันควรสำรองข้อมูล tail tail ก่อนที่จะกู้คืน: หากฐานข้อมูลออนไลน์และคุณวางแผนที่จะดำเนินการกู้คืนข้อมูลในฐานข้อมูลให้เริ่มต้นด้วยการสำรองข้อมูลส่วนท้ายของบันทึก เพื่อหลีกเลี่ยงข้อผิดพลาดสำหรับฐานข้อมูลออนไลน์คุณต้องใช้ตัวเลือก… WITH NORECOVERY ของคำสั่ง BACKUP Transact-SQL อันตรายหรือข้อเสียของวิธีที่ฉันทำมีอะไรบ้าง ทำไมการสำรองข้อมูล tail tail ไว้ก่อนจึงเป็นประโยชน์กับฉัน ฉันใช้ SQL Server 2008R2 แต่ฉันสันนิษฐานว่าแบบสอบถามนี้จะเกี่ยวข้องกับ SQL Server รุ่นใหม่กว่าส่วนใหญ่ดังนั้นจึงไม่ได้ติดแท็กเป็นเช่นนั้นในตอนแรก

3
การบำรุงรักษาบันทึกธุรกรรมเมื่อเปลี่ยนเป็นการกู้คืนแบบง่าย
พื้นหลัง: ฉันเพิ่งสืบทอดเซิร์ฟเวอร์ SQL มากกว่า 50+ พร้อมฐานข้อมูล 450+ การสำรองข้อมูลทุกคืนมีขนาดประมาณ 8TB และไม่จำเป็นต้องบอกว่าเราใช้พื้นที่ดิสก์มากกว่าที่เราต้องการ ฐานข้อมูลทั้งหมดถูกตั้งค่าเป็นการกู้คืนแบบเต็มและล็อกธุรกรรมไม่เคยถูกสำรอง ฉันได้ผ่าน SQL Server ทั้งหมดและระบุลำดับความสำคัญต่ำที่ต้องสำรองข้อมูลทุกคืนและยอมรับว่าข้อมูลสูญหายได้ทุกวัน คำถาม: ฉันเปลี่ยนฐานข้อมูลที่มีลำดับความสำคัญต่ำมาเป็นSIMPLEโหมดการกู้คืนจากจำนวนFULLมาก บันทึกธุรกรรมที่มีอยู่จะถูกตัดทอนหรือไม่ (เมื่อสร้างจุดตรวจ)? บันทึกธุรกรรมบางรายการที่มีอยู่คือ 50-100GB อะไรคือวิธีที่ดีที่สุดในการพิจารณาสิ่งที่ฉันควรย่อให้เป็นเพื่อวัตถุประสงค์ในการก้าวไปข้างหน้า เห็นได้ชัดว่าฉันไม่ต้องการให้พวกเขามีขนาดใหญ่ หรือพวกเขาจะหดตัวเมื่อเวลาผ่านไป (ฉันไม่คิดว่าพวกเขาจะ)?

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

3
ปิดใช้งานการบันทึกในบางตาราง
ฉันใช้ SQL Server 2005 ฉันมีสองตารางที่มีข้อมูลรวม ข้อมูลกำลังได้รับการปรับปรุงอย่างต่อเนื่องสร้างข้อมูลบันทึกเกือบ 5GB ต่อวัน (นั่นใหญ่กว่าฐานข้อมูลทั้งหมด!) ฉันต้องการปิดการใช้งานการบันทึกในตารางเหล่านี้เนื่องจากการย้อนกลับไม่จำเป็นจริงๆ อย่างไรก็ตามฉันต้องการที่จะเข้าสู่ระบบในตารางอื่น ๆ ในฐานข้อมูล เป็นไปได้หรือไม่ที่จะปิดการใช้งานการบันทึกในตารางบางอย่างภายในฐานข้อมูล? หากไม่มีฉันสามารถวางสองตารางในสคีมาเดียวกันจากนั้นปิดใช้งานการบันทึกในสคีมาหรือไม่ เป็นตัวเลือกเดียวที่จะย้ายสองตารางไปยังฐานข้อมูลแยกต่างหากและปิดการใช้งานการบันทึกที่นั่นหรือไม่ อัปเดต: ฉันเดาว่าฉันจะอธิบายว่าทำไมฉันจึงไม่จำเป็นต้องบันทึกกิจกรรมบนตารางเหล่านี้ ตารางทั้งสองนั้นเต็มไปด้วยข้อมูล GPS ดังนั้นจึงมีขนาดค่อนข้างใหญ่ ตารางแรกคือการจับตำแหน่งดิบจากหกตาราง Android ในเขตข้อมูล ข้อมูลใหม่จากแท็บเล็ตแต่ละเครื่องมาในทุก ๆ 5-10 วินาที ข้อมูลนั้นจะถูกรวมเป็น locationA, locationB, travelTime เป้าหมายคือเพื่อให้มีเวลาในการเดินทางสั้นที่สุดระหว่างสถานที่ทั้งหมดโดยอิงจากข้อมูลการขับขี่จริง ข้อมูลนี้ใช้สำหรับเมืองเล็ก ๆ เท่านั้นและแม่นยำถึงทศนิยมสี่ตำแหน่งเท่านั้นจึงสามารถจัดการได้ อย่างไรก็ตามเมื่อข้อมูลดิบใหม่เข้ามามีเวลาเดินทางช้าลงซึ่งจำเป็นต้องได้รับการอัปเดตและข้อมูลใหม่ที่ต้องถูกแทรก เมื่อรวบรวมข้อมูลดิบแล้วข้อมูลจะถูกลบทิ้ง เราจะไม่ย้อนกลับไปสู่เวลาเดินทางอีกต่อไปดังนั้นนี่คือเหตุผลที่การย้อนกลับไม่สำคัญมากในตารางเหล่านี้

2
คำสั่ง 'สร้างฐานข้อมูล' ของ SQL Server วิธีสืบทอดการตั้งค่า autogrowth เป็นอย่างไร
ฉันใช้ SQL Server 2008 R2 และสร้างฐานข้อมูลผ่านการปรับใช้อย่างต่อเนื่อง ในระบบของเราการตั้งค่า autogrowth 1Mb / 10% เริ่มต้นใน SQL Server ทำงานได้ไม่ดีกับข้อมูลของเรา โดยเฉพาะอย่างยิ่งเมื่อเรามีแอปพลิเคชันรุ่นเก่าที่ป้องกันไม่ให้เราเปลี่ยนสคีมามาก เราต้องการให้การตั้งค่าฐานข้อมูลถูกกำหนดค่าในระดับอินสแตนซ์เพื่อให้เราสามารถเปลี่ยนแปลงการปรับใช้แบบฉากได้ ฉันได้อ่านในหลาย ๆ ที่ที่การตั้งค่าเริ่มต้นสำหรับฐานข้อมูลใหม่นั้นขึ้นอยู่กับการตั้งค่าสำหรับ 'model' แต่ดูเหมือนว่าจะทำงานได้โดยคลิกฐานข้อมูลใหม่ใน SQL Management studio UI และไม่ได้มาจากสคริปต์เช่น CREATE DATABASE [MyDb] msdn.microsoft.com/en-us/library/ms186388(v=sql.105).aspx sqlservercentral.com/Forums/Topic1065073-391-1.aspx /programming/8828557/possible-to-configure-database-autogrowth-settings-at-the-instance-level/8828604#comment15586568_8828604 มีใครที่จะได้รับสิ่งนี้เพื่อทำงานกับสคริปต์สร้างหรือไม่? มีวิธีอื่นที่ฉันสามารถตั้งค่า autogrowth ต่อหนึ่งเซิร์ฟเวอร์ได้หรือไม่

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

1
บันทึกธุรกรรมและบันทึกไบนารีแตกต่างกันอย่างไร
มาจากร้าน SQL Server ตอนนี้ฉันทำงานกับ MySQL และฉันอยากรู้ ล็อกไบนารีของ MySQL กับธุรกรรมล็อกของ MSSQL แตกต่างกันอย่างไร? จากแนวโน้มจนถึงขณะนี้ดูเหมือนว่ามีเพียงหนึ่งไบนารีบันทึกต่อหนึ่งอินสแตนซ์ MySQL ซึ่งตรงข้ามกับบันทึกธุรกรรมต่อฐานข้อมูลเช่นเดียวกับใน MSSQL
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.