Właśnie dodałem następujące wiersze do pliku /etc/mysql/my.cnf po przekonwertowaniu jednej bazy danych na silnik 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
Ale powoduje błąd „Błąd 2013 (HY000) w wierszu 2: Utracono połączenie z serwerem MySQL podczas zapytania” podczas ponownego uruchamiania mysqld. A dziennik błędów mysql pokazuje, co następuje
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
Więc skomentowałem ten wiersz
# innodb_log_file_size = 256M
I pomyślnie zrestartował mysql.
Zastanawiam się, co pokazał „5242880 bajtów pliku dziennika” w błędzie mysql? Jest to pierwsza baza danych silnika InnoDB na tym serwerze, więc kiedy i gdzie jest tworzony ten plik dziennika? W takim przypadku, jak mogę włączyć dyrektywę innodb_log_file_sile w pliku my.cnf?
EDYTOWAĆ
Próbowałem usunąć / var / lib / mysql / ib_logfile0 i zrestartować mysqld, ale nadal nie udało się. Teraz wyświetla w dzienniku błędów następujące informacje.
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!
Rozkład
Działa teraz po usunięciu zarówno pliku ib_logfile0, jak i ib_logfile1 w katalogu / var / lib / mysql