Dlaczego instalacja MySQL 5.6 na Ubuntu 14.04 nie powiodła się?


30

Chciałem rzucić okiem na MySQL 5.6 na Ubuntu 14.04 z ciekawości. Na podstawie tego artykułu z pewnością wyglądało, że instalacja powinna być prosta i łatwa. Odpaliłem więc mikrosterownik AWS EC2 z systemem Ubuntu 14.04 (64-bit), zalogowałem się do mojej nieskazitelnej instancji (przez PuTTY) i wydałem następujące polecenia:

$ sudo apt-get update
$ sudo apt-get build-dep mysql-server-5.6
$ sudo apt-get install mysql-server-5.6

(Pierwsze dwa polecenia były ruchami desperacji, ponieważ zwykłe uruchamianie apt-get installsamemu wcześniej nie działało. Ale nawet przy wszystkich trzech poleceniach krok instalacji nadal nie działał.)

W miejscu, w którym spodziewałem się, na podstawie artykułu, o którym mowa powyżej, zobaczyć dane wyjściowe z ostatecznego polecenia:

mysql start/running, process 2355  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  

Mam to zamiast tego:

start: Job failed to start  
invoke-rc.d: initscript mysql, action "start" failed.  
dpkg: error processing package mysql-server-5.6 (--configure):  
 subprocess installed post-installation script returned error exit status 1  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  
Errors were encountered while processing:  
 mysql-server-5.6  
E: Sub-process /usr/bin/dpkg returned an error code (1)

Czy ktoś może zobaczyć, co poszło nie tak?


1
co mówi dziennik? cat /var/log/mysql.err
Paté

Odpowiedzi:


22

Występujący problem wygląda tak samo jak ten raport o błędzie . Wygląda na to, że uruchomienie nie powiodło się, ponieważ domyślna konfiguracja MySQL 5.6 wymaga więcej pamięci, niż może uzyskać w mikro instancji.

Rozwiązaniem problemu wydaje się być jedno z poniższych:

  • Zwiększ ilość pamięci w instancji EC2
  • Ustaw mniejszą wartość dla max_connectionszmiennej MySQL

1
Tak, ten problem jest DOKŁADNIE błędem pokazanym w tym zgłoszeniu błędu. Dzięki! Do tej pory wypróbowałem sugerowaną szybką poprawkę, która miała zapewnić, że /etc/apparmor.d/local/usr.sbin.mysqld istnieje, i niestety to nie zrobiło. Teraz spróbuję zainstalować więcej pamięci.
WebLearner

1
Do następnej próby zamiast instancji EC2 stworzyłem maszynę wirtualną Ubuntu 14.04 z 2 GB pamięci za pomocą Oracle VM Virtualbox, aw tym środowisku instalacja MySQL 5.6 przebiegła bez żadnych problemów sudo apt-get install mysql-server-5.6. Wydaje się więc, że instancja mikro EC2 nie ma wystarczającej ilości pamięci, aby zainstalować MySQL 5.6 za pomocą apt-get!
WebLearner

1
Do raportu o błędzie dodano dodatkowy komentarz sugerujący zmniejszenie max_connections MySQL przed instalacją MySQL 5.6. Skorzystałem z tej rady i dodałem plik .cnf do /etc/mysql/conf.d, który zawierał dwie linie: „[mysqld]” i „max_connections = 20”. Po zainstalowaniu tego pliku moja instalacja MySQL na świeżym mikroprocesorze EC2 przepłynęła. (Zgodnie z dokumentacją wartość domyślna dla max_connections jest 151. Ustawienie na 20 jest prawdopodobnie skrajnych, ale przynajmniej pokazuje, że jest to możliwe, aby uzyskać MySQL zainstalować.).
WebLearner

Aby uzyskać dodatkowe informacje: sprawdzam /var/lib/dpkg/info/mysql-server-5.6.postinst i stwierdziłem, że możesz uruchomić ten skrypt, aby odtworzyć dokładne kroki, które
zawodzą

