Mam bazę danych zawierającą prawie 1 TB FILESTREAM
danych, których nie muszę tworzyć kopii zapasowej (jeśli dane zostaną usunięte, zostaną automatycznie odtworzone za kilka godzin, więc nie jest to ważne). Większość danych zmienia się co kilka dni, więc różnicowe kopie zapasowe nie pomogłyby w zmniejszeniu rozmiaru.
Kopie zapasowe działały tak, jak potrzebowałem, ustawiając tryb odzyskiwania na Full
, tworząc osobne FILEGROUP
dla FILESTREAM
, a następnie wykonując kopie zapasowe tylko „głównej” FILEGROUP
. Problem ten spowodował, że plik dziennika (który również jest tworzony), jest teraz niepotrzebnie duży, ponieważ zawiera FILESTREAM
dane.
SIMPLE
Tryb odzyskiwania pozbawia mnie możliwości wykonywania kopii zapasowych określonych FILEGROUP
s, więc nie sądzę, że będzie to również opcja.
Moje myśli to po prostu przeniesienie FILESTREAM
danych do osobnej bazy danych, ale teraz tracę spójność referencyjną i na pewno dziedziczę wiele innych problemów.
Czy jest jakiś sposób na tworzenie częściowych kopii zapasowych w Simple
trybie odzyskiwania (bez ustawiania w FILESTREAM
tabeli tylko do odczytu)? Jeśli nie, czy są jakieś inne rozsądne rozwiązania mojego problemu?
źródło
Rozwiązaniem dla bazy danych ustawionej na tryb odzyskiwania SIMPLE jest posiadanie danych FILESTREAM w grupie plików tylko do odczytu (co nie jest idealną opcją), a następnie tworzenie kopii zapasowych tylko grup plików do odczytu / zapisu przy użyciu DIFFERENTIAL w następujący sposób:
Otrzyma wszelkie dane, które zmieniły się w dowolnych aplikacjach do odczytu / zapisu. Jest to najłatwiejszy, od razu po wyjęciu z pudełka, że możesz utrzymywać częściowe kopie zapasowe w zarządzaniu bez uzyskiwania danych FILESTREAM. Wymagałoby to jednak, aby proces ładowania wyżej wymienionych danych musiał zmodyfikować grupa plików do odczytu / zapisu, załadować dodatkowe dane, a następnie ustawić ponownie tylko do odczytu. Z pewnością nie idealny.
źródło
Czuję się brudny, podając to jako opcję, ale jeśli zdecydujesz się segregować dane FILESTREAM do własnej bazy danych, możesz zachować RI między tabelami w oddzielnych plikach db za pomocą wyzwalaczy :
Spodziewaj się problemów z wydajnością i części skóry głowy, która stanie się pozbawiona włosów po frustracji wyciągając kępki futra głowy, ale teoretycznie możesz to zrobić. Nie polecam tego podejścia na żadnym poziomie, zamiast tego zdecydowanie zalecam zwiększenie częstotliwości tworzenia kopii zapasowych tlog i / lub przejście do modelu odzyskiwania z logowaniem zbiorczym i sprawdzenie, ile miejsca oszczędza, ALE to możliwe rozwiązanie. Naprawdę trzeba rozważyć korzyści wynikające z oddzielenia tych danych i radzenia sobie z projektem bazy danych Frankensteina, ale jest to opcja.
... muszę teraz wziąć prysznic ...
źródło
Wiem, że na to pytanie już udzielono odpowiedzi, ale istnieje inne rozwiązanie, które może pomóc innym. Niedawno dowiedziałem się z bloga Brenta Ozara, że istnieje możliwość natychmiastowego odrzucenia kopii zapasowych dziennika:
Możesz więc pozostawić bazę danych w
Full
trybie odzyskiwania i wykonywać kopie zapasowe aplikacjami. Gdy dziennik transakcji staje się zbyt duży, po prostu wydaj polecenie tworzenia kopii zapasowej dziennika i gotowe.źródło