Warum ist die Installation von MySQL 5.6 unter Ubuntu 14.04 fehlgeschlagen?

30

Ich wollte aus Neugier einen Blick auf MySQL 5.6 auf Ubuntu 14.04 werfen. Und basierend auf diesem Artikel sah es auf jeden Fall so aus, als ob die Installation einfach und unkompliziert sein sollte. Daher habe ich einen AWS EC2-Mikroserver mit Ubuntu 14.04 (64-Bit) gestartet, mich bei meiner ursprünglichen Instanz angemeldet (über PuTTY) und die folgenden Befehle ausgegeben:

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

(Die ersten beiden Befehle waren verzweifelte Aktionen, da apt-get installes zuvor nicht geklappt hatte , alleine zu laufen . Aber selbst mit allen drei Befehlen funktionierte der Installationsschritt immer noch nicht.)

An dem Punkt, an dem ich basierend auf dem oben genannten Artikel erwartet hatte, diese Ausgabe des letzten Befehls zu sehen:

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) ...  

Ich habe stattdessen folgendes erhalten:

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)

Kann jemand sehen, was schief gelaufen ist?

WebLearner
quelle
1
Was sagt das Protokoll? cat /var/log/mysql.err
Paté

Antworten:

22

Das Problem, das Sie haben, sieht genauso aus wie in diesem Fehlerbericht . Das Fehlschlagen des Startvorgangs scheint darauf zurückzuführen zu sein, dass die Standardkonfiguration von MySQL 5.6 mehr Speicher benötigt, als in Ihrer Mikroinstanz verfügbar ist.

Die Lösung für den Fehler scheint darin zu bestehen, eine der folgenden Aktionen auszuführen:

  • Erhöhen Sie die Speicherkapazität in Ihrer EC2-Instanz
  • Setzen Sie einen kleineren Wert für die MySQL- max_connectionsVariable
Mike Miller
quelle
1
Ja, dieses Problem ist genau der Fehler, der in diesem Fehlerbericht angezeigt wird. Vielen Dank! Bisher habe ich versucht, die vorgeschlagene Schnellkorrektur durchzuführen, um sicherzustellen, dass /etc/apparmor.d/local/usr.sbin.mysqld vorhanden ist. Leider hat dies nicht funktioniert. Also werde ich jetzt eine Installation mit mehr Speicher versuchen.
WebLearner
1
Für den nächsten Versuch habe ich anstelle einer EC2-Instanz eine virtuelle Ubuntu 14.04-Maschine mit 2 GB Arbeitsspeicher unter Verwendung der Oracle VM Virtualbox erstellt, und in dieser Umgebung lief die MySQL 5.6-Installation problemlos unter Verwendung von sudo apt-get install mysql-server-5.6. Es scheint also, dass eine EC2 Micro-Instanz nicht genug Speicher hat, um MySQL 5.6 mit apt-get zu installieren!
WebLearner
1
Dem Fehlerbericht wurde ein zusätzlicher Kommentar hinzugefügt, der vor der Installation von MySQL 5.6 vorschlug, die max_connections von MySQL zu reduzieren. Ich nahm diesen Rat an und fügte /etc/mysql/conf.d eine .cnf-Datei hinzu, die zwei Zeilen enthielt: "[mysqld]" und "max_connections = 20". Mit dieser Datei lief meine MySQL-Installation auf einem neuen EC2-Mikro durch. (Laut Dokumentation ist der Standardwert für max_connections 151. Das Setzen auf 20 ist wahrscheinlich extrem. Zumindest zeigt dies, dass es möglich ist, MySQL zu installieren.)
WebLearner
Weitere Informationen: Ich überprüfe /var/lib/dpkg/info/mysql-server-5.6.postinst und habe festgestellt, dass Sie dieses Skript ausführen können, um die genauen Schritte zu reproduzieren, die fehlschlagen
shakaran 29.10.15
Es funktioniert auf meinem Landstreicher, ich habe das 1G RAM eingestellt und es behoben. Danke dir. : D
Chu-Siang Lai
24

