Perché l'installazione di MySQL 5.6 su Ubuntu 14.04 non è riuscita?


30

Volevo dare un'occhiata a MySQL 5.6 su Ubuntu 14.04 solo per curiosità. E sulla base di questo articolo sembrava certamente che l'installazione dovesse essere semplice e diretta. Quindi ho avviato un micro server AWS EC2 con Ubuntu 14.04 (64 bit), ho effettuato l'accesso alla mia istanza originale (tramite PuTTY) e ho inviato i seguenti comandi:

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

(I primi due comandi erano mosse di disperazione, dal momento che la apt-get installsola esecuzione da sola non aveva funzionato in precedenza. Ma anche con tutti e tre i comandi, il passaggio di installazione non funzionava ancora.)

Nel punto in cui mi aspettavo, in base all'articolo di cui sopra, per vedere questo output dal comando finale:

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

Ho preso questo invece:

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)

Qualcuno può vedere cosa è andato storto?


1
cosa dice il registro? cat /var/log/mysql.err
Paté

Risposte:


22

Il problema che stai riscontrando è lo stesso di questa segnalazione di bug . Il mancato avvio sembra essere dovuto al fatto che la configurazione predefinita di MySQL 5.6 richiede più memoria di quella che può ottenere nella tua microistanza.

La soluzione dell'errore sembra essere una delle seguenti:

  • Aumenta la quantità di memoria nell'istanza EC2
  • Imposta un valore più piccolo per la max_connectionsvariabile MySQL

1
Sì, questo problema è ESATTAMENTE l'errore mostrato nella segnalazione di bug. Grazie! Finora ho provato la soluzione rapida suggerita, che era per assicurare che esistesse /etc/apparmor.d/local/usr.sbin.mysqld, e sfortunatamente ciò non è stato fatto. Quindi ora proverò un'installazione con più memoria.
WebLearner,

1
Per il prossimo tentativo, invece di utilizzare un'istanza EC2, ho creato una macchina virtuale Ubuntu 14.04 con 2 GB di memoria utilizzando Oracle VM Virtualbox e in questo ambiente l'installazione di MySQL 5.6 è andata avanti senza problemi sudo apt-get install mysql-server-5.6. Quindi sembra certamente che una microistanza EC2 non abbia memoria sufficiente per installare MySQL 5.6 usando apt-get!
WebLearner,

1
Un ulteriore commento è stato aggiunto alla segnalazione di bug che suggeriva di ridurre i max_connections di MySQL prima di installare MySQL 5.6. Ho seguito questo consiglio e ho aggiunto un file .cnf a /etc/mysql/conf.d che conteneva due righe: "[mysqld]" e "max_connections = 20". Con quel file in atto, la mia installazione di MySQL su un nuovo micro EC2 è passata attraverso. (Secondo la documentazione, il valore predefinito per max_connections è 151. L'impostazione su 20 è probabilmente estrema. Ma almeno mostra che è possibile installare MySQL.)
WebLearner

Per ulteriori informazioni: controllo /var/lib/dpkg/info/mysql-server-5.6.postinst e ho scoperto che puoi eseguire quello script per riprodurre i passaggi esatti che non riescono
shakaran,

Funziona sul mio vagabondo, ho impostato la RAM 1G e l'ho risolto. grazie. : D
Chu-Siang Lai,

24

Ho riscontrato lo stesso problema quando avvio il mio piccolo VPS. Il problema è causato dalla piccola memoria. Quindi, senza spendere soldi extra per aumentare la memoria di cui non hai bisogno, potresti semplicemente creare file di scambio per facilitare l'installazione. Sì, lo scambio è lento, ma tutto ciò che serve è completare l'installazione.

Su Ubuntu 14.04, faccio il seguente per risolvere il problema:

Crea un file di scambio 4G:

sudo fallocate -l 4G /swapfile

Cambiare l'autorizzazione a solo root potrebbe accedere e cambiare:

sudo chmod 600 /swapfile

Fallo scambiare:

sudo mkswap /swapfile

Attivare:

sudo swapon /swapfile

Ora puoi provare a installare di nuovo mysql, questa volta dovrebbe avere successo. Ricorda solo di rimuovere l'installazione precedente non riuscita prima di farlo.


Sì, risposta perfetta. Assolutamente fantastico.
Wren,

3

Ho riscontrato lo stesso problema. Sebbene avessi la memoria sufficiente da 12 GB fornita alla mia VM, ma le cose continuavano a fallire come in questione. Dopo aver passato un po 'di tempo a scoprire che apt get get mancava alcuni dei pacchetti di traduzione della configurazione e traduzione degli strumenti.

Il repository apt MySQL fornisce un modo semplice e conveniente per installare e aggiornare i prodotti MySQL con gli ultimi pacchetti software che utilizzano apt-get. Ecco cosa devi seguire:

  1. Aggiunta del repository APT MySQL Innanzitutto, aggiungere il repository apt MySQL all'elenco dei repository software del sistema. Segui questi passi:

    • Vai alla pagina di download per il repository apt MySQL all'indirizzo http://dev.mysql.com/downloads/repo/apt/ .

    • Seleziona e scarica il pacchetto di rilascio.

    • Installa il pacchetto di rilascio scaricato con il seguente comando, sostituendo nome-pacchetto-specifico versione con il nome del pacchetto scaricato (preceduto dal suo percorso, se non stai eseguendo il comando all'interno della cartella in cui si trova il pacchetto):

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

    Si noti che lo stesso pacchetto funziona su tutte le piattaforme Debian e Ubuntu supportate.

    • Durante l'installazione del pacchetto, ti verrà chiesto di scegliere le versioni del server MySQL e altri componenti (ad esempio, MySQL Workbench) che desideri installare. Se non sei sicuro di quale versione scegliere, non modificare le opzioni predefinite selezionate per te. È inoltre possibile scegliere nessuno se non si desidera installare un componente particolare. Dopo aver effettuato le scelte per tutti i componenti, scegliere OK per completare la configurazione e l'installazione del pacchetto di rilascio.

    puoi sempre cambiare le tue scelte per le versioni successive;
    vedere Selezione di una versione di rilascio principale per istruzioni.

    • Aggiorna le informazioni sul pacchetto dal repository APT MySQL con il seguente comando (questo passaggio è obbligatorio):

      sudo apt-get update
      
  2. Installazione di MySQL con APT

    • Installa MySQL con il seguente comando:

      sudo apt-get install mysql-server
      

Ciò installa il pacchetto per il server MySQL, nonché i pacchetti per il client e per i file comuni del database.

Durante l'installazione, le finestre di dialogo presentano due richieste: Fornire una password per l'utente root per l'installazione di MySQL.

  1. Avvio e arresto del server MySQL

Il server MySQL viene avviato automaticamente dopo l'installazione. - Puoi controllare lo stato del server MySQL con il seguente comando:

sudo service mysql status
  • Arrestare il server MySQL con il seguente comando:

    sudo service mysql stop
    
  • Per riavviare il server MySQL, utilizzare il seguente comando:

    sudo service mysql start
    

Ho seguito questo http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install . Questo ha funzionato senza problemi e scaricato tutti i pacchetti e installato con successo mysql 5.6.


Grazie David. Questo ha senso. Ho modificato la risposta a passaggi più dettagliati. Grazie.
Ritesh

+1 per la risposta migliorata.
David Foerster,

l'ultimo ero io ... sono davvero io? :)
rapido

2

Nel mio caso ho aggiunto

innodb_buffer_pool_size = 20M

al /etc/mysql/my.cnf


1
L'utente ha problemi a installare MySQL, non a utilizzarlo.

Grazie, ho letto la domanda) Ho avuto lo stesso problema durante l'installazione. In realtà l'installazione è terminata e mysql è già accessibile come servizio e potremmo eseguirla. Ma nell'ultima fase del processo di installazione (avvio di mysqld) rileviamo questo fastidioso errore.
maxkoryukov,


1

Ho riscontrato questo problema su Ubuntu 15.10. Per me non è stato un problema di memoria (ho 2 GB di RAM e 18 GB di swap, di cui sono stati utilizzati solo circa 300 MB in totale).

Nel mio caso, dpkgcercavo /etc/mysql/conf.d, che non esisteva (comunque esisteva /etc/mysql/mysql.conf.d!). La reinstallazione di mysql e la creazione manuale della cartella hanno /etc/mysql/conf.drisolto il mio problema.

Come è potuto succedere esattamente? Non ne ho idea. Quasi non volevo condividere la mia risposta, poiché scommetto che questa soluzione è specifica per il mio computer.

Ho risolto questo problema usando l'utilità strace, che è fantastica per questo genere di cose, se incredibilmente dettagliata.

L'ho usato così:

  • Dopo aver premuto a ctrlcmetà apt-get install mysql-server, ho dovuto correre dpkg --configure -aper completare l'installazione.

  • Ho corso strace 2>/tmp/trace dpkg --configure -a. Mi ha fatto un bel straceregistro /tmp/trace.

  • Ho guardato attraverso il registro, specialmente in fondo, dove non è riuscito.

  • Ho notato che ha tentato di accedere /etc/mysql/conf.de ho ottenuto il codice di errore ENOENT, nessun file o directory .

Per chiunque voglia provarlo, fare il strace 2>/tmp/trace (command)e grep per ENOENT. Come ho già detto, questa soluzione è probabilmente specifica per il mio computer, ma potresti provare.


0

Nel mio caso tutto quello che dovevo fare era effettua delle modifiche my.cnfe basta cancellare 2 file di log chiamato ib_logfile0e ib_logfile1, e iniziare a mysql

service mysql start

Non è necessario reinstallare mysql, basta eliminare questi 2 file di registro e riavviare il server mysql

Qui di seguito le modifiche che ho fatto in my.cnf:

max_connections     = 1000     
max_allowed_packet  = 1024M
wait_timeout        = 7200 

Aggiungi un po 'di più alla tua risposta in modo che altri possano seguirla.
George Udosen,
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.