Impossibile avviare mysql - mysql respawning troppo veloce, interrotto


33

Oggi ho fatto una nuova installazione di Ubuntu 12.04 e ho impostato il mio ambiente di sviluppo locale. Ho installato mysql e modificato /etc/mysql/my.cnfper ottimizzare InnoDB ma quando provo a riavviare mysql, fallisce con un errore:

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

Il syslog rivela che c'è un problema con lo script init:

> 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

Qualche idea?


Cose che ho già provato:

Ho cercato su Google e ho trovato un bug di Ubuntu con apparmor ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/970366 ), ho cambiato apparmor dalla modalità di applicazione per protestare:

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

ma non ha aiutato. Non riesco ancora ad avviare mysql.

Ho anche pensato che il problema potesse essere dovuto al fatto che i file di log di InnoDB avevano dimensioni diverse rispetto a quanto previsto da mysql. Ho rimosso i file di log InnoDB prima di riavviare utilizzando: sudo mv /var/lib/mysql/ib_logfile* /tmp. Nessuna fortuna però.

Soluzione alternativa: ho reinstallato 12.04, assicurandomi di non toccarlo /etc/mysql/my.cnfin alcun modo. Mysql sta funzionando così posso andare avanti con quello che devo fare. Ma dovrò modificarlo ad un certo punto - Spero di aver trovato una soluzione, o questa domanda avrà avuto risposta da quel punto ...

Risposte:


29

Alla fine ho capito il problema. Fondamentalmente, la definizione di alcuni parametri è stata rimossa dalla versione precedente di mysql ed è stata sostituita con nomi diversi. Per risolvere, in /etc/mysql/my.cnf, sostituire:

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

con:

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

Questo è il rapporto sui bug del launchpad associato: https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/958120 .

O esegui facilmente:

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

Ma assicurati che non sia installata alcuna vecchia versione di mysql, se fosse rimossa:

# Miraz quick mysql package check
dpkg -l *mysql*

Non ho avuto questo problema, ma ho dpkg-reconfigure mysql-server-5.5risolto tutto ciò che non andava nella mia configurazione.
David Purdue,

nel mio caso, il problema si è rivelato essere un nome di proprietà errato in /etc/mysql/my.cnf.... Da questo blog: dangtrinh.com/2014/05/… , esegui mysqld -v. Ho provato a cercare su google il codice di uscita mysql 7, senza successo. La mia ipotesi è che il codice di uscita 7 abbia a che fare con gli errori nell'analisi del file di configurazione di mysql.
MaasSql

Ho avuto lo stesso problema, ma ho trovato difficile rintracciarlo perché la mia configurazione errata era in /etc/mysql/conf.d/* e anche perché c'erano vecchi registri chiamati /var/log/mysql.* che mi hanno fatto notare registri attivi / var / log / mysql / *.
Dave Burt,

1
nota a margine: utf8_unicode_ciè meglio. Ora ancheutf8mb4_unicode_ci
Akshay

10

Innodb ha un'impostazione predefinita (innodb_buffer_pool_size) che è impostata su 128M - questo potrebbe essere troppo grande per il tuo server (specialmente se stai usando una piccola AMI Amazon EC2 - che ero) La soluzione che ha funzionato per me è stata l'aggiunta di quanto segue linea a /etc/mysql/my.cnf

innodb_buffer_pool_size = 16M

Ho scritto su questa correzione qui http://www.mlynn.org/2012/07/mysql-5-5-on-ubuntu-12-04-job-failed-to-start


Si scopre che la mia macchina virtuale era semplicemente a corto di memoria. L'impostazione innodb_buffer_pool_sizeinferiore rappresentava una parte della soluzione, ma attenzione che potresti non avere più memoria.
Thaddeusmt,

10

Ho avuto un problema simile. Era frustrante perché non riuscivo a vedere alcun registro degli errori che indicava quale fosse il problema.

Nel mio caso, il valore che avevo impostato per innodb_buffer_pool_size era troppo grande per la memoria del server.

L'ho scoperto eseguendo mysqld direttamente come utente mysql.

# su mysql
# mysqld

In questo modo si vede effettivamente l'output dell'errore.


2
Questo è un ottimo consiglio, ho avuto difficoltà a ottenere alcune informazioni di debug significative da mysql. Grazie!
entusiasta analista

3

Ho anche avuto un problema simile. Gli articoli seguenti dicono che sono stati rimossi dal server mysql 5.5.
Se li hai nel tuo my.cnf, non si avvierà. Commentali con #.
(Informazioni derivate da: http://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html )

Le opzioni interessate sono mostrate in questo elenco:

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

Perfezionare! Esattamente quello che mi stava buttando via. Grazie.
Jim W.

3

Sembra ridursi a errori nella configurazione di MySQL, che si trova in /etc/mysql/my.cnfe file in /etc/mysql/conf.d/.

Nel mio caso era un bind-addressvalore errato , perché l'indirizzo IP della mia macchina era cambiato e MySQL non poteva più legarsi. Sentiti libero di saperne di più su questo in questo articolo del blog .


2

Un buon modo per eseguire il debug degli errori nel processo post-avvio ( /etc/init/mysql.conf) è controllare i registri di avvio :

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

Questo mi ha dato un errore socket:

errore: "Impossibile connettersi al server MySQL locale tramite socket

Nel mio caso è stato causato da un'impostazione mancante usernel [mysqld]gruppo inmy.cnf


1

Quando ho riscontrato un errore MySQL simile ("Avvio processo non riuscito") dopo l'aggiornamento dall'11.10 al 12.04, commentare # 27 su https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1/+bug/ 573318? Commenti = tutto ha funzionato perfettamente per me. Citazione:

Il problema per me era che il file /etc/apparmor.d/local/usr.sbin.mysqld non esisteva dopo l'aggiornamento. Ho copiato manualmente uno da uno di quelli vuoti (cioè aveva solo un commento di intestazione) e poi tutto andava bene.


1

Per me la soluzione era rimuovere la linea ...

set-variable = max_connections=200

... che è la sintassi di MySQL 3.x e deve essere modificata

max_connections=200

1

Ho avuto lo stesso problema. Si è rivelato essere le repliche di master slave mysql my.cnf. Controlla il tuo/var/log/mysql/error.log .

Spero sia un piccolo aiuto. Controlla le impostazioni mysql prima di perdere due ore con apparmor che funziona bene.


1

Ho avuto gli stessi problemi, per me è bind-addressstato impostato in modo errato nel mio /etc/mysql/my.cnffile. Quindi sembra che tutto ciò che non è giusto in my.cnf possa causare questo problema. Non ho trovato nulla nei log che indicava questo problema.


1

Il mio problema era lo 0% di spazio libero! Doppio controllo :-)


1

Controlla le /tmpautorizzazioni. Ho avuto questo problema, dopo molte volte google e riavvia, l'ho scoperto/tmp autorizzazioni erano 755.

Lo cambio in 777 e mysqlinizio bene.


questa cosa nell'antichità ma questo era il mio problema ... non so come sia cambiata ...
TheHidden

in alcuni casi, modificando il file system o montando la /tmpnuova partizione.
shgnInc,

1

Dopo un aggiornamento automatico a mysqld-5.5.53 ubuntu 14.04.1, mysql non si avviava. Queste righe sono comparse nel mio syslog:

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

Il problema è stato risolto creando questa directory:

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

0

Ho appena aggiornato la versione di MySQL e AppArmor come suggerito qui per risolvere questo problema su Ubuntu 12.04 in esecuzione su istanza Amazon ec2. Ricevo ancora l'errore qualche volta, ma MySQL si riavvia automaticamente.


1
Benvenuti in Ask Ubuntu! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Ringtail

0

Ho avuto gli stessi messaggi di errore, ma la causa era diversa. Le mie tabelle InnoDB erano corrotte, poiché l'intero file system è entrato in modalità di sola lettura. Ho corretto la corruzione aggiungendo la seguente riga in /etc/mysql/my.cf

innodb_force_recovery = 1

Ho avviato MySQL:

sudo service mysql start

MySQL ha iniziato e ho scaricato / esportato tutte le tabelle. Ho modificato innodb_force_recovery su 0 (= impostazione predefinita) e ho riavviato MySQL:

sudo service mysql restart

Sto usando Ubuntu 12.04 con MySQL 5.5. Ci è voluto molto tempo prima che trovassi il problema e spero di poter aiutare qualcuno con questa risposta. Vedi anche http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html


0

Nel mio caso il problema era l' /etc/mysql/my.cnfautorizzazione del file.

L'ho cambiato per cenvenience ma ha causato errori come

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"

Il my.cnf autorizzazione era 766 e l'ho cambiata in 744 e due dei tre errori sono scomparsi. C'è ancora un messaggio di errore simile ma non ha impedito l'avvio di mysql.

Spero che sia di aiuto...


0

Nel mio caso, avevo una bind-addressdichiarazione sbagliata . Ho corso ifconfigper scoprire l'indirizzo IP privato dell'EC2 e l'ho aggiornato nel /etc/mysql/my.cnffile.


0

Nel mio caso ho trovato un problema di autorizzazione su / tmp. Ho appena impostato il permesso della directory di tmp su 766 e riavviato il servizio mysql. Risolto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.