mamy tu trochę historii kopii zapasowych.

mamy tu trochę historii kopii zapasowych.

SQL Server śledzi historię każdej kopii zapasowej. Przechowuje te dane w bazie danych MSDB. Jest to systemowa baza danych i domyślnie nasze systemowe bazy danych są przechowywane na dysku C, chyba że podczas instalacji określono inaczej.

stwarza to zagrożenie na kilka różnych sposobów:

napęd C może się zapełnić, powodując niepowodzenie zapisu MSDB. Dysk systemowy zapełnia się częściej niż mogłoby się wydawać – spowodowane przez nieostrożnych użytkowników pobierających ogromne pliki na pulpit (znajdujący się na dysku systemowym) lub przez aktualizacje systemu Windows pobierające wiele plików do folderu tymczasowego na dysku systemowym.

MSDB może rosnąć, aby wypełnić dysk C, powodując awarię systemu Windows. W przypadkach, gdy wykonujemy bardzo częste kopie zapasowe logów transakcji dużej liczby baz danych i nigdy nie czyścimy MSDB, ta baza danych może urosnąć do rozmiarów wystarczająco dużych, aby zagrozić małym dyskom C. Gdy napełni się dysk C, System Windows zawiedzie mocno.

dysk systemowy jest często powolny. W starych wersjach SQL Server systemowe bazy danych nie były dobrze indeksowane. W połączeniu z wolnymi dyskami lokalnymi mamy przepis na wolny dostęp do MSDB. W jednym przypadku, podczas naszych nocnych okien kopii zapasowych, 2/3 czasu poświęcono na aktualizację MSDB!

narzędzia monitorujące mogą nieefektywnie odpytywać MSDB. Widzieliśmy przypadki, w których narzędzia monitorujące serwery innych firm stale sprawdzały MSDB, aby upewnić się, że wszystkie bazy danych są archiwizowane, ale ich zapytania nie korzystały z indeksów. Te zapytania mogą być najwolniejszą rzeczą na serwerze.

ta część naszego skryptu SQL Server sp_Blitz sprawdza, czy historia kopii zapasowych MSDB jest starsza niż 60 dni. To samo w sobie nie stanowi problemu – możesz chcieć zachować długie okresy historii kopii zapasowych, aby wykonać raportowanie wydajności – ale rozważ przeniesienie tych danych do programu Excel lub ulubionego narzędzia raportowania, zamiast za każdym razem uderzać w MSDB.

wróć do sp_Blitz lub zadaj nam pytania

Jak wyczyścić przeciążoną historię kopii zapasowych MSDB

rozważ wyczyszczenie historii kopii zapasowych MSDB danych starszych niż 60 dni. Możesz to zrobić na kilka różnych sposobów:

  • możesz utworzyć plan konserwacji, który regularnie uruchamia zadanie Oczyszczanie historii.
  • możesz utworzyć proste zadanie SQL Server Agent, które regularnie uruchamia sp_delete_backuphistory (możesz również uruchomić sp_purge_jobhistory, jeśli chcesz dopasować funkcjonalność planu konserwacji).

rozwiń węzeł planu konserwacji w SSMS, kliknij prawym przyciskiem myszy i wybierz ” nowy Plan konserwacji…”

2015-04-10_14-20-46

wybierz zadanie czyszczenia konserwacji z okna Toolbox (zauważ, że czasami to okno zostanie ukryte po lewej stronie w Eksploratorze obiektów w SSMS:

2015-04-10_14-21-26

aby zakończyć, kliknij dwukrotnie zadanie, wybierz typ czyszczenia, który chcesz wykonać, i ile Danych chcesz zachować. Czasami tworzę dwa zadania, ponieważ mniej zależy mi na historii zadań agenta i historii planu konserwacji niż na kopii zapasowych i zwykle chcę, aby moja historia kopii zapasowych była zgodna z moimi zasadami przechowywania danych.

2015-04-10_14-22-03

tak czy inaczej, jeśli serwer ma dużą ilość historii, ten krok zajmie dużo czasu, aby uruchomić po raz pierwszy. Jak zauważył Brent w artykule „wąskie gardło MSDB”, być może będziesz musiał uciekać się do ekstremalnych środków, takich jak zmiana kluczy obcych bazy danych systemu, aby usunąć dane.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.