การกู้คืนฐานข้อมูล SQL Server 2012 ในสภาพพร้อมใช้งานสูง


13

ฉันมีฐานข้อมูลที่อยู่ในโหมดความพร้อมใช้งานสูงตลอดเวลาที่ซิงโครไนซ์กับฐานข้อมูลอื่นในอินสแตนซ์อื่น ฉันจะคืนค่าจาก.bakไฟล์ไปยังฐานข้อมูลหลักโดยใช้T-SQLอย่างไร

ฉันยังใหม่กับความพร้อมใช้งานสูงและฉันได้รับคำแนะนำว่าฉันจำเป็นต้องลบฐานข้อมูลออกจากความพร้อมใช้งานสูงก่อนที่ฉันจะสามารถกู้คืนได้

ฉันหวังว่าฉันจะสามารถกู้คืนตรงไปยังหลักในขณะที่AlwaysOnยังคงเปิดใช้งานและมันจะซิงค์อัตโนมัติกับรอง

คำตอบ:


15

ฟังที่ปรึกษาของคุณ ด้วยการกู้คืนการสำรองข้อมูลคุณกำลังแทนที่สกีมาฐานข้อมูลและข้อมูลเป็นหลัก คุณจะต้องปิดการซิงโครไนซ์ลบฐานข้อมูลออกจาก HA และทำการกู้คืนบนหลักและเรพลิกาปล่อยให้เวอร์ชันเรพลิคาอยู่ในสถานะการกู้คืนโดยใช้ WITH NORECOVERY เมื่อสำรองข้อมูลของคุณแล้วให้ใส่ DB กลับเข้าไปใน HA และเริ่มการซิงโครไนซ์อีกครั้ง

HA นั้นคล้ายกันมากกับการมิเรอร์และใช้เทคโนโลยีที่คล้ายคลึงกัน คุณจะต้องปฏิบัติต่อฐานข้อมูล HA ของคุณเช่นเดียวกัน

รหัสจะคล้ายกับต่อไปนี้:

- บนหลัก

ALTER AVAILABILITY GROUP MyAG REMOVE DATABASE AdventureWorks2012;

- บนหลัก

RESTORE DATABASE AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.

RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH RECOVERY;

- ในระดับมัธยมศึกษา

RESTORE DATABASE AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';

RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY;

- บนหลัก

ALTER AVAILABILITY GROUP MyAG ADD DATABASE AdventureWorks2012;

- ในระดับมัธยมศึกษา

ALTER DATABASE AdventureWorks2012 SET HADR AVAILABILITY GROUP = MyAG;

คำถามเกี่ยวกับคำตอบข้างต้น ... ในรหัสที่ให้มาระบบจะเรียกคืนข้อมูลหลักด้วย NoRecovery ฉันคิดว่าแบบจำลองเท่านั้นที่จะทำได้ด้วย NoRecovery
Truett

ถูกต้อง แต่อ่านต่อไป คืนค่าบันทึกถูกเข้ารหัสแล้วในที่สุดก็พร้อมกับ RECOVERY เพื่อให้สามารถใช้งานได้
Steve Mangiameli

หากกลุ่มหนึ่งไม่สามารถเข้าร่วมกลุ่มความพร้อมใช้งานบนอุปกรณ์รองได้อาจจำเป็นต้องกู้คืนบันทึกธุรกรรม แหล่งที่มานี้ช่วยแก้ไขข้อผิดพลาดดังต่อไปนี้:The mirror database, "dbname", has insufficient transaction log data to preserve the log backup chain of the principal database. This may happen if a log backup from the principal database has not been taken or has not been restored on the mirror database.
Hans Vonn

ดังนั้นบันทึกจะคืนค่า ดูความคิดเห็นด้านบน
Steve Mangiameli

@SteveMangiameli ขอบคุณที่ให้ข้อมูลนี้ มันมีประโยชน์ ตอนนี้ฉันเข้าใจแล้วว่าคุณกำลังกู้คืนจากอุปกรณ์สำรองข้อมูลแบบลอจิคัลแทนที่จะเป็นไฟล์ เมื่อฉันกู้คืนจากไฟล์ฉันใช้ไฟล์. bak และ. trn แยกกัน
Hans Vonn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.