Napisałem prostą wtyczkę Nagios, która wywołuje mysqlcheck (która sprawdza uszkodzone tabele) i ostrzega, jeśli są uszkodzone.
Jednak żadna z moich tabel nie jest teraz uszkodzona. Nie jestem więc w 100% pewien, że moja wtyczka działa dobrze. Mam serwer deweloperów, który nie jest krytyczny dla misson. Jak zmusić jedną (lub dowolną) ze znajdujących się tam tabel do uszkodzenia, aby móc przetestować alert nagios?
Dla przypomnienia, serwerem jest Ubuntu Dapper, a mysql to wersja 5.0
Odpowiedzi:
Zasadniczo nie można wykonać kopii zapasowej baz danych, kopiując je z / var / lib / mysql, a następnie kopiując je z powrotem, ponieważ uległy uszkodzeniu, zamiast tego należy użyć mysqldump.
Więc jeśli przejdziesz do jednego z folderów bazy danych w / var / lib / mysql, tj. / Var / lib / mysql / myDB / i zadzierasz z niektórymi plikami, które powinny to zrobić :-)
Polecam więc skopiowanie jednego z plików, edycję trochę przy pomocy edytora szesnastkowego i skopiowanie go z powrotem.
źródło
źródło
Możesz użyć narzędzia do fuzzowania, takiego jak zzuf, aby sfałszować istniejący plik bazy danych, np
źródło
To powinno to zrobić:
źródło
Sugerowałbym, że bardziej realistycznym sposobem symulowania błędu byłoby wyciągnięcie dywanu spod stóp MySQL podczas intensywnej aktualizacji. Wydanie SIGKILL do
mysqld
procesu powinno wystarczyć. Możliwe, że po ponownym uruchomieniu MySQL dane tabele zostaną oznaczone jako zawieszone.Alternatywnie sugerowałbym zastosowanie sugestii innych osób, ale do
.MYI
pliku indec zamiast do pliku danych.źródło
przykład:
źródło
być może wykonanie polecenia, które robi coś takiego:
źródło