Mysql kann nicht gestartet werden - mysql wird zu schnell neu gestartet, gestoppt

33

Heute habe ich eine Neuinstallation von Ubuntu 12.04 durchgeführt und meine lokale Entwicklungsumgebung eingerichtet. Ich habe mysql installiert und bearbeitet /etc/mysql/my.cnf, um InnoDB zu optimieren, aber wenn ich versuche, mysql neu zu starten, schlägt dies mit einem Fehler fehl:

[20:53][tom@Pochama:/var/www/website] (master) $ sudo service mysql restart
start: Job failed to start

Das Syslog zeigt, dass ein Problem mit dem Init-Skript vorliegt:

> tail -f /var/log/syslog

Apr 28 21:17:46 Pochama kernel: [11840.884524] type=1400 audit(1335644266.033:184): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=760 comm="apparmor_parser"
Apr 28 21:17:47 Pochama kernel: [11842.603773] init: mysql main process (764) terminated with status 7
Apr 28 21:17:47 Pochama kernel: [11842.603841] init: mysql main process ended, respawning
Apr 28 21:17:48 Pochama kernel: [11842.932462] init: mysql post-start process (765) terminated with status 1
Apr 28 21:17:48 Pochama kernel: [11842.950393] type=1400 audit(1335644268.101:185): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=811 comm="apparmor_parser"
Apr 28 21:17:49 Pochama kernel: [11844.656598] init: mysql main process (815) terminated with status 7
Apr 28 21:17:49 Pochama kernel: [11844.656665] init: mysql main process ended, respawning
Apr 28 21:17:50 Pochama kernel: [11845.004435] init: mysql post-start process (816) terminated with status 1
Apr 28 21:17:50 Pochama kernel: [11845.021777] type=1400 audit(1335644270.173:186): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=865 comm="apparmor_parser"
Apr 28 21:17:51 Pochama kernel: [11846.721982] init: mysql main process (871) terminated with status 7
Apr 28 21:17:51 Pochama kernel: [11846.722001] init: mysql respawning too fast, stopped

Irgendwelche Ideen?


Dinge, die ich bereits ausprobiert habe:

Ich habe gegoogelt und einen Ubuntu-Fehler mit Apparmor gefunden ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/970366 ).

sudo apt-get install apparmor-utils
sudo aa-complain /usr/sbin/mysqld
sudo /etc/init.d/apparmor reload

aber es hat nicht geholfen. Ich kann mysql immer noch nicht starten.

Ich dachte auch, das Problem könnte darin liegen, dass die InnoDB-Protokolldateien eine andere Größe hatten als von mysql erwartet. Ich habe die innodb-Protokolldateien vor dem Neustart entfernt sudo mv /var/lib/mysql/ib_logfile* /tmp. Aber kein Glück.

Umgehung: Ich habe 12.04 neu installiert und darauf geachtet, dass ich nichts anfasse/etc/mysql/my.cnf . Mysql arbeitet, damit ich weitermachen kann, was ich tun muss. Aber ich muss es irgendwann ändern - hoffentlich habe ich eine Lösung gefunden, oder diese Frage wurde zu diesem Zeitpunkt beantwortet ...

Tom
quelle

Antworten:

29

Ich habe das Problem endlich herausgefunden. Grundsätzlich wurde die Definition einiger Parameter aus der Vorgängerversion von mysql entfernt und durch andere Namen ersetzt. Um dies zu beheben, ersetzen Sie in /etc/mysql/my.cnf:

# Tom Added to ensure the server character set is set to utf8
default-character-set = utf8
default-collation     = utf8_general_ci

mit:

# Tom Added to ensure the server character set is set to utf8
character_set_server  = utf8
collation_server      = utf8_general_ci

Dies ist der zugehörige Launchpad-Fehlerbericht: https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/958120 .

Oder einfach laufen:

# Miraz added dpkg-reconfigure
dpkg-reconfigure mysql-server-5.5

Aber stellen Sie sicher, dass keine alte MySQL-Version installiert ist. Falls vorhanden, entfernen Sie bitte:

