Tại sao TO DISK = N’NUL’
?
Tôi không hiểu tại sao bạn đang sử dụng TO DISK = N’NUL’
:
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
Nếu bạn làm điều đó, bản sao lưu được lưu vào NUL
, (tức là = đến hư không / không có gì) và không thể được sử dụng vì tệp của nó không tồn tại.
Mặc dù NUL
cũng có thể được sử dụng làm đích cho Sao lưu LOG, nhưng nó cũng không nên được sử dụng, đặc biệt là trên các máy chủ Prod vì LOG sẽ bị mất và chuỗi Sao lưu sẽ bị phá vỡ. (~ tương tự như a SHRINKFILE
)
Đăng nhập sao lưu
Trước khi thêm DB vào nhóm, bạn phải chuẩn bị nó. Khi bạn muốn chuẩn bị một DB thứ cấp, ít nhất 1 bản sao lưu Nhật ký giao dịch phải được thực hiện và khôi phục. Chiếc gương sử dụng nó để tìm ra những giao dịch nào đã được đồng bộ hóa trên DB thứ cấp và những giao dịch nào chưa được đồng bộ hóa với DB chính.
Do đó, bạn phải Sao lưu Nhật ký giao dịch trên DB chính:
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
Các COPY_ONLY
tùy chọn phải được sử dụng. Nó đảm bảo rằng các Nhật ký không bị cắt ở cuối bản sao lưu LOG.
Chuỗi dự phòng DB chính
Tuy nhiên, bạn không thể khôi phục bản sao lưu nhật ký một mình, nghĩa là không có chuỗi sao lưu (xem câu trả lời Kin quá). Điều này có nghĩa là sao lưu Nhật ký giao dịch phải được thực hiện sau khi Sao lưu cơ sở dữ liệu ĐẦY ĐỦ (+ một vi sai tùy chọn nếu cần) đã được thực hiện.
Vì COPY_ONLY
tùy chọn không phá vỡ chuỗi sao lưu, nên nó cũng không tạo ra chuỗi dự phòng. Các COPY_ONLY
tùy chọn không thể được sử dụng để sao lưu cơ sở dữ liệu.
Sao lưu theo thứ tự:
- Sao lưu cơ sở dữ liệu FULL mà không có
COPY_ONLY
tùy chọn
- Sao lưu vi sai tùy chọn
- Sao lưu 1 LOG với
COPY_ONLY
tùy chọn
- khác (hoặc nhiều hơn) sao lưu LOG nếu cần ...
Khôi phục DB thứ cấp
Sau đó, sao lưu cơ sở dữ liệu phải được khôi phục (+ vi sai) trên thứ cấp.
Nó phải được khôi phục với NORECOVERY
tùy chọn vì bạn cũng muốn khôi phục (các) bản sao lưu LOG sau khi FULL Backup được khôi phục.
Cuối cùng, bạn sẽ khôi phục lại Sao lưu LOG. Bạn vẫn cần sử dụng NORECOVERY
tùy chọn vì gương sẽ tiếp tục khôi phục giao dịch một lần tại chỗ.
- Khôi phục bản sao lưu FULL với
NORECOVERY
tùy chọn
- Khôi phục bản sao lưu DIFF với
NORECOVERY
tùy chọn
- Khôi phục tất cả các bản sao lưu LOG theo thứ tự với
NORECOVERY
tùy chọn
Cho phép kết hợp tất cả lại với nhau (thích ứng với env của bạn)
Trên máy chủ chính chạy:
USE master
Go
BACKUP DATABASE [test0916aj8CJ] TO DISK = N'....bak'
WITH FORMAT, INIT, NAME = N'test0916aj8CJ-Full Database Backup', STATS = 10
GO
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
GO
Trên máy chủ thứ cấp chạy:
USE master
Go
RESTORE DATABASE [test0916aj8CJ] FROM DISK = N'....bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE LOG [test0916aj8CJ] FROM DISK = N'....bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
Sau đó, bạn có thể tiến hành thêm DB thứ cấp mới vào nhóm khả dụng ...
Hành động tùy chọn
- Tốt hơn là đặt tùy chọn DISK thành thư mục dùng chung có sẵn từ cả máy chủ Chính và Máy chủ phụ.
- Cũng tốt hơn để lưu trữ các tệp DB trên đĩa và vị trí tương tự trên cả máy chủ Chính và Thứ cấp.