Codziennie wysyłamy nasze kopie zapasowe SQL Server w sieci WAN. Musimy zminimalizować rozmiar tych kopii zapasowych, aby nie trwało to wiecznie.
Nie przeszkadza nam, że proces tworzenia kopii zapasowej trwa nieco dłużej; w tej chwili musimy przenieść 30 gigabitowych kopii zapasowych w sieci WAN, co zajmuje ponad 10 godzin.
Istnieją 2 opcje, aby uzyskać mniejsze codzienne kopie zapasowe.
- Przesyłanie kłód, co oznaczałoby, że musielibyśmy zrestrukturyzować proces DR.
- Usuń informacje z bazy danych i przebuduj po drugiej stronie (upuść indeksy klastrowane, spakuj indeksy po 100% - przebuduj po drugiej stronie)
Oba wymagałyby sporej ilości pracy z naszej strony. Używamy SQL Server 2008 pro, wszystkie kopie zapasowe są skompresowane.
Czy są jakieś komercyjne produkty, które mogą dać nam podobny rozmiar kopii zapasowej do opcji (2)?
Czy istnieje kompleksowy skrypt, który pozwoli nam osiągnąć (2)? (obsługa widoków indeksowanych, indeksów filtrowanych, kluczy obcych itp.)
źródło
Odpowiedzi:
Pierwsza myśl na podstawie komentarzy ...
Używaj różnicowych kopii zapasowych co powiedzmy co 6 godzin, aby zmniejszyć rozmiar / czas tworzenia kopii zapasowej + FTP. Następnie zmniejsz pełną kopię zapasową + FTP tylko do weekendów. Pozwala to uniknąć złożoności wysyłania kłód, jest łatwe do zrobienia i dodaje tylko niewielką złożoność DR
Wydaje mi się, że różnicowe kopie zapasowe są pomijane ... Sugerowałem ich użycie wcześniej:
przy użyciu kopii zapasowych DIFF, aby rozwiązać ten problem
Korzystanie z kopii zapasowych DIFF w celu przyspieszenia migracji serwera kopii zapasowych / przywracania
Edycja: po komentarzu jcolebranda postaram się wyjaśnić więcej
Różnicowa kopia zapasowa przyjmuje tylko te strony, które uległy zmianie. Poza utrzymaniem indeksu (co może mieć wpływ na dużą część bazy danych), tylko kilka% stron zmieni się w ciągu dnia. Tak więc różnicowa kopia zapasowa jest znacznie mniejsza niż pełna kopia zapasowa przed jakąkolwiek kompresją.
Jeśli masz pełną kopię zapasową, powiedzmy co tydzień, możesz robić codzienne różnice i wysyłać je poza miejsce. Codzienna pełna kopia zapasowa z różnicami nadal będzie wymagać obu plików poza witryną.
To powinno rozwiązać problem szybkiego pobierania danych z A do B, C i D.
Prawdopodobnie musisz przywrócić zarówno pełny, jak i najnowszy plik różnicowy, aby uzyskać najnowsze dane, ale możesz to obejść za pomocą NORECOVERY i pliku STANDBY (nie próbowałem tego z przywracaniem różnic od lat, odkąd byłem ostatni w czystej DBA praca).
Dodatkową zaletą jest to, że kopie zapasowe różnic nie są powiązane z bieżącymi kopiami zapasowymi dziennika, dzięki czemu można oddzielić wszelkie wymagania dotyczące wysokiej dostępności / DR od wymogu „pobierz dane do małp kodowych”.
Widzę pewne problemy, jeśli masz codzienne pełne kopie zapasowe według zasad lub inspekcji, ale przywracanie różnic można zastosować przed przywróceniem dowolnego dziennika, aby skrócić czas odzyskiwania. W przeciwieństwie do kopii zapasowych, przywracanie różnic i logów współdziała.
Mam nadzieję, że omówiłem większość baz ...
źródło
Istnieją komercyjne produkty, które mogą pomóc lepiej skompresować kopie zapasowe niż natywna kompresja z 2008 roku. Przykładami są RedGate Backup , Hyperbac , Idera SQL Backup , Litespeed Backup .
Pochodzą one z dodatkowym kosztem wysokich procesorów i typów plików, które trzeba będzie obsługiwać za pomocą narzędzi spoza MS dostarczanych. Z wyjątkiem kompresji Hyperbac (obecnie przejętej przez Redgate), która obsługuje pliki w sposób przezroczysty i umożliwia tworzenie plików zgodnych z formatem zip (a także nie wymaga narzędzi innych firm).
Ale nie ma narzędzia, które zaoferuje ci plik o rozmiarze, który uzyskasz wykonując ręczne czyszczenie. Zapoznaj się z artykułem Brenta Ozara: Jak naprawdę kompresować kopie zapasowe SQL Server , doradzi on wykonanie tych samych kroków, które masz w punkcie nie. 2)
źródło
Pytanie 1: Czy istnieje komercyjny produkt do tworzenia kopii zapasowych, który da podobny rozmiar kopii zapasowej do usuwania zbędnych danych, takich jak indeksy z bazy danych?
Nie. Istnieje wiele produktów do kompresji kopii zapasowych (Quest LiteSpeed, Red Gate SQL Backup, Idera SQLSafe, Hyperbac itp.), Ale wszystkie z nich działają po prostu kompresując dane wyjściowe z regularnego procesu tworzenia kopii zapasowej programu SQL Server. Niektóre z nich robią to w trudny sposób - HyperBac i opcja silnika LiteSpeed to sterowniki filtrów systemu plików, co oznacza, że przechwytują dane wyjściowe w drodze na dysk - ale końcowym rezultatem wszystkich tych produktów jest po prostu skompresowana kopia zapasowa.
Pytanie 2. Czy istnieje kompleksowy skrypt do zrzucenia wszystkich tych dodatkowych danych?
Z biegiem czasu, ponieważ przechowujesz więcej historii w bazie danych (4, 5, 8, 10 lat), nie będziesz chciał wyrywać wszystkich danych indeksu i odbudowywać go po drugiej stronie sieci WAN. Zamiast tego chcesz po prostu przesłać zmodyfikowane dane i tam właśnie przychodzi wysyłka dziennika.
Nie powinieneś tego robić.
Ale jeśli naprawdę chcesz to zrobić (i nie, nie pomogę ci), możesz to zrobić za pomocą kopii zapasowych grup plików. Skonfiguruj grupy plików bazy danych w następujący sposób:
Zacznij tworzyć skompresowane kopie zapasowe tylko dwóch pierwszych grup plików i skopiuj te mniejsze na serwer DR. Można użyć funkcji tworzenia kopii zapasowych i przywracania grup plików w programie SQL Server 2008, aby przywrócić grupy plików Podstawowe i ClusteredIndex, a następnie będą one natychmiast dostępne do tworzenia zapytań. Tak naprawdę nie będą działały, dopóki nie dostaniesz grupy plików ExtraneousCrap online, ale jest też przykra sztuczka - w książce MVP Deep Dives znajduje się rozdział na temat edycji tabel systemowych, aby utworzyć grupę plików ExtraneousCrap i wszystkie inne. powiązanych indeksów znikają. Ta sztuczka jest niebezpieczna, całkowicie nieobsługiwana i to naprawdę zły pomysł - ale hej, prosiłeś o nią.
źródło
Polecam przejście na coś takiego jak wysyłanie kłód. Zasadniczo, jeśli masz możliwość wysłania 30 koncertów w ciągu 24 godzin w porównaniu z wysyłką na koniec dnia w krótszym okresie czasu, szybkość sieci nie będzie dla ciebie problemem.
Twoi twórcy w wolnej sieci będą mogli również pobierać pliki o dogodniejszych rozmiarach, za pośrednictwem FTP lub dowolnego innego procesu, który masz. Mogą także skonfigurować zadania, które będą pobierane przez cały dzień.
Oprócz kompresji serwera sql można zaimplementować narzędzie innej firmy, które ma wyższą kompresję, np. Litespeed lub redgate sqlbackup.
Ponadto po stronie sieci można zainstalować urządzenia sieciowe, które mogą zoptymalizować przepustowość w witrynie DR. W przeszłości z powodzeniem korzystałem z Riverbed Appliance, aby uzyskać 90 GB kopii zapasowej z FL do VA w mniej niż 3 godziny.
Inną opcją byłoby tworzenie kopii zapasowych określonych grup plików, z wyłączeniem indeksów itp., Ale nadal utkniesz w indeksach klastrowych iw zależności od struktury db możesz uzyskać więcej kosztów / problemów niż czerpać korzyści z tego podejścia.
Dzięki
źródło
Jeśli masz na to pieniądze, a architektura na to pozwala, sprawdź coś w rodzaju technologii Riverbed (http://www.riverbed.com/us/). Takie urządzenie w połączeniu ze scenariuszem replikacji lub wysyłki dziennika może być najlepszym rozwiązaniem.
Jeśli nie, to kilka pytań. Jeśli musisz odświeżać co kilka miesięcy, dlaczego masz obawy związane z przepustowością? Jedyny raz, kiedy musisz się martwić o przeniesienie, jest uzyskanie pełnej kopii zapasowej, aby wykonać przywracanie lokalnie, czy też się mylę, że to twoja konfiguracja?
Inną możliwością jest zamiast martwić się o dostarczenie im wszystkich tych danych, skonfigurowanie środowiska Citrix i przekazanie ich zdalnie. Dzięki Citrix masz minimalne wymagania w zakresie przepustowości między klientem / hostem i możesz robić to, czego potrzebujesz lokalnie, i nie martw się o to, że musisz replikować te zmiany gdzie indziej. Tylko moje 0,02 $
źródło
Użyłbym replikacji transakcyjnej SQL. Twoje początkowe ładowanie zajęłoby trochę czasu, ale kiedy już zaczniesz działać, możesz przesłać tylko wybrane informacje. Na przykład, jeśli masz tylko 3 lub 4 tabele, które są aktualizowane, możesz wysłać tylko te 3 lub 4 tabele.
Możesz także wybrać, co chcesz wysłać. FK, indeksy klastrowe / nieklastrowane, schematy partycji tabel, przechowywane procy i TONS więcej.
http://www.sql-server-performance.com/2010/transactional-replication-2008-r2/
Jeśli nie jest to możliwe, możesz skorzystać z REDGATE SQL BACKUP - http://www.red-gate.com/products/dba/sql-backup/ . Użyłem tego wcześniej i uzyskałem poziomy kompresji do 90%. Dużo mniejszy niż SQL.
źródło