ฐานข้อมูลกลุ่มความพร้อมใช้งานติดอยู่ในโหมดไม่ซิงโครไนซ์ / กู้คืนค้างอยู่


12

ในขณะที่อัปเกรดที่เก็บข้อมูลในอินสแตนซ์ของ SQL Server 2014 SP1 (12.0.4422.0) เราพบปัญหาที่ฐานข้อมูลสองแห่งจะไม่เริ่มทำงานบนฐานรองหลังจากรีสตาร์ท SQL Server เซิร์ฟเวอร์ออฟไลน์ไม่กี่ชั่วโมงในขณะที่เราติดตั้ง SSD ใหม่ (ใหญ่กว่า) และคัดลอกไฟล์ข้อมูลไปยังโวลุ่มใหม่ เมื่อเรารีสตาร์ท SQL Server ทั้งหมด แต่สองฐานข้อมูลเริ่มซิงโครไนซ์อีกครั้ง อีกสองคนที่ถูกแสดงใน SSMS เป็นไม่ตรงกัน / กู้คืนรอดำเนินการ

SSMS ไม่ซิงโครไนซ์ / กู้คืนค้างอยู่

ไม่พบปัญหาการซิงโครไนซ์ / การกู้คืนที่คล้ายกันมาก่อนฉันตรวจสอบสถานะภายใต้กลุ่มความพร้อมใช้งาน -> ฐานข้อมูลความพร้อมใช้งาน แต่พวกเขาแสดง X สีแดง:

กลุ่มห้องว่างฐานข้อมูลห้องว่าง

และแม้แต่พยายามระงับการเคลื่อนย้ายข้อมูลสร้างข้อความแสดงข้อผิดพลาด:

ไม่สามารถระงับการเคลื่อนย้ายข้อมูลในฐานข้อมูล 'StackExchange.Bycycles.Meta' ซึ่งอยู่ในแบบจำลองความพร้อมใช้งาน 'ny-sql03' ในกลุ่มความพร้อมใช้งาน 'SENetwork_AG' (Microsoft.SqlServer.Smo)

ข้อมูลเพิ่มเติม: เกิดข้อยกเว้นขณะดำเนินการคำสั่งหรือชุดงาน transact-SQL (Microsoft.SqlServer.ConnectionInfo)

ฐานข้อมูล 'StackExchange.Bycycles.Meta' ไม่สามารถเปิดได้เนื่องจากไฟล์ที่ไม่สามารถเข้าถึงหรือหน่วยความจำไม่เพียงพอหรือพื้นที่ดิสก์ไม่เพียงพอ ดูบันทึกข้อผิดพลาด SQL Server สำหรับรายละเอียด (เซิร์ฟเวอร์ SQL Sql ข้อผิดพลาด: 945)

ฉันตรวจสอบและมีไฟล์อยู่และไม่มีปัญหาสิทธิ์ใด ๆ ฉันยังตรวจสอบบันทึก SQL Server ใน SSMS ภายใต้การจัดการ แต่ไม่เห็นอะไรเกี่ยวกับการกู้คืนที่ค้างอยู่หรือปัญหาใด ๆ กับฐานข้อมูลทั้งสอง

ค้นหาความช่วยเหลือผมพบว่าทั้งสองแตกต่างกันบทความที่กล่าวว่าฐานข้อมูลจะต้องถูกเรียกคืน

มีวิธีใดบ้างที่จะดำเนินการเรพลิเคทข้อมูลต่อบนข้อมูลรองเมื่อฐานข้อมูลติดอยู่ใน Recovery Pending?

คำตอบ:


16

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

-- Remove database from Availability Group:    
Alter Database [StackExchange.Bicycles.Meta] SET HADR OFF;

-- Apply t-logs to catch up. This can be done manually in SSMS or via:
RESTORE LOG [StackExchange.Bicycles.Meta] FROM DISK = '\\ny-back01\backups\SQL\_Trans\SENetwork_AG\StackExchange.Bicycles.Meta\StackExchange.Bicycles.Meta_LOG_20160217_033201.trn' WITH NORECOVERY;

-- Re-join database to availability group
ALTER DATABASE [StackExchange.Bicycles.Meta] SET HADR AVAILABILITY GROUP = [SENetwork_AG];
ALTER DATABASE [StackExchange.Bicycles.Meta] SET HADR RESUME;

แสดงการทำงานด้านบนบนเซิร์ฟเวอร์รองสำหรับฐานข้อมูลทั้งคู่ซึ่งพวกเขาสามารถเริ่มทำการซิงโครไนซ์อีกครั้งได้

อัปเดต: เรามีปัญหาที่คล้ายกันซึ่งหลังจากManual AG Failoverหนึ่งในฐานข้อมูลในเรพลิกาหลักใหม่ติดอยู่ในโหมดไม่ซิงโครไนซ์ (เปลี่ยนเป็นไม่ซิงโครไนซ์ / กู้คืนค้างอยู่หลังจากรีสตาร์ท SQL Server) และขั้นตอนข้างต้น ปัญหาเช่นกัน


1

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


-2

ในครั้งถัดไปให้ลองล้มเหลวในอุปกรณ์หลักเพื่อ 'ไม่ซิงโครไนซ์' รองและกลับมาอีกครั้ง ตอนนี้ควรทำข้อมูลรองให้ตรงกัน


3
นี่เป็นคำแนะนำที่น่ากลัว
arcain

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