Obecnie mam zaplanowane zadanie, które uruchamia się każdej nocy o 2 rano, które wywołuje SQLCMD.exe i przekazuje mu skrypt .sql w celu wykonania kopii zapasowej (pokazano poniżej). Jesteśmy dość małą firmą z rosnącymi potrzebami ze względu na duży rozwój po stronie biznesowej. Utrata 1 dni danych w tym momencie kosztowałaby dziesiątki tysięcy dolarów w porównaniu do kilkuset w tym roku w zeszłym roku. Dopóki nie będę mógł migrować tej platformy DB do innego rozwiązania, w którym występuje dublowanie danych z dużą nadmiarowością, takiego jak SQL Azure, co mogę zrobić, aby uzyskać częstsze kopie zapasowe? Czy poniższy skrypt zmusza bazę danych do przejścia w tryb offline? Czy mogę uruchomić ten skrypt z użytkownikami wchodzącymi w interakcje z bazą danych?
USE CompanyCRM;
GO
BACKUP DATABASE CompanyCRM
TO DISK = 'D:\CRMBackups\CompanyCRMCRM.Bak'
WITH FORMAT,
MEDIANAME = 'CompanyCRM_Backup',
NAME = 'Full Backup of CompanyCRM';
GO
Aktualizacja
Wow, oczywiście znacznie bardziej oddana społeczność DBA tutaj niż na SO. Dziękujemy za opinie do tej pory. Brakuje tylko „hows”. Pokazałem powyżej polecenie SQL, którego używam do codziennego tworzenia kopii zapasowych, ale przykładowymi przykładami przyrostowych kopii zapasowych dzienników są MIA. To nie jest duży DB, obecnie działa na SQLExpress. Kiedy mówię HA lub SQL Azure, mam na myśli konkretną architekturę, której nie mamy jako małej firmy. Ta instancja jest obecnie uruchomiona na naszym TYLKO serwerze. Jeśli ten serwer ulegnie awarii, nasz czas na odzyskanie staje się punktem krytycznym. Właśnie dlatego SQL Azure staje się atrakcyjny.
źródło
Odpowiedzi:
EDYCJA, z twojej aktualizacji
Jak już powiedziałeś, że możesz stracić dane o wartości 1 dni, po prostu ustawiłbym bazy danych w trybie odzyskiwania PROSTEGO. Możesz wtedy zrobić PEŁNY każdego ranka i / lub wieczorem. Jeśli chcesz się chronić w ciągu dnia, możesz wykonać różnicową kopię zapasową bazy danych, jedną z takich sytuacji na wszelki wypadek. Spowoduje to przechwycenie wszelkich zmian dokonanych od czasu pełnej kopii zapasowej. Jeśli znam ramy czasowe, w których dzieje się dużo danych wejściowych, mogę wrzucić tam tego rodzaju kopię zapasową po jej zakończeniu. Może to zaoszczędzić ludziom czasu na odzyskiwanie, więc nie muszą oni wprowadzać dodatkowych danych.
Ponieważ jest to twój jedyny serwer, upewnię się, że korzystasz z DBCC CHECKDB dla baz danych. Kopie zapasowe nie przynoszą żadnego pożytku, gdy dowiadujesz się, że są uszkodzone (myślę, że ktoś też o tym wspomniał). Możesz prawdopodobnie znaleźć kilka skryptów, aby skonfigurować zaplanowane zadanie sprawdzania ERRORLOGA SQL dla komunikatu DBCC w celu wychwycenia błędów. SQL Server natywnie nie ostrzega o błędach zwracanych z komunikatów DBCC, więc chyba że ręcznie sprawdzasz za każdym razem skrypt, który to robi, może to pomóc.
Polecenie różnicowego tworzenia kopii zapasowych:
źródło
źródło
Pierwszą rzeczą, którą musisz zrobić, to dowiedzieć się, ile danych możesz stracić. Do tego czasu nie będziesz miał pojęcia, jak często wykonywać kopię zapasową bazy danych. To nie jest liczba, którą powinieneś wymyślić. Jest to coś, o czym musiałby zdecydować biznes (lub dyrektor generalny w mniejszej firmie). Pierwszy numer, z którym wrócą, to 0 minut. Co można zrobić, ale będzie to bardzo kosztowne. W rzeczywistości najmniejsza ilość danych, dla których można wykonać kopie zapasowe, to co około 2 minuty. Jeśli ilość danych zmieniających się w systemie jest wystarczająco mała, możesz wykonywać kopie zapasowe co minutę.
Aby wykonać kopie zapasowe dziennika transakcji, musisz to zrobić, aby przełączyć bazę danych w tryb PEŁNEGO odzyskiwania.
Jeśli możesz sobie pozwolić na utratę danych o wartości 5 minut, prawdopodobnie będziesz chciał codziennie wykonywać pełne kopie zapasowe, a kopie zapasowe dziennika transakcji co 5 minut. Jeśli możesz stracić dane o wartości 15 minut, będziesz chciał wykonywać pełne kopie zapasowe i kopie zapasowe dziennika transakcji co 15 minut.
Inną opcją byłoby robienie co tydzień pełnych kopii zapasowych, codzienne różnicowe kopie zapasowe i kopie zapasowe dziennika transakcji co x minut, o czym mówię powyżej.
Należy pamiętać, że im częściej trzeba wykonywać kopie zapasowe, tym więcej plików będzie trzeba przywrócić w przypadku awarii bazy danych lub usunięcia danych. Rozsądne może być wykonywanie różnicowych kopii zapasowych w ciągu dnia, aby skrócić czas potrzebny do przywrócenia bazy danych.
Wszystkie kopie zapasowe korzystające z bazy danych BACKUP i instrukcji BACKUP LOG są wykonywane online i nie uniemożliwiają użytkownikom dostępu do bazy danych.
źródło
Powiedzmy, że masz wspólny scenariusz biznesowy, a Twój najbardziej pracowity czas to: 9–17 od poniedziałku do piątku. Następnie sugerowałbym: pełne tworzenie kopii zapasowych w niedzielę wieczorem. Różnicowe kopie zapasowe o godzinie 8:00, 18:00 i 1:00 (w celu skrócenia czasu odzyskiwania). Rejestruj kopie zapasowe co godzinę lub w zależności od wymagań Twojej firmy.
W zależności od okresu przechowywania, powinieneś mieć zadanie automatycznego czyszczenia, aby usunąć stare pliki kopii zapasowej. Wszystkie te można utworzyć za pomocą planów konserwacji SQL. Sprawdź ten link dla SQL 2005 .
Powinieneś przechowywać swoje kopie zapasowe na jakiejś formie nadmiarowego dysku (dublowanego) lub możesz użyć taśm do przechowywania poza siedzibą. Użytkownicy mogą kontynuować pracę w systemie podczas wykonywania kopii zapasowych.
źródło
Nie robiłbym pełnej kopii zapasowej każdej nocy. Jeśli jest to duża baza danych, może to zająć bardzo dużo czasu, nie wspominając o tym, że zajmuje dużo miejsca w mediach. Wykonuj pełne kopie zapasowe w każdy weekend i różnicowe kopie zapasowe każdej nocy. Następnie wykonaj kopię zapasową dziennika transakcji (zakładając, że baza danych jest w pełni przywracana) co godzinę lub co pół godziny, ale upewnij się, że pliki .bak i .trn znajdują się na osobnym dysku w przypadku awarii dysku.
źródło
Czy możesz zsynchronizować w chmurze folder kopii zapasowych w nocy, aby uzyskać miejsce poza miejscem przechowywania? Ponieważ jestem całkiem pewien, że dotyczy to firmy medycznej, czy są takie, które są wystarczająco bezpieczne, aby zachować zgodność z HiPA? A może po prostu superszyfruj je?
Czy skrypt przynajmniej umieszcza kopię kopii zapasowej w udziale sieciowym? W ten sposób, jeśli wysadzi się fizyczne pudełko ...
źródło