Ich habe das gleiche Problem festgestellt, als ich meinen kleinen VPS initialisierte. Das Problem wird durch einen kleinen Speicher verursacht. Ohne zusätzliches Geld für die Vergrößerung des nicht benötigten Speichers können Sie einfach Auslagerungsdateien erstellen, um die Installation zu erleichtern. Ja, der Swap ist langsam, aber alles, was Sie brauchen, ist die Installation.

Unter Ubuntu 14.04 behebe ich das Problem folgendermaßen:

Erstellen Sie eine 4G-Auslagerungsdatei:

sudo fallocate -l 4G /swapfile

Ändern Sie die Berechtigung, damit nur root auf Folgendes zugreifen und es ändern kann:

sudo chmod 600 /swapfile

Lass es tauschen:

sudo mkswap /swapfile

Aktivieren Sie:

sudo swapon /swapfile

Jetzt können Sie versuchen, mysql erneut zu installieren. Diesmal sollte dies erfolgreich sein. Denken Sie daran, die zuvor fehlgeschlagene Installation zu entfernen, bevor Sie dies tun.

Arthur Wang
quelle
Ja, perfekte Antwort. Absolut klasse.
Wren
3

Ich bin auf dasselbe Problem gestoßen. Ich hatte zwar genügend Speicherplatz (12 GB) für meine VM, aber die Dinge scheiterten wie in Frage. Nachdem ich einige Zeit damit verbracht hatte, herauszufinden, dass in apt get einige der Konfigurations- und Tool-Übersetzungspakete fehlten.

Das MySQL apt-Repository bietet eine einfache und bequeme Möglichkeit, MySQL-Produkte mit den neuesten Softwarepaketen zu installieren und zu aktualisieren apt-get. Folgendes müssen Sie beachten:

  1. Hinzufügen des MySQL APT-Repositorys Fügen Sie zunächst das MySQL apt-Repository zur Software-Repository-Liste Ihres Systems hinzu. Folge diesen Schritten:

    • Gehen Sie zur Download-Seite für das MySQL-Repository unter http://dev.mysql.com/downloads/repo/apt/ .

    • Wählen Sie das Release-Paket aus und laden Sie es herunter.

    • Installieren Sie das heruntergeladene Release-Paket mit dem folgenden Befehl und ersetzen Sie den versionsspezifischen Paketnamen durch den Namen des heruntergeladenen Pakets (mit vorangestelltem Pfad, wenn Sie den Befehl nicht in dem Ordner ausführen, in dem sich das Paket befindet):

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

    Beachten Sie, dass das gleiche Paket auf allen unterstützten Debian- und Ubuntu-Plattformen funktioniert.

    • Während der Installation des Pakets werden Sie aufgefordert, die Versionen des MySQL-Servers und anderer Komponenten (z. B. der MySQL Workbench) auszuwählen, die Sie installieren möchten. Wenn Sie sich nicht sicher sind, welche Version Sie auswählen sollen, ändern Sie nicht die für Sie ausgewählten Standardoptionen. Sie können auch keine auswählen, wenn eine bestimmte Komponente nicht installiert werden soll. Nachdem Sie die Auswahl für alle Komponenten getroffen haben, klicken Sie auf OK, um die Konfiguration und Installation des Release-Pakets abzuschließen.

    Sie können Ihre Auswahl für die Versionen später jederzeit ändern.
    Anweisungen hierzu finden Sie unter Auswählen einer Major Release-Version.

    • Aktualisieren Sie die Paketinformationen aus dem MySQL APT-Repository mit dem folgenden Befehl (dieser Schritt ist obligatorisch):

      sudo apt-get update
      
  2. Installation von MySQL mit APT

    • Installieren Sie MySQL mit folgendem Befehl:

      sudo apt-get install mysql-server
      

Dadurch werden das Paket für den MySQL-Server sowie die Pakete für den Client und für die gemeinsamen Datenbankdateien installiert.

Während der Installation werden zwei Anforderungen von den Dialogfeldern gestellt: Geben Sie ein Kennwort für den Root-Benutzer für Ihre MySQL-Installation ein.

  1. Starten und Stoppen des MySQL Servers

