Mamy środowisko „organiczne”, co oznacza, że ludzie nakładają kod na kod przez dziesięć lat przy minimalnym nadzorze lub dokumentacji. Serwer, którego używam, ma kilka baz danych, które moim zdaniem nie są już używane; Chciałbym je usunąć i zostawić tylko te trzy, których faktycznie używam.
Na skraju lekkomyślności mógłbym wyłączyć te bazy danych i czekać, aż ktoś krzyknie; z drugiej mógłbym zostawić ich działających na zawsze „na wszelki wypadek”. Jakie kroki uznałeś za przydatne w określeniu, czy serwer jest używany i jak?
Jakie kroki zaleciłbyś w celu zapewnienia, że w miarę postępów w wyłączaniu systemów, będą one przez pewien czas wygodnie odwracalne (np. Zmienią nazwy obiektów, a nie usuwają je całkowicie)?
Dzięki!
maintenance
delete
sql-server
Jon of All Trades
źródło
źródło
Odpowiedzi:
Chcesz również upewnić się, że znaczniki daty i godziny każdej tabeli. Wyszukaj dowolne metadane w systemie dla każdej tabeli, uporządkuj listę według daty ostatniej aktualizacji i wyświetl dane wyjściowe w kolejności malejącej według daty. Możesz również sprawdzić rozmiar stołu pod kątem nawet niewielkiej zmiany rozmiaru.
Na przykład w MySQL 5.x masz information_schema.tables, które wyglądają tak:
Kolumna UPDATE_TIME zapisuje ostatni raz, kiedy INSERT, UPDATE lub DELETE zostały ostatnio zastosowane do tabeli. Możesz uruchomić takie zapytania, aby dowiedzieć się, kiedy ostatnio uzyskiwano dostęp do każdej bazy danych:
Ostatni dostęp do tabeli w każdej bazie danych:
Ostatni dostęp do tabeli w dowolnej bazie danych:
Ostatnie 10 dat dostępu do tabeli:
To tylko kilka przykładów, jak uzyskać takie metadane z MySQL. Jestem pewien, że Oracle i SQL Server mają podobne lub lepsze metody.
Po upewnieniu się, jak często lub rzadko uzyskuje się dostęp do bazy danych (lub schematu), należy ręcznie zrzucić / wyeksportować przestarzałe bazy danych wraz z kopiami samego schematu oprócz danych. Przepraszam, że moja odpowiedź nie jest DB agnostyczna. SQLServer i Oracle DBA również powinny wyrazić swoje odpowiedzi tutaj, ponieważ koncepcja schematu będącego kolekcją w instancji bazy danych jest niewyraźna w MySQL, ale bardzo ściśle przestrzegana w SQLServer i Oracle.
źródło
SELECT S.name, MAX(T.modify_date) AS MostRecentDataModification FROM sys.schemas AS S INNER JOIN sys.tables AS T ON S.schema_id = T.schema_id GROUP BY S.name
Możesz spróbować skonfigurować śledzenie, które przechwytuje tylko połączenia i do jakiej bazy danych się łączą. Chciałbym zostawić to uruchomione na chwilę, a następnie upewnić się, że nic się z nim nie łączy.
Jednym z problemów może być otwarcie kodu na głównej bazie danych, ale wywołanie innej bazy danych w kodzie. Nie jestem pewien, jak zły jest ten kod, który wskazuje na twoje bazy danych.
Zapytam również wszystkie twoje zadania i upewnię się, że żadne nie wskazuje tego DB
Możesz także użyć audytu SQL, jeśli masz odpowiednią wersję SQL (2008 R2 Enterprise).
Możesz także użyć wyzwalaczy logowania, aby zaktualizować tabelę, gdy ktoś zaloguje się do tej bazy danych. To pokaże, czy coś łączyło się z tą bazą danych.
źródło
W SQL Server można przełączyć bazy danych w tryb „ offline ”, co powoduje, że baza danych jest obecna, ale uniemożliwia połączenie z nią za pomocą kodu. Jeśli baza danych jest „offline”, nadal jest dostępna i można ją przywrócić w ciągu kilku minut.
Podczas mojej ostatniej pracy mieliśmy kilka produktów, które działały przez kilka miesięcy w roku, więc wyłączanie bazy danych na kilka miesięcy jednocześnie nie byłoby zauważane przez ludzi pracujących z tym produktem. Jako jeden z przykładów, jeden z produktów dotyczył formularzy W-2, więc 98% działalności ma miejsce w styczniu i lutym (w przypadku większości firm dane są niedostępne dopiero w pierwszym tygodniu stycznia, a federalny termin składania wniosków informacja to ostatni dzień roboczy w styczniu). Serwer WWW był zwykle wyłączany od maja / czerwca do grudnia.
W tej firmie mieliśmy arkusz kalkulacyjny z „właścicielem” bazy danych - jedną osobą odpowiedzialną za produkt. Podczas gdy inni mogli aktualizować strukturę tabel, „właściciel” był osobą, do której trzeba było zadawać pytania. Jeśli właściciel opuści firmę (rzadko do zeszłego roku), ktoś zostanie wyznaczony na nowego właściciela przed odejściem.
W innych firmach przełączyliśmy bazy danych na kwartał offline, jeśli pozostaną one offline i nic się nie psuje (np. Raporty miesięczne / kwartalne), kopie zapasowe są tworzone po raz ostatni i usuwane. To pozwala komuś później wrócić i przywrócić bazę danych (co zajmuje kilka minut) w sytuacjach, które zawierają takie historie, jak „och, to było dla projektu Jonesa, który musieliśmy odłożyć na bok, gdy zakończyliśmy projekt Fred”.
źródło