InnoDB: Kesalahan: file log ./ib_logfile0 berukuran berbeda

106

Saya baru saja menambahkan baris berikut di /etc/mysql/my.cnf setelah saya mengonversikan satu basis data untuk menggunakan mesin 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

Tapi itu meningkatkan "ERROR 2013 (HY000) pada baris 2: Koneksi hilang ke server MySQL selama permintaan" kesalahan me-restart mysqld. Dan log kesalahan mysql menunjukkan berikut ini

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

Jadi saya berkomentar di baris ini

# innodb_log_file_size  = 256M

Dan berhasil me-restart mysql.

Saya bertanya-tanya apa yang ditampilkan "5242880 byte file log" pada kesalahan mysql? Ini adalah basis data pertama pada mesin InnoDB pada server ini, jadi kapan dan di mana file log itu dibuat? Dalam hal ini, bagaimana saya bisa mengaktifkan direktif innodb_log_file_size di my.cnf?

SUNTING

Saya mencoba untuk menghapus / var / lib / mysql / ib_logfile0 dan me-restart mysqld tetapi masih gagal. Sekarang menunjukkan yang berikut dalam log kesalahan.

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!

Resolusi

Ini berfungsi sekarang setelah menghapus ib_logfile0 dan ib_logfile1 di / var / lib / mysql

mendongkrak
sumber

Jawaban:

121

InnoDB sangat pilih-pilih tentang konfigurasi itu; jika ada sesuatu yang tidak beres, itu hanya akan menyerah dan pulang. Untuk membuat perubahan ke ukuran file log tanpa kehilangan data:

  1. Kembalikan perubahan konfigurasi yang Anda buat ke ukuran file log dan mulai MySQL lagi.
  2. Dalam menjalankan MySQL Anda: SET GLOBAL innodb_fast_shutdown = 0;
  3. Hentikan MySQL
  4. Ubah konfigurasi menjadi ukuran file log.
  5. Hapus kedua file log.
  6. Mulai MySQL. Ini akan mengeluh tentang kurangnya file log, tetapi itu akan membuatnya dan semuanya akan baik-baik saja.
womble
sumber
1
Hai, terima kasih atas jawaban Anda, saya mencoba metode Anda tetapi masih gagal.
jack
44
Menghapus kedua ib_logfile0 dan ib_logfile1 memecahkan masalah bagi saya.
Temnovit
1
Dan untuk saya. Terima kasih banyak, wiki kami kembali!
Stephen Kennedy
1
Karena saya memindahkan db yang baru diinstal, saya lewati langkah 1-4 dan mulai dengan 5 - dan itu bekerja :)
Limbo Peng
Terima kasih @Temnovit menghapus 2 file ini juga melakukan trik untuk saya.
bashan