Działa na mojej włóczęgi, ustawiłem 1G RAM i naprawiłem. Dziękuję Ci. : D
Chu-Siang Lai,

24

Ten sam problem występuje podczas inicjowania mojego małego VPS. Problem jest spowodowany małą pamięcią. Więc bez wydawania dodatkowych pieniędzy na zwiększenie niepotrzebnej pamięci, możesz po prostu utworzyć pliki wymiany, aby wspomóc instalację. Tak, wymiana jest powolna, ale wszystko, czego potrzebujesz, to instalacja.

W systemie Ubuntu 14.04 wykonuję następujące czynności, aby rozwiązać problem:

Utwórz plik wymiany 4G:

sudo fallocate -l 4G /swapfile

Zmień uprawnienia, aby tylko root mógł uzyskać dostęp i zmienić:

sudo chmod 600 /swapfile

Zmień to:

sudo mkswap /swapfile

Aktywuj:

sudo swapon /swapfile

Teraz możesz spróbować ponownie zainstalować mysql, tym razem powinien się udać. Pamiętaj tylko, aby usunąć poprzednią nieudaną instalację.


Tak, idealna odpowiedź. Absolutnie niesamowite.
Wren,

3

Mam ten sam problem. Chociaż miałem wystarczająco dużą pamięć 12 Gb podaną mojej maszynie wirtualnej, ale i tak wszystko się nie udawało. Po pewnym czasie okazało się, że w domyślnym apt get brakuje niektórych tłumaczeń konfiguracji i tłumaczeń narzędzi.

Repozytorium apt MySQL zapewnia prosty i wygodny sposób instalacji i aktualizacji produktów MySQL przy użyciu najnowszych pakietów oprogramowania apt-get. Oto, co musisz przestrzegać:

  1. Dodawanie repozytorium MySQL APT Najpierw dodaj apt repozytorium MySQL do listy repozytoriów oprogramowania systemu. Wykonaj następujące kroki:

    • Przejdź do strony pobierania repozytorium apt MySQL pod adresem http://dev.mysql.com/downloads/repo/apt/ .

    • Wybierz i pobierz pakiet wydania.

    • Zainstaluj pobrany pakiet wydania za pomocą następującego polecenia, zastępując nazwę pakietu specyficzną dla wersji nazwą pobranego pakietu (poprzedzona ścieżką, jeśli nie uruchamiasz polecenia w folderze, w którym znajduje się pakiet):

      sudo dpkg -i /PATH/version-specific-package-name.deb
      

    Pamiętaj, że ten sam pakiet działa na wszystkich obsługiwanych platformach Debian i Ubuntu.

    • Podczas instalacji pakietu zostaniesz poproszony o wybranie wersji serwera MySQL i innych składników (na przykład MySQL Workbench), które chcesz zainstalować. Jeśli nie masz pewności, którą wersję wybrać, nie zmieniaj domyślnych opcji wybranych dla Ciebie. Możesz także wybrać brak, jeśli nie chcesz instalować określonego komponentu. Po dokonaniu wyboru wszystkich komponentów wybierz OK, aby zakończyć konfigurację i instalację pakietu wydania.

    zawsze możesz później zmienić swoje wybory dla wersji;
    instrukcje znajdują się w części Wybieranie głównej wersji wydania.

    • Zaktualizuj informacje o pakiecie z repozytorium MySQL APT za pomocą następującego polecenia (ten krok jest obowiązkowy):

      sudo apt-get update
      
  2. Instalowanie MySQL z APT

    • Zainstaluj MySQL za pomocą następującego polecenia:

      sudo apt-get install mysql-server
      

Spowoduje to zainstalowanie pakietu dla serwera MySQL, a także pakietów dla klienta i wspólnych plików bazy danych.

