Dlaczego TO DISK = N’NUL’
?
Nie rozumiem, dlaczego używasz TO DISK = N’NUL’
:
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
Jeśli to zrobisz, kopia zapasowa zostanie zapisana w NUL
(tj. = Nigdzie / nic) i nie będzie można jej użyć, ponieważ jej plik nie istnieje.
Chociaż NUL
może być również używany jako miejsce docelowe kopii zapasowych LOG, nie należy go również używać, szczególnie na serwerach Prod, ponieważ dzienniki zostaną utracone, a łańcuch kopii zapasowych zostanie zerwany. (~ podobny do a SHRINKFILE
)
Kopia zapasowa dziennika
Przed dodaniem bazy danych do grupy należy ją przygotować. Aby przygotować pomocniczą bazę danych, należy wykonać i przywrócić co najmniej 1 kopię zapasową dziennika transakcji. Serwer lustrzany używa go do ustalenia, które transakcje zostały już zsynchronizowane na dodatkowej bazie danych, a które transakcje nie są jeszcze zsynchronizowane z podstawową bazą danych.
Dlatego należy wykonać kopię zapasową dzienników transakcji na podstawowej bazie danych:
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
COPY_ONLY
Opcja musi być używany. Zapewnia to, że dzienniki nie są obcinane na końcu kopii zapasowej dziennika.
Główny łańcuch kopii zapasowych DB
Nie można jednak przywrócić samej kopii zapasowej dziennika, tzn. Bez łańcucha kopii zapasowych (patrz także odpowiedź Kin). Oznacza to, że kopia zapasowa dziennika transakcji musi zostać wykonana po wykonaniu kopii zapasowej PEŁNEJ bazy danych (w razie potrzeby opcjonalnej funkcji różnicowej).
Ponieważ COPY_ONLY
opcja nie przerywa łańcucha kopii zapasowych, nie tworzy również łańcucha kopii zapasowych. COPY_ONLY
Opcja nie może być używany do kopii zapasowej bazy danych.
Kopie zapasowe w kolejności:
- PEŁNA kopia zapasowa bazy danych bez
COPY_ONLY
opcji
- Opcjonalna kopia zapasowa różnicowa
- 1 kopia zapasowa dziennika z
COPY_ONLY
opcją
- kolejna (lub więcej) kopia zapasowa dziennika, jeśli to konieczne ...
Przywróć pomocniczą bazę danych
Następnie należy przywrócić kopię zapasową bazy danych (+ Różnicowy) na urządzeniu pomocniczym.
Musi zostać przywrócona z NORECOVERY
opcją, ponieważ chcesz również przywrócić kopię zapasową dziennika po przywróceniu PEŁNEJ kopii zapasowej.
Na koniec przywrócisz kopię zapasową dziennika. Nadal musisz skorzystać z tej NORECOVERY
opcji, ponieważ kopia lustrzana będzie przywracać transakcje po założeniu.
- Przywróć PEŁNĄ kopię zapasową z
NORECOVERY
opcją
- Przywróć kopię zapasową DIFF z
NORECOVERY
opcją
- Przywróć wszystkie kopie zapasowe dziennika w kolejności z
NORECOVERY
opcją
Zbierzmy to wszystko razem (dostosuj do swojej env)
Na podstawowym serwerze uruchom:
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
Na serwerze pomocniczym uruchom:
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
Następnie możesz przystąpić do dodawania nowej dodatkowej bazy danych do grupy dostępności ...
Działania opcjonalne
- Lepiej ustawić opcję DYSK na folder współdzielony, który jest dostępny zarówno z serwera głównego, jak i pomocniczego.
- Lepiej jest również przechowywać pliki DB na podobnym dysku i lokalizacji zarówno na serwerze głównym, jak i pomocniczym.