Khôi phục cơ sở dữ liệu SQL Server 2012 trong tính sẵn sàng cao


13

Tôi có một cơ sở dữ liệu luôn ở chế độ sẵn sàng cao được đồng bộ hóa với một cơ sở dữ liệu khác trong một trường hợp khác. Làm cách nào tôi có thể khôi phục từ một .baktệp vào cơ sở dữ liệu chính bằng cách sử dụng T-SQL?

Tôi mới sử dụng tính sẵn sàng cao và tôi đã được khuyên rằng tôi cần phải lấy cơ sở dữ liệu ra khỏi tính sẵn sàng cao trước khi tôi có thể khôi phục và sau đó đưa nó trở lại với tính sẵn sàng cao một lần nữa nhưng tôi không chắc chắn.

Tôi hy vọng tôi có thể khôi phục thẳng vào chính trong khi AlwaysOnvẫn được bật và nó sẽ tự động đồng bộ hóa với phụ.

Câu trả lời:


15

Lắng nghe cố vấn của bạn. Bằng cách khôi phục bản sao lưu, về cơ bản, bạn đang thay thế lược đồ cơ sở dữ liệu và dữ liệu. Bạn sẽ cần tắt đồng bộ hóa, loại bỏ DB khỏi HA và thực hiện khôi phục trên bản chính và bản sao, để phiên bản sao chép ở trạng thái khôi phục bằng cách sử dụng VỚI BÌNH THƯỜNG. Khi đã có bản sao lưu của bạn, đặt DB trở lại HA và bắt đầu đồng bộ hóa lại.

HA rất giống với phản chiếu và sử dụng công nghệ tương tự, chỉ là gần như không tinh vi. Bạn cũng sẽ muốn đối xử với HA DB của mình tương tự.

Mã sẽ tương tự như sau:

- trên tiểu học

ALTER AVAILABILITY GROUP MyAG REMOVE DATABASE AdventureWorks2012;

- trên tiểu học

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;

- trên thứ cấp

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;

- trên tiểu học

ALTER AVAILABILITY GROUP MyAG ADD DATABASE AdventureWorks2012;

- trên thứ cấp

ALTER DATABASE AdventureWorks2012 SET HADR AVAILABILITY GROUP = MyAG;

Câu hỏi liên quan đến câu trả lời ở trên ... Trong mã được cung cấp, PRIMARY đã được khôi phục với NoRecovery. Tôi nghĩ rằng chỉ có bản sao sẽ được thực hiện với NoRecovery.
Truett

Đúng, nhưng tiếp tục đọc. Khôi phục nhật ký đã được mã hóa và cuối cùng với PHỤC HỒI để làm cho nó có sẵn để sử dụng.
Steve Mangiameli

Nếu một người không thể tham gia lại nhóm khả dụng trên phụ, thì có thể cần khôi phục nhật ký giao dịch. Nguồn này đã giúp giải quyết lỗi sau: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

Do đó nhật ký khôi phục. Xem bình luận ở trên.
Steve Mangiameli

@SteveMangiameli cảm ơn bạn đã đưa lên. Nó đã có ích. Tôi hiểu bây giờ bạn đang khôi phục từ một thiết bị sao lưu logic thay vì từ tệp. Khi tôi khôi phục từ tệp, tôi sử dụng các tệp .bak và .trn riêng biệt.
Hans Vonn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.