InnoDB: Hata: günlük dosyası ./ib_logfile0 farklı boyutta


106

InnoDB motorunu kullanmak için bir veritabanını dönüştürdükten sonra /etc/mysql/my.cnf dosyasına şu satırları ekledim.

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

Ancak, "2. satırdaki HATA 2013 (HY000): sorgu sırasında MySQL sunucusuyla bağlantım kesildi" hatası mysqld yeniden başlatılırken hata oluştu. Ve mysql hata günlüğü aşağıdakileri gösterir

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

Bu yüzden bu satırı yorumladım.

# innodb_log_file_size  = 256M

Ve başarıyla mysql yeniden başlattı.

Mysql hata "5242880 bayt günlük dosyasının ne olduğunu" merak ediyorum? Bu sunucuda InnoDB motorundaki ilk veri tabanı bu yüzden günlük dosyası ne zaman ve nerede yaratıldı? Bu durumda, my.cnf'de innodb_log_file_size yönergesini nasıl etkinleştirebilirim?

DÜZENLE

/ Var / lib / mysql / ib_logfile0 dosyasını silmeye çalıştım ve mysqld komutunu yeniden başlattım ama yine de başarısız oldu. Şimdi hata günlüğünde aşağıdakileri gösterir.

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!

çözüm

Hem ib_logfile0 hem de ib_logfile1 / var / lib / mysql içinde silindikten sonra şimdi çalışıyor

Yanıtlar:


121

InnoDB yapılandırma hakkında delice seçici; eğer bir şey doğru değilse, pes edecek ve eve gidecektir. Veri dosyası olmadan günlük dosyasının boyutunda değişiklik yapmak için:

  1. Günlük dosyası boyutunda yaptığınız tüm yapılandırma değişikliklerini geri alın ve MySQL'i tekrar başlatın.
  2. Çalışan MySQLinizde : SET GLOBAL innodb_fast_shutdown = 0;
  3. MySQL'i durdur
  4. Yapılandırma değişikliklerini günlük dosyasının boyutuna getirin.
  5. Her iki günlük dosyasını da silin.
  6. MySQL'i başlatın. Günlük dosyalarının olmayışından şikayet edecek, ancak onları yaratacak ve her şey yoluna girecek.

1
Merhaba, cevabınız için teşekkürler, yönteminizi denedim ama yine de başarısız oldum.
jack

44
Hem ib_logfile0 hem de ib_logfile1 silindiğinde benim için sorun çözüldü.
Temnovit

1
Ve benim için. Çok teşekkür ederim, wiki'miz geri döndü!
Stephen Kennedy

1
Yeni kurulan bir db'nin yerini değiştirdiğim için 1-4. Adımı atlıyorum ve 5 ile başladım - ve işe yarıyor :)
Limbo Peng

Thanks @Temnovit bu 2 dosyayı silmek de benim için hile yaptı.
bashan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.