Błąd MySQL z: InnoDB: Błąd systemu operacyjnego nr 30 w operacji na pliku

2

Mój serwer MySQL został zatrzymany ostatnio raz w tygodniu. Wymaga ponownego uruchomienia, aby ponownie działać. Ale po ponownym uruchomieniu będzie działać ponownie przez kolejny tydzień lub dwa.

Ten błąd to numer 30. Według adresu URL w dzienniku błędów MYSQL nie podaje moich informacji więcej niż tylko powiedzenie, że mój dysk bazy danych jest teraz w trybie gotowości.

Moja baza danych znajduje się na dysku zamontowanym przy użyciu UUID="c3c2527e-..." /media/database ext4 user,auto 0 2. Ten zamontowany napęd jest dostępny przez ssh, gdy wystąpi ten błąd.

Według mojej wiedzy nie zaktualizowałem ostatnio systemu operacyjnego ani MYSQL ani nie wprowadziłem zmian na serwerze. Pamiętam, że musiałem dostosować program Apparmor, gdy po raz pierwszy dodałem dysk zawierający MYSQL. Jednak zostało to zrobione ponad rok temu.

Więc moje pytanie brzmi: czy ten problem ma związek z moim dyskiem twardym, który źle się czuje, czy czuje się źle, czy coś innego?

OS: 12.04.2 LTS (GNU / Linux 3.5.0-23-generic x86_64)

MYSQL: 5.5.31-0ubuntu0.12.04.1 (Ubuntu)

Dysk MYSQL: / dev / sdb1 2.0T 709M 2.0T 1% / media / baza danych

Cały błąd to:

140301  8:00:29 [Note] Plugin 'FEDERATED' is disabled.
140301  8:00:29 InnoDB: The InnoDB memory heap is disabled
140301  8:00:29 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140301  8:00:29 InnoDB: Compressed tables use zlib 1.2.3.4
140301  8:00:29 InnoDB: Initializing buffer pool, size = 128.0M
140301  8:00:29 InnoDB: Completed initialization of buffer pool
140301  8:00:29  InnoDB: Operating system error number 30 in a file operation.
InnoDB: Error number 30 means 'Read-only file system'.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/operating-system-error-codes.html
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
Jon
źródło

Odpowiedzi:

1

Na pewno masz problemy z dyskiem. Może to być kontroler dysku. Niezależnie od historii błąd na poziomie systemu operacyjnego:

sh-4.1# perror 30
OS error code  30:  Read-only file system

InnoDB przestanie działać, ponieważ wymaga wielu zapisów, nawet jeśli czyta

Oto jak wygląda InnoDB

InnoDB Architecture

Aktywne komponenty InnoDB wymagające zapisów to

  • Słownik danych (podczas tworzenia, modyfikowania i upuszczania tabel)
  • Podwójny bufor zapisu (kopia danych do ponownego wykorzystania w odzyskiwaniu po awarii)
  • Wstaw bufor (łagodzenie zmian indeksów z puli buforów)
  • Wycofywanie segmentów / cofanie dzienników ( Izolacja transakcji i MVCC )
  • Pliki dziennika (odbieranie zmian z bufora dziennika przez Fuzzy Checkpointing )
  • .ibd pliki (indywidualne pliki przestrzeni tabel)

Gdy system plików zmieni się tylko do odczytu, wszystkie te ruchome części zatrzymają się.

Powinieneś cofnąć dane

  • Zrobiłbym mysqldump wszystkich danych
  • Zamknij mysql i pobierz migawkę LVM (jeśli dotyczy)
  • Zamknij mysql i skopiuj datadir

Po utworzeniu kopii zapasowej przejdź do konserwacji dysku. Sprawdź RAID, kontroler dysku i sam dysk.

Oto kilka innych postów ServerFault dotyczących problemów tylko do odczytu

RolandoMySQLDBA
źródło
Skończyło się na moim dysku twardym. Postanowiłem po tym wydaniu przenieść wszystko do chmury, więc nie będę miał do czynienia z 1-letnimi twardymi dyskami: +1
Jon