Vraag InnoDB: Fout: logbestand ./ib_logfile0 heeft een andere grootte


Ik heb zojuist de volgende regels toegevoegd in /etc/mysql/my.cnf nadat ik een database heb geconverteerd om de InnoDB-engine te gebruiken.

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

Maar het verhoogt "ERROR 2013 (HY000) op regel 2: Lost connection to MySQL server during query" error restarting mysqld. En mysql error log toont het volgende

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

Dus heb ik deze regel becommentarieerd

# innodb_log_file_size  = 256M

En het herstelde mysql met succes.

Ik vraag me af wat is de "5242880 bytes van het logbestand" toonde in mysql fout? Het is de eerste database op de InnoDB-engine op deze server, dus wanneer en waar wordt dat logboekbestand gemaakt? In dit geval, hoe kan ik de opdracht innodb_log_file_size in my.cnf inschakelen?

BEWERK

Ik heb geprobeerd / var / lib / mysql / ib_logfile0 te verwijderen en mysqld opnieuw op te starten, maar het is nog steeds mislukt. Het toont nu het volgende in foutenlogboek.

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!

Resolutie

Het werkt nu na het verwijderen van zowel ib_logfile0 als ib_logfile1 in / var / lib / mysql


101
2018-01-19 03:02


oorsprong




antwoorden:


InnoDB is waanzinnig kieskeurig over zijn configuratie; als iets niet klopt, geeft het gewoon op en gaat naar huis. Om de logbestandsgrootte te wijzigen zonder gegevensverlies:

  1. Herstel alle configuratiewijzigingen die u in de logbestandsgrootte hebt aangebracht en start MySQL opnieuw.
  2. In je lopende MySQL: SET GLOBAL innodb_fast_shutdown= 0;
  3. Stop MySQL
  4. Wijzig de configuratie in de grootte van het logbestand.
  5. Verwijder beide logbestanden.
  6. Start MySQL. Het zal klagen over het gebrek aan logbestanden, maar het zal ze aanmaken en alles zal goed zijn.

114
2018-01-19 03:06



Hallo, bedankt voor je antwoord, ik heb je methode geprobeerd maar het is mislukt. - jack
Het verwijderen van zowel ib_logfile0 als ib_logfile1 loste het probleem voor mij op. - Temnovit
En voor mij. Heel erg bedankt, we hebben onze wiki terug! - Stephen Kennedy
Omdat ik een nieuw geïnstalleerde db verplaats, sla ik stap 1-4 over en begin ik met 5 - en het werkt :) - Limbo Peng
Bedankt @Temnovit om deze 2 bestanden te verwijderen heeft ook de truc voor mij gedaan. - bashan