Podczas instalacji w oknach dialogowych pojawiają się dwa żądania: Podaj hasło dla użytkownika root do instalacji MySQL.

  1. Uruchamianie i zatrzymywanie serwera MySQL

Serwer MySQL jest uruchamiany automatycznie po instalacji. - Możesz sprawdzić status serwera MySQL za pomocą następującego polecenia:

sudo service mysql status
  • Zatrzymaj serwer MySQL za pomocą następującego polecenia:

    sudo service mysql stop
    
  • Aby zrestartować serwer MySQL, użyj następującego polecenia:

    sudo service mysql start
    

Śledziłem to http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install . To działało sprawnie i pobrało wszystkie pakiety i zostało pomyślnie zainstalowane mysql 5.6.


Dzięki David. To ma sens. Zmieniłem odpowiedź na bardziej szczegółowe kroki. Dzięki.
Ritesz

+1 za ulepszoną odpowiedź.
David Foerster,

ostatnio byłem ja… to naprawdę ja? :)
szybki

2

W moim przypadku dodałem

innodb_buffer_pool_size = 20M

do /etc/mysql/my.cnf


1
Użytkownik ma problemy z zainstalowaniem MySQL, a nie z niego korzysta.

Dzięki, przeczytałem pytanie). Mam ten sam problem podczas instalacji. W rzeczywistości instalacja została zakończona, a mysql jest już dostępny jako usługa i możemy go uruchomić. Ale na ostatnim etapie procesu instalacji (uruchamianie mysqld) wychwytujemy ten irytujący błąd.
maxkoryukov


1

Ten problem napotkałem na Ubuntu 15.10. Dla mnie nie był to problem z pamięcią (mam 2 GB pamięci RAM i 18 GB wymiany, z czego w sumie wykorzystano tylko około 300 MB).

W moim przypadku dpkgszukałem /etc/mysql/conf.d, który nie istniał (jakkolwiek /etc/mysql/mysql.conf.d!). Ponowna instalacja mysql i ręczne utworzenie folderu /etc/mysql/conf.drozwiązało mój problem.

Jak to się dokładnie stało? Nie mam pojęcia. Prawie nie chciałem udostępniać swojej odpowiedzi, ponieważ założę się, że to rozwiązanie jest specyficzne dla mojego komputera.

Rozwiązałem ten problem, używając narzędzia strace, które jest fantastyczne do tego rodzaju rzeczy, jeśli jest niewiarygodnie szczegółowe.

Użyłem tego w ten sposób:

  • Po wciśnięciu do ctrlcpołowy apt-get install mysql-servermusiałem biec, dpkg --configure -aaby zakończyć instalację.

  • Pobiegłem strace 2>/tmp/trace dpkg --configure -a. To już mi piękny stracedziennik w /tmp/trace.

  • Spojrzałem na kłodę, zwłaszcza na dole, gdzie zawiodła.

  • Zauważyłem, że próbował uzyskać dostęp /etc/mysql/conf.di dostałem kod błędu ENOENT, brak takiego pliku lub katalogu .

Dla każdego, kto chce spróbować, zrób to strace 2>/tmp/trace (command)i pozdrów ENOENT. Jak powiedziałem, to rozwiązanie jest prawdopodobnie specyficzne dla mojego komputera, ale możesz spróbować.


0

W moim przypadku wszystko, co musiałem zrobić, to wprowadzić zmiany my.cnfi po prostu usunąć 2 pliki dzienników o nazwach ib_logfile0i ib_logfile1i uruchomić mysql

service mysql start

Nie trzeba ponownie instalować mysql, wystarczy usunąć te 2 pliki dziennika i ponownie uruchomić serwer mysql

Poniżej zmiany, które wprowadziłem w my.cnf:

max_connections     = 1000     
max_allowed_packet  = 1024M
wait_timeout        = 7200 

Dodaj nieco więcej do swojej odpowiedzi, aby inni mogli ją śledzić.
George Udosen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.