Czy można poprawić odporność na awarie programu SQL Server?

20

Mamy komputery z systemem SQL Server (SP4 2008 i SP1 2016), które regularnie tracą moc. Oczywiście czasami prowadzi to do (indeksowania) uszkodzenia bazy danych SQL Server, którą musimy później przywrócić.

Wiem, że SQL Server nie jest przeznaczony do takich scenariuszy, a poprawnym rozwiązaniem jest usunięcie przyczyny utraty zasilania (więcej na ten temat, jeśli jesteś ciekawy). Niemniej jednak, czy są jakieś opcje dostrajania w SQL Server, które mogę ustawić, aby zmniejszyć ryzyko uszkodzenia bazy danych w przypadku utraty zasilania ?


Tło: „PC” to tablet Windows zamontowany na wózku widłowym. Gdy użytkownik wyłączy wózek widłowy, tablet traci moc. Próbowaliśmy nauczyć użytkowników, jak prawidłowo zamykać system Windows przed wyłączeniem wózka widłowego, ale nie powiodło się (prawdopodobnie dlatego, że wyłączenie go „działa” przez większość czasu). Obecnie badamy również inne opcje, takie jak dodanie zasilacza UPS, który sygnalizuje tabletowi wyłączenie w przypadku utraty zasilania.

Heinzi
źródło

Odpowiedzi:

28

Wiem, że SQL Server nie jest przeznaczony do takich scenariuszy, a poprawnym rozwiązaniem jest usunięcie przyczyny utraty zasilania […]

W rzeczywistości jest przeznaczony do radzenia sobie z utratą zasilania, dlatego istnieją takie rzeczy, jak rejestrowanie z wyprzedzeniem (WAL) i odzyskiwanie po awarii po uruchomieniu (lub jakkolwiek chcesz to nazwać). Jednym ze sposobów jest to, że nie zapisuje się w pamięci podręcznej zapisów, a wydaje się, że to, co robi tablet, stąd uszkodzenie.

Niemniej jednak, czy są jakieś opcje dostrajania w SQL Server, które mogę ustawić, aby zmniejszyć ryzyko uszkodzenia bazy danych w przypadku utraty zasilania?

Nie, SQL Server robi to, co powinien. Powinieneś szukać albo poza SQL Server (ustawienia Windows do buforowania dysku [który SQL chce być wyłączony, ale nie możemy cię zmusić], aktualizacje sprzętu / oprogramowania układowego itp.) Lub, jak powiedział Eric, kup zewnętrzny zasilacz dla względnie tani, który mógłby rozwiązać objawy (faktyczny problem to prawdopodobnie pewien rodzaj buforowania lub zapisu z podtrzymaniem bateryjnym, który nie jest faktycznie wspierany).

Sean mówi Usuń Sara Chipps
źródło
2
Pomocny artykuł: support.microsoft.com/en-us/help/234656/…
David Browne - Microsoft
1
Zgaduję, które ustawienie jest winowajcą, jeśli jest to problem z systemem operacyjnym . (chociaż jest to prawdopodobnie jeden ze starych wbudowanych systemów operacyjnych, jeśli bym zgadywał, nigdy nie sprawdzałem, czy mają również to ustawienie). A potem przynajmniej większość twardych dysków klasy konsumenckiej bezwstydnie kłamie o zakończeniu zapisu z „powodów optymalizacji wydajności”, więc zasadniczo nie ma na nich nadziei.
Voo
26

Jeśli tablet ma działającą baterię , system Windows można skonfigurować tak, aby wyłączał się, gdy poziom naładowania baterii jest niski .

Jeśli tablet ma niedziałającą baterię , rozważ wymianę baterii. (Miałem takie laptopy - zdziwiłbyś się, jak tanie mogą być baterie wymienne w serwisie eBay. Nie działają one tak dobrze jak OEM, ale hej, w tej sytuacji wszystko jest lepsze niż nic.)

Jeśli tablet w ogóle nie ma zasilania bateryjnego , rozważ dodanie małego zasilacza awaryjnego (UPS) z wyjściami USB, które mogą komunikować się z systemem Windows i informować go, kiedy jest zasilany z akumulatora. (Na przykład mam własny pulpit skonfigurowany do wyłączania się, gdy UPS ma niski poziom naładowania baterii - w ten sposób wyłącza się w przypadku awarii zasilania, nawet jeśli nie ma mnie w domu.)

