Neden TO DISK = N’NUL’
?
Neden kullandığınızı anlamıyorum TO DISK = N’NUL’
:
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
Bunu yaparsanız, yedekleme NUL
, (yani. = Hiçbir yere / hiçbir yere) olarak kaydedilir ve dosyası olmadığı için kullanılamaz.
İken NUL
de LOG Yedekler için bir hedef olarak kullanılabilir, bu günlüklerine kaybolacak çünkü özellikle Prod sunucularında ya kullanılmamalıdır ve Yedek zincir kırılacak. (~ a benzer SHRINKFILE
)
LOG Yedekleme
Gruba bir DB eklemeden önce onu hazırlamanız gerekir. İkincil bir DB hazırlamak istediğinizde, en az 1 İşlem Günlüğü yedeği alınmalı ve geri yüklenmelidir. Ayna, ikincil DB'de hangi işlemlerin önceden senkronize edildiğini ve hangi işlemlerin henüz birincil DB ile senkronize olmadığını anlamak için kullanır.
Bu nedenle, birincil DB'deki İşlem Günlüklerini Yedeklemelisiniz:
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
COPY_ONLY
Seçenek kullanılmalıdır. Günlüklerin LOG yedeklemesinin sonunda kesilmemesini sağlar.
Birincil DB yedekleme zinciri
Ancak, bir günlük yedeklemesini tek başına geri yükleyemezsiniz, yani yedekleme zinciri olmadan (bkz. Kin yanıtı). Bu, İşlem Günlüğü yedeklemesinin bir TAM Veritabanı Yedeklemesi (+ gerekirse isteğe bağlı bir Diferansiyel) alındıktan sonra alınması gerektiği anlamına gelir.
Yana COPY_ONLY
seçenek yedekleme zincirini kırmak değil, aynı zamanda bir yedek zincirini oluşturmaz. Bu COPY_ONLY
seçenek Veritabanı Yedekleme için kullanılamaz.
Yedeklemeler sırayla:
COPY_ONLY
Seçenek olmadan TAM Veritabanı yedekleme
- İsteğe bağlı Diferansiyel yedekleme
- 1 LOG Yedekleme
COPY_ONLY
seçeneği
- gerekirse başka bir (veya daha fazla) LOG yedeklemesi ...
İkincil DB'yi geri yükleme
Ardından, Veritabanı Yedeklemesi ikincilde geri yüklenmelidir (+ Diferansiyel).
Bu ile restore edilmelidir NORECOVERY
aynı zamanda TAM Yedekleme restore edildikten sonra LOG yedekleme (ler) geri yüklemek istediğiniz çünkü seçenek.
Son olarak LOG Yedeklemesini geri yükleyeceksiniz. Bu NORECOVERY
seçeneği kullanmaya devam etmeniz gerekir, çünkü ayna işlemi bir kez geri yüklemeye devam edecektir.
- TAM yedeklemeyi
NORECOVERY
seçenekle geri yükle
NORECOVERY
Seçenekle DIFF yedeklemesini geri yükleme
- Tüm LOG yedeklemelerini
NORECOVERY
isteğe bağlı olarak geri yükleme
Hepsini bir araya getirelim (env'nize uyarlayın)
Birincil sunucuda:
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
İkincil sunucuda:
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
Daha sonra, kullanılabilirlik grubuna yeni ikincil DB eklemeye devam edebilirsiniz ...
İsteğe bağlı eylemler
- DISK seçeneğini, Birincil ve İkincil sunuculardan kullanılabilen paylaşılan bir klasöre ayarlamak daha iyidir.
- DB dosyalarını hem Birincil hem de İkincil sunucularda benzer diskte ve konumda depolamak daha iyidir.