# Miraz quick mysql package check
dpkg -l *mysql*
Tom
quelle
Ich hatte dieses Problem nicht, aber ein dpkg-reconfigure mysql-server-5.5Fehler in meiner Konfiguration wurde behoben.
David Purdue
In meinem Fall stellte sich heraus, dass das Problem ein falsch eingegebener Eigenschaftsname in /etc/mysql/my.cnf .... ist. Führen Sie in diesem Blog Folgendes aus : dangtrinh.com/2014/05/… mysqld -v. Ich habe versucht, MySQL-Exit-Code 7 zu googeln, ohne Erfolg. Ich vermute, Exit-Code 7 hat mit Fehlern beim Parsen der mysql-Konfigurationsdatei zu tun.
MaasSql
Ich hatte das gleiche Problem, fand es jedoch schwierig, das zu verfolgen, da meine fehlerhafte Konfiguration unter /etc/mysql/conf.d/* lag und es auch alte Protokolle mit dem Namen /var/log/mysql.* gab, die dazu führten, dass ich das nicht bemerkte aktive Protokolle / var / log / mysql / *.
Dave Burt
1
Randnotiz: utf8_unicode_ciist besser. Jetzt sogarutf8mb4_unicode_ci
Akshay
10

Innodb hat eine Standardeinstellung (innodb_buffer_pool_size), die auf 128 MB festgelegt ist - dies ist möglicherweise zu groß für Ihren Server (insbesondere, wenn Sie ein kleines Amazon EC2-AMI verwenden - wie ich es war) Leitung zu /etc/mysql/my.cnf

innodb_buffer_pool_size = 16M

Ich habe über dieses Update hier geschrieben http://www.mlynn.org/2012/07/mysql-5-5-on-ubuntu-12-04-job-failed-to-start

Michael Lynn
quelle
Es stellte sich heraus, dass meiner VM einfach der Speicher ausgeht. Eine innodb_buffer_pool_sizeniedrigere Einstellung war ein Teil der Lösung, aber achten Sie darauf, dass Ihnen möglicherweise nicht genügend Speicherplatz zur Verfügung steht.
Thaddeusmt
10

Ich hatte ein ähnliches Problem. Es war frustrierend, weil ich keine Fehlerprotokolle sehen konnte, die auf das Problem hinweisen.

In meinem Fall war der Wert, den ich für innodb_buffer_pool_size festgelegt hatte, zu groß für den Arbeitsspeicher des Servers.

Ich fand dies heraus, indem ich mysqld direkt als mysql-Benutzer ausführte.

# su mysql
# mysqld

Auf diese Weise sehen Sie tatsächlich die Fehlerausgabe.

Joel
quelle
2
Dies ist ein großartiger Tipp, ich hatte Mühe, einige aussagekräftige Debug-Informationen aus MySQL herauszuholen. Vielen Dank!
eageranalyst
3

Ich hatte auch ein ähnliches Problem. Die folgenden Elemente besagen, dass sie von MySQL Server 5.5 entfernt wurden.
Wenn Sie sie in Ihrem haben my.cnf, wird es nicht gestartet. Kommentiere sie mit aus# .
(Informationen stammen von: http://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html )

Die betroffenen Optionen werden in dieser Liste angezeigt:

 --master-host
 --master-user
 --master-password
 --master-port
 --master-connect-retry
 --master-ssl
 --master-ssl-ca
 --master-ssl-capath
 --master-ssl-cert
 --master-ssl-cipher
 --master-ssl-key
Michael Salamon
quelle
Perfekt! Genau das, was mich abgeworfen hat. Vielen Dank.
Jim W.
3

Es scheint sich auf Fehler in der MySQL-Konfiguration in zu beschränken /etc/mysql/my.cnf und in den Dateien befinden /etc/mysql/conf.d/.

In meinem Fall war es ein falscher bind-addressWert, weil sich die IP-Adresse meines Rechners geändert hatte und MySQL nicht mehr binden konnte. Fühlen Sie sich frei, in diesem Blog-Artikel mehr darüber zu erfahren .

Boteeka
quelle
2

Eine gute Möglichkeit zum Debuggen der Fehler im Post-Start-Prozess ( /etc/init/mysql.conf) besteht darin, die Upstart-Protokolle zu überprüfen:

sudo tail -f /var/log/upstart/mysql.log 

Das gab mir einen Socket-Fehler:

Fehler: 'Verbindung zum lokalen MySQL-Server über Socket nicht möglich

In meinem Fall wurde es durch eine fehlende userEinstellung unter der [mysqld]Gruppe in verursachtmy.cnf

prusswan
quelle
1

Wenn ich nach dem Upgrade von 11.10 auf 12.04 einen ähnlichen MySQL-Fehler ("Job konnte nicht gestartet werden") hatte, kommentieren Sie # 27 unter https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1/+bug/ 573318? Comments = bei mir hat alles perfekt geklappt . Zitat:

Das Problem für mich war, dass die Datei /etc/apparmor.d/local/usr.sbin.mysqld nach dem Upgrade nicht existierte. Ich habe manuell einen von einem der leeren kopiert (dh hatte nur einen Kopfzeilenkommentar) und dann war alles in Ordnung.

marcvangend
quelle
1

Für mich war die Lösung, die Linie zu entfernen ...

set-variable = max_connections=200

... das ist die MySQL 3.x-Syntax und muss auf geändert werden

max_connections=200
Ken West
quelle
1

Ich hatte das gleiche Problem. Es stellte sich heraus, dass es sich um die Replikationen von mysql my.cnf master slave handelte. Überprüfe dein/var/log/mysql/error.log .

Ich hoffe das ist eine kleine Hilfe. Überprüfen Sie zuerst die MySQL-Einstellungen, bevor Sie zwei Stunden mit Apparmor verschwenden.

shadowdroid
quelle
1

Ich hatte die gleichen Probleme, für mich bind-addresswar das in meiner /etc/mysql/my.cnfAkte falsch eingestellt . Es scheint also, dass alles, was in my.cnf nicht stimmt, dieses Problem verursachen kann. Ich habe in den Protokollen nichts gefunden, was auf dieses Problem hinweist.

Chris
quelle
1

Mein Problem war 0% des freien Speicherplatzes! Überprüfen :-)

moamahi
quelle
1

Überprüfen Sie die /tmpBerechtigungen. Ich hatte dieses Problem, nachdem ich viele Male googelt und neu gestartet hatte, fand ich heraus, dass die /tmpBerechtigungen 755 waren.

Ich ändere es auf 777 und mysqlfange gut an.

shgnInc
quelle
Dieses Ding in der Antike, aber das war mein Problem ... Keine Ahnung, wie es sich verändert hat ...
TheHidden
In einigen Fällen durch Ändern des Dateisystems oder Mounten der /tmpneuen Partition.
ShgnInc
1

Nach einem automatischen Update auf mysqld-5.5.53 ubuntu 14.04.1 konnte mysql nicht gestartet werden. Diese Zeilen tauchten in meinem Syslog auf:

Oct 27 06:05:51 hostname kernel: [  593.168925] init: mysql post-start process (4997) terminated with status 1
Oct 27 06:05:51 hostname kernel: [  593.178241] type=1400 audit(1477562751.231:31): apparmor="STATUS" operation="profile_replace" profile="unconfined" name
Oct 27 06:05:51 hostname kernel: [  593.204392] init: mysql main process (5032) terminated with status 1
Oct 27 06:05:51 hostname kernel: [  593.204404] init: mysql respawning too fast, stopped

Das Problem wurde durch Erstellen dieses Verzeichnisses behoben:

sudo mkdir /var/lib/mysql-files
sudo chmod 700 /var/lib/mysql-files
sudo chown mysql:mysql /var/lib/mysql-files
sudo /etc/init.d/mysql start
Yapsr
quelle
0

Gerade aktualisierte MySQL- und AppArmor-Version, wie hier vorgeschlagen , um dieses Problem unter Ubuntu 12.04 zu beheben, das auf einer Amazon ec2-Instanz ausgeführt wird. Ich erhalte immer noch ein paar Mal den Fehler, aber MySQL startet sich automatisch neu.

Jay Prakash
quelle
1
Willkommen bei Ask Ubuntu! Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Ringtail
0

Ich hatte die gleichen Fehlermeldungen, aber die Ursache war unterschiedlich. Meine InnoDB-Tabellen waren beschädigt, weil das gesamte Dateisystem schreibgeschützt war. Ich habe die Beschädigung behoben, indem ich die folgende Zeile zu /etc/mysql/my.cf hinzugefügt habe

innodb_force_recovery = 1

Ich habe MySQL gestartet:

sudo service mysql start

MySQL wurde gestartet und ich exportierte alle Tabellen. Ich habe innodb_force_recovery auf 0 geändert (= Standard) und MySQL neu gestartet:

sudo service mysql restart

Ich benutze Ubuntu 12.04 mit MySQL 5.5. Es hat lange gedauert, bis ich das Problem gefunden habe und ich hoffe, dass ich jemandem mit dieser Antwort helfen kann. Siehe auch http://dev.mysql.com/doc/refman/5.5/de/forcing-innodb-recovery.html

Coanda
quelle
0

In meinem Fall war das Problem das /etc/mysql/my.cnf Dateiberechtigung.

Ich habe es aus Gründen der Annehmlichkeit geändert, aber es verursachte Fehler wie

kernel: [604528.290448] type=1400 audit(1424350956.727:193): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sbin/mysqld" pid=15008 comm="apparmor_parser"

Das my.cnf Erlaubnis war 766 und ich änderte sie zu 744 und zwei von drei Fehlern gingen weg. Es gibt immer noch eine ähnliche Fehlermeldung, die jedoch den Start von mysql nicht verhinderte.

Hoffe das hilft...

Marcelo_nnn
quelle
0

In meinem Fall hatte ich eine falsche bind-addressErklärung. Ich bin gelaufen ifconfig, um die private IP-Adresse des EC2 zu ermitteln und habe sie in der /etc/mysql/my.cnfDatei aktualisiert .

Ralph
quelle
0

In meinem Fall habe ich ein Berechtigungsproblem auf / tmp gefunden. Ich habe gerade die Verzeichnisberechtigung des tmp auf 766 gesetzt und den mysql-Dienst neu gestartet. Behoben.

Fernando Luis Barbosa
quelle