Der MySQL-Server wird nach der Installation automatisch gestartet. - Sie können den Status des MySQL-Servers mit dem folgenden Befehl überprüfen:

sudo service mysql status
  • Stoppen Sie den MySQL-Server mit dem folgenden Befehl:

    sudo service mysql stop
    
  • Verwenden Sie den folgenden Befehl, um den MySQL-Server neu zu starten:

    sudo service mysql start
    

Ich folgte diesem http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install . Dies funktionierte reibungslos und alle Pakete heruntergeladen und erfolgreich installiert mysql 5.6.

Ritesh
quelle
Danke David. Das macht Sinn. Ich habe die Antwort auf detailliertere Schritte geändert. Vielen Dank.
Ritesh
+1 für die verbesserte Antwort.
David Foerster
Zuletzt war ich ... bin es wirklich ich? :)
schnell
2

In meinem Fall habe ich hinzugefügt

innodb_buffer_pool_size = 20M

zum /etc/mysql/my.cnf

maxkoryukov
quelle
1
Der Benutzer hat Probleme damit, MySQL zu installieren, ohne es zu verwenden.
Danke, ich habe die Frage gelesen) Ich habe das gleiche Problem während der Installation. Eigentlich ist die Installation beendet und mysql ist bereits als Dienst verfügbar, und wir könnten es ausführen. Aber im letzten Schritt des Installationsprozesses (Starten von mysqld) bemerken wir diesen nervigen Fehler.
Maxkoryukov
1

Ich bin auf dieses Problem unter Ubuntu 15.10 gestoßen. Für mich war es kein Speicherproblem (ich habe 2 GB RAM und 18 GB Swap, von denen insgesamt nur etwa 300 MB verwendet wurden).

In meinem Fall dpkgwurde gesucht /etc/mysql/conf.d, was es nicht gab (hat aber /etc/mysql/mysql.conf.dgeklappt!). Das erneute Installieren von mysql und das manuelle Erstellen des Ordners /etc/mysql/conf.dlöste mein Problem.

Wie genau ist das passiert? Ich habe keine Ahnung. Ich wollte meine Antwort fast nicht teilen, da diese Lösung für meinen Computer spezifisch ist.

Ich habe dieses Problem mit dem Hilfsprogramm gelöst strace, das für diese Art von Dingen fantastisch ist, wenn auch unglaublich ausführlich.

Ich habe es so benutzt:

  • Nachdem ich mich ctrlchalb durchgedrückt hatte apt-get install mysql-server, musste ich rennen dpkg --configure -a, um die Installation abzuschließen.

  • Ich rannte strace 2>/tmp/trace dpkg --configure -a. Das hat mich zu einem netten straceLog gemacht /tmp/trace.

  • Ich schaute durch das Protokoll, vor allem unten, wo es fehlschlug.

  • Ich bemerkte, dass es versuchte, auf eine solche Datei oder ein solches Verzeichnis zuzugreifen /etc/mysql/conf.d, und bekam den Fehlercode ENOENT .

Für alle, die dies ausprobieren möchten, tun Sie das strace 2>/tmp/trace (command)und greifen Sie zu ENOENT. Wie gesagt, diese Lösung ist wahrscheinlich spezifisch für meinen Computer, aber vielleicht möchten Sie es ausprobieren.

Aprikosenjunge
quelle
0

In meinem Fall musste ich nur einige Änderungen an den my.cnfbeiden Protokolldateien ib_logfile0und ib_logfile1und vornehmen und mysql starten

service mysql start

Sie müssen mysql nicht neu installieren, löschen Sie einfach diese 2 Protokolldateien und starten Sie den mysql-Server neu

Nachfolgend Änderungen, die ich in vorgenommen habe my.cnf:

max_connections     = 1000     
max_allowed_packet  = 1024M
wait_timeout        = 7200 
Lavina Chitara
quelle
Bitte fügen Sie Ihrer Antwort etwas mehr hinzu, damit andere folgen können.
George Udosen