Soru InnoDB: Hata: log dosyası ./ib_logfile0 farklı boyuttadır


InnoDB motorunu kullanmak için bir veritabanını dönüştürdüğümde /etc/mysql/my.cnf dosyasında ş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 "hata" mysqld yeniden başlatırken "sorgu sırasında" HATA 2013 (HY000) satır 2: MySQL sunucusuna bağlantı Kayboldu ". Ve mysql hata kaydı 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 çizgiyi yorumladım

# innodb_log_file_size  = 256M

Ve mysql başarıyla yeniden başlatıldı.

"5242880 bayt günlük dosyası" neyin mysql hatası gösterdiğini merak ediyorum? Bu sunucuda InnoDB motorunun ilk veritabanı bu yüzden bu günlük dosyası nerede ve ne zaman oluşturulur? Bu durumda my.cnf dosyasında innodb_log_file_size yönergesini nasıl etkinleştirebilirim?

DÜZENLE

/ Var / lib / mysql / ib_logfile0 dosyasını silmeye ve mysqld'yi yeniden başlatmaya çalıştım ancak 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

Şu anda / var / lib / mysql içinde ib_logfile0 ve ib_logfile1 öğelerini sildikten sonra çalışır


101
2018-01-19 03:02


Menşei




Cevaplar:


InnoDB, yapılandırması hakkında delice seçici; Bir şey doğru değilse, o sadece pes edip eve gider. Veri kaybı olmadan günlük dosya boyutunda değişiklik yapmak için:

  1. Günlük dosyası boyutuna yaptığınız tüm yapılandırma değişikliklerini geri alın ve MySQL'i tekrar başlatın.
  2. Senin çalışan MySQL: SET GLOBAL innodb_fast_shutdown= 0;
  3. MySQL'i durdur
  4. Yapılandırma değişikliklerini günlük dosya boyutuna getirin.
  5. Her iki günlük dosyasını da silin.
  6. MySQL'i başlatın. Günlük dosyalarının eksikliğinden şikayet edecek, ancak bunları yaratacak ve her şey iyi olacak.

114
2018-01-19 03:06



Merhaba, cevabınız için teşekkürler, yönteminizi denedim ama yine de başarısız oldum. - jack
Hem ib_logfile0 hem de ib_logfile1'in silinmesi sorunu benim için çözdü. - Temnovit
Ve benim için. Çok teşekkür ederim, bizim wiki geri döndü! - Stephen Kennedy
Yeni yüklenen bir db'yi yeniden konumlandırdığımdan, adım 1-4'ü atlayıp 5 ile başlayacağım - ve işe yarıyor :) - Limbo Peng
Teşekkürler @Temnovit bu 2 dosyaları silme de benim için hile yaptı. - bashan