InnoDB: errore: il file di registro ./ib_logfile0 ha dimensioni diverse


106

Ho appena aggiunto le seguenti righe in /etc/mysql/my.cnf dopo aver convertito un database per utilizzare il motore InnoDB.

innodb_buffer_pool_size = 2560M
innodb_log_file_size    = 256M
innodb_log_buffer_size  = 8M
innodb_flush_log_at_trx_commit  = 2
innodb_thread_concurrency   = 16
innodb_flush_method = O_DIRECT

Ma genera "ERRORE 2013 (HY000) alla riga 2: errore di connessione al server MySQL durante la query" durante il riavvio di mysqld. E il registro degli errori mysql mostra quanto segue

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
100118 20:52:52 [ERROR] Plugin 'InnoDB' init function returned error.
100118 20:52:52 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
100118 20:52:52 [ERROR] Unknown/unsupported table type: InnoDB
100118 20:52:52 [ERROR] Aborting

Quindi ho commentato questa riga

# innodb_log_file_size  = 256M

E ha riavviato mysql con successo.

Mi chiedo che cosa hanno mostrato i "5242880 byte del file di registro" nell'errore mysql? È il primo database sul motore InnoDB su questo server, quindi quando e dove viene creato quel file di registro? In questo caso, come posso abilitare la direttiva innodb_log_file_size in my.cnf?

MODIFICARE

Ho provato a eliminare / var / lib / mysql / ib_logfile0 e a riavviare mysqld ma non è ancora riuscito. Ora mostra quanto segue nel registro degli errori.

100118 21:27:11  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 256 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200
InnoDB: Error: log file ./ib_logfile1 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!

Risoluzione

Funziona ora dopo aver eliminato sia ib_logfile0 che ib_logfile1 in / var / lib / mysql

Risposte:


121

InnoDB è follemente esigente riguardo alla sua configurazione; se qualcosa non va, si arrenderà e tornerà a casa. Per modificare la dimensione del file di registro senza perdita di dati:

  1. Ripristina tutte le modifiche di configurazione che hai apportato alla dimensione del file di registro e riavvia MySQL.
  2. Nel tuo MySQL in esecuzione: SET GLOBAL innodb_fast_shutdown = 0;
  3. Ferma MySQL
  4. Apporta la modifica della configurazione alle dimensioni del file di registro.
  5. Elimina entrambi i file di registro.
  6. Avvia MySQL. Si lamenterà della mancanza di file di registro, ma li creerà e tutto andrà bene.

1
Ciao, grazie per la tua risposta, ho provato il tuo metodo ma non ci sono riuscito.
Jack

44
L'eliminazione di ib_logfile0 e ib_logfile1 ha risolto il problema per me.
Temnovit,

1
E per me. Grazie mille, abbiamo di nuovo il nostro wiki!
Stephen Kennedy,

1
Dal momento che sto riposizionando un db appena installato, salto il passaggio 1-4 e inizio con 5 - e funziona :)
Limbo Peng,

Grazie @Temnovit l'eliminazione di questi 2 file ha fatto anche il trucco per me.
bashan,
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.