Jeśli żadna z tych opcji nie jest możliwa, masz trochę szczęścia. To stara księga, ale SQL Server 2000 Podstawy We / Wy od Microsoft w zasadzie wyjaśnia, że ​​potrzebujesz podsystemu We / Wy, który z łatwością poradzi sobie z przerwami w dostawie prądu.

Istnieją opcje, których możesz użyć, aby zwiększyć ryzyko - takie jak Opóźniona trwałość lub tabele zawierające tylko pamięć (nietrwałe) - ale domyślnie SQL Server już robi wszystko, aby zmaksymalizować niezawodność przy każdym zapisie w dzienniku transakcji. Jeśli nawet zapisy dziennika transakcji nie mogą być zagwarantowane z powodu przypadkowych awarii zasilania, wydaj 100 USD na akumulator UPS.

Brent Ozar
źródło
6

Zakładając, że masz lokalną bazę danych na wózku widłowym, a nie na serwerze z powodu nieregularnych połączeń bezprzewodowych? Oczywiście najlepszym rozwiązaniem byłoby zejście z SQL z wózka widłowego.

W każdym razie, jak sugerował Brent, ustaw tablet, aby sam się wyłączał po x minutach zasilania z baterii lub z podobnych kryteriów.

W przeciwnym razie mały UPS, który może zainicjować normalne wyłączenie, prawdopodobnie będzie najlepszym wyborem w tym przypadku. Poleganie na takich rzeczach wymaga niepowodzenia.

Marbry Hardin
źródło
1
„Zakładając, że masz lokalną bazę danych na wózku widłowym zamiast na serwerze z powodu niejednolitych połączeń bezprzewodowych?” Tak, dokładnie tak jest. Aplikacja utrzymuje synchronizację lokalnych DB i DB serwera, dzięki czemu wózki widłowe mogą opuścić obszar objęty siecią WLAN i nadal korzystać z aplikacji.
Heinzi
2

Podstawowy system operacyjny musi gwarantować pomyślny zapis lub zwrócenie błędu. Z kolei system operacyjny opiera się na sterownikach, które z kolei opierają się na oprogramowaniu sprzętowym zależnym od sprzętu. Jeśli sterowniki, oprogramowanie układowe leżą, nie ma na to nic wspólnego z systemem Windows lub serwerem SQL.

Dlatego musisz skontaktować się z producentem sterownika / oprogramowania układowego / sprzętu.

Należy również zagwarantować kolejność zapisu na wszystkich warstwach, więc należy to również sprawdzić.

Nawet pamięci podręczne zasilane bateryjnie mogą zawieść, np. Podczas burz nowojorskich niektóre centra danych były niedostępne przez kilka dni, a baterie wyczerpałyby się, potencjalnie tracąc dojazdy do pracy

https://www.postgresql.org/docs/devel/static/wal-reliability.html

https://brad.livejournal.com/2116715.html

http://rhaas.blogspot.com/2010/10/wal-reliability.html?m=1

David Williams
źródło
1

Aby rozwinąć inne odpowiedzi:

Najpierw spróbuj usunąć SQL z wózka widłowego, jeśli to w ogóle możliwe. Pomyśl, że odzyskanie po utracie zasilania jest złe, spróbuj to zrobić po tym, jak laptop zostanie przejechany przez ponad 7000 funtów. Z godzinami pracy magazynu, bez kopii zapasowej ...

Po drugie, i tak powinien istnieć mechanizm automatycznego wyłączania się laptopa po x czasie pracy na baterii.

Po trzecie, czy podłączenie laptopa do nieprzełączanego źródła zasilania wózka widłowego byłoby opcją? Należy wziąć pod uwagę przepisy bezpieczeństwa (środowisko może wymagać wszystkiego poza kluczem do wózka widłowego) oraz czas, przez jaki wózek widłowy jest używany pomiędzy użytkami (szczególnie w weekendy i święta), aby uniknąć rozładowania akumulatora maszyny.

GB540
źródło