W naszej aplikacji korzystamy z Hibernacji i PostgreSQL do przechowywania danych. W jednej z naszych tabel bazy danych mamy kolumnę dyskryminującą, która mówi na przykład „TIPPSPIEL”. Jest to stały ciąg znaków i nie może nim manipulować żaden użytkownik.
Nagle mieliśmy jeden wpis w tym ogromnym stole, w którym zamiast „TIPPSPIEL” mieliśmy „TIPPQPIEL”. Nie mamy pojęcia, jak to się może stać.
Czy jest możliwe w jakikolwiek sposób, że nasz dysk twardy zmienia jeden bit, więc nasza litera „S” nie jest już kodowana jako „1010001”, ale nagle staje się „Q” na dysku twardym z jednym przełączonym bitem w ten sposób: 1010011?
Nie jestem ekspertem w dziedzinie fizyki dysków twardych, ale sądzę, że system operacyjny lub dysk ma sumy kontrolne i inne rzeczy, aby upewnić się, że tak się nie stanie.
Czy to możliwe, że tylko jeden bit się przełącza, więc mój plik pokazuje mi literę „Q” zamiast „S”?
AKTUALIZACJA: Przeprowadziliśmy dalszą analizę. Nasza baza danych slave otrzymuje rekordy WAL od mastera (funkcja PostgreSQL). Cokolwiek: nasz serwer slave powinien być zsynchronizowany. Ale niewolnik nie był zsynchronizowany w tym konkretnym rzędzie. Widzieliśmy, że stało się to kilka dni temu bez interakcji użytkownika w tym konkretnym wpisie. Więc to MUSI być trochę przewracane. straszny!