Je viens d'ajouter les lignes suivantes dans /etc/mysql/my.cnf après avoir converti une base de données pour utiliser le moteur 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
Mais il affiche "ERREUR 2013 (HY000) à la ligne 2 : Lost connection to MySQL server during query" en redémarrant mysqld. Et le journal d'erreurs mysql montre ce qui suit
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
J'ai donc commenté cette ligne
# innodb_log_file_size = 256M
Et il a redémarré mysql avec succès.
Je me demande ce qu'est le "5242880 bytes of log file" montré dans l'erreur mysql ? C'est la première base de données sur le moteur InnoDB sur ce serveur, alors quand et où ce fichier journal a-t-il été créé ? Dans ce cas, comment puis-je activer la directive innodb_log_file_size dans my.cnf ?
EDIT
J'ai essayé de supprimer /var/lib/mysql/ib_logfile0 et de redémarrer mysqld mais cela a toujours échoué. Il affiche maintenant ce qui suit dans le journal des erreurs.
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!
Résolution
Il fonctionne maintenant après avoir supprimé ib_logfile0 et ib_logfile1 dans /var/lib/mysql.