Niedawno uaktualniłem poprzednią wersję LTS Ubuntu do Precise, a teraz mysql odmawia uruchomienia. Skarży się na następujące, gdy próbuję go uruchomić:
╰$ sudo service mysql restart
stop: Unknown instance:
start: Job failed to start
I pokazuje to w „/var/log/mysql/error.log”:
120415 23:01:09 [Note] Plugin 'InnoDB' is disabled.
120415 23:01:09 [Note] Plugin 'FEDERATED' is disabled.
120415 23:01:09 [ERROR] Unknown/unsupported storage engine: InnoDB
120415 23:01:09 [ERROR] Aborting
120415 23:01:09 [Note] /usr/sbin/mysqld: Shutdown complete
Sprawdziłem uprawnienia do wszystkich katalogów mysql, aby upewnić się, że ma ono własność, a także zmieniłem nazwy wcześniejszych dzienników ib_log, aby mógł je przerobić. Po prostu nie docieram teraz do tego problemu, po 2 godzinach patrzenia na wyniki Google.
Odpowiedzi:
Po sprawdzeniu dzienników znalazłem następujący błąd:
Usunąłem te pliki:
w
/var/lib/mysql
To rozwiązało mój problem po ponownym uruchomieniu.
źródło
rm
polecenie służy do usuwania plików zamiast ich nazwy o ile wiem ...ibdata
plik zawiera dane (chyba że masz plik na tabelę). Pliki ib_logfile są dziennikami odtwarzania, które zawierają dane dotyczące transakcji zmieniających bazę danych, które mogły być przetwarzane, gdy baza danych uległa awarii. Jeśli udało się zamknąć serwer, usunięcie tych plików dziennika nie zaszkodzi. Jeśli się zawiesił, potrzebujesz ich. Ale to poprawna odpowiedź. Jeśli plik my.cnf zmieni opcję innodb_log_file_sile_pliku i nie będzie już zgodny z tymi dwoma plikami, pojawi się komunikat o błędzie podany przez OP. Usuwanie / przenoszenie, aby można było tworzyć nowe, naprawia to.mv ib_logfile0 ib_logfile0.bak && mv ib_logfile1 ib_logfile1.bak
.Jeśli naprawdę potrzebujesz
skip-innodb
(użyj przypadku: mało miejsca w pamięci), to oczywiście nie musisz tego komentować. Jeśli jednak InnoDB jest domyślnym silnikiem pamięci, serwer nie uruchomi się, dopóki nie powiesz, którego silnika pamięci należy użyć, npdefault-storage-engine=myisam
. W MyISAM.Wypróbuj to:
źródło
default-storage-engine=myisam
w pliku /etc/my.cnf pod[mysqld]
. To załatwiło sprawę. DziękiJeśli używasz MySQL 5.6+ i chcesz wyłączyć InnoDB, nie zapomnij o „ --default-tmp-storage ”, inaczej nie zadziała:
http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#option_mysqld_ignore-builtin-innodb
Możesz dodać to do swojego my.cnf:
żeby się upewnić, że zadziała.
źródło
default-storage-engine
idefault-tmp-storage-engine
dzięki.Sprawdź dziennik błędów mysql.
Jeśli twój dziennik mówi (tak jak mój):
Nie masz wystarczającej ilości pamięci, aby użyć domyślnego rozmiaru bufora 128 MB
Edytuj plik konfiguracyjny /etc/mysql/my.cnf, dodając wiersz, aby określić mniejszy rozmiar innodb_buffer_pool_size.
Zapisz plik konfiguracyjny i uruchom mysql
źródło
Spróbuj jeszcze 2 rzeczy. 1. Zmniejsz rozmiar puli buforów innodb. 2. Edytuj skrypt początkowy mysql i dodaj opcję --innodb.
Zastanawiam się także, czy twoja paczka jest wadliwa. Czy mógłbyś wypróbować inną mniejszą wersję?
Zakładam również, że twój serwer mysql został zaktualizowany? Może ta wersja jest zepsuta? Precyzja nie jest jeszcze ostateczna.
źródło
Wystąpił ten błąd, gdy usunąłem lokalizację, dla której używam
tmpdir
. Jeśli niedawno zmieniłeś swójtmpdir
, możesz sprawdzić, czy jest to poprawna, zapisywalna lokalizacja.źródło