Bilinmeyen / desteklenmeyen depolama motoru: InnoDB | MySQL Ubuntu


45

Geçenlerde önceki LTS Ubuntu’dan Precise’a yükselttim ve şimdi mysql başlamayı reddediyor. Başlatmaya çalıştığımda aşağıdakilerden şikayet ediyor:

╰$ sudo service mysql restart
stop: Unknown instance:
start: Job failed to start

Bu da "/var/log/mysql/error.log" ifadesinde gösterilmektedir:

120415 23:01:09 [Note] Plugin 'InnoDB' is disabled.
120415 23:01:09 [Note] Plugin 'FEDERATED' is disabled.
120415 23:01:09 [ERROR] Unknown/unsupported storage engine: InnoDB
120415 23:01:09 [ERROR] Aborting

120415 23:01:09 [Note] /usr/sbin/mysqld: Shutdown complete

Sahip olmadığından emin olmak için tüm mysql dizinleri üzerindeki izinleri kontrol ettim ve previou ib_logs isimlerini değiştirerek yeniden düzenlemelerini sağladım. 2 saat boyunca google sonuçlarına baktıktan sonra şu anda bu sorunun neresinde olduğumu göremiyorum.


Bu arada, my.cnf'deki "skip_innodb" girişini yorumlayarak mysql komutunu çalıştırdım. Ama bu şekilde çözmemem gerektiğinden kesinlikle eminim.
Garrett

İnnodb ayarlardır my.cnf tüm değişkenler göstermek Lütfen
RolandoMySQLDBA

Yanıtlar:


34

Günlükleri kontrol ettikten sonra aşağıdaki hatayı buldum:

[ERROR] Unknown/unsupported storage engine: InnoDB

Bu dosyaları kaldırdım:

rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile1 

en /var/lib/mysql

Bu, yeniden başlattıktan sonra sorunumu çözdü.


7
rmbildiğim kadar komut kadarıyla dosyaları ziyade yeniden adlandırma bunları çıkarmak için kullanılır ...
Itai Ganot

2
Bu dosyalar veritabanınız için gerçek verileri içerir . Onları silmek istemezsin.
Stefan Lasiewski

Hayır, ibdatadosya verileri içerir (tablo başına dosya yoksa). İb_logfile dosyaları, veritabanı düştüğünde / işlendiğinde işlemde olabilecek veritabanı değiştirme işlemlerinin verilerini içeren tekrar günlükleridir. Sunucuyu başarıyla kapatmayı başarabildiyseniz, bu günlük dosyalarını silmek size zarar vermez. Eğer çöktü, o zaman onlara ihtiyacın var. Ancak bu geçerli bir cevaptır. My.cnf dosyanız innodb_log_file_size seçeneğini değiştirirse ve artık bu iki dosyayla eşleşmezse, OP'nin belirttiği hata mesajını alırsınız. Silme / taşıma, böylece yenileri yapılabilir düzeltmeler.
Safado

2
Düzenlemeler neden sadece 5 dakika boyunca yapılabiliyorsa benden öte ... Yukarıda belirtilen hata için potansiyel bir düzeltme olduğunu söylemeliydim . OP tarafından belirtildiği gibi ihtiyacı olan düzeltme değildi.
Safado

1
Bunları her zaman yeniden adlandırabilirsiniz, örn mv ib_logfile0 ib_logfile0.bak && mv ib_logfile1 ib_logfile1.bak.
kenorb

22

Eğer gerçekten ihtiyacınız varsa skip-innodb(kullanım alanı: düşük bellek alanı), o zaman tabii ki yorum yapmak zorunda değilsiniz. Ancak, InnoDB varsayılan depolama motoru ise, sunucu yerine hangi depolama motorunu kullanacağını söyleyene kadar başlatmayacaktır, örneğin default-storage-engine=myisamMyISAM için.

Öyleyse şunu dene:

$ sudo -u mysql mysqld --skip-innodb --default-storage-engine=myisam

5
Eğer "skip_innodb" almak istiyorsanız, "default-storage-engine = myisam" 'ı [mysqld] bölümündeki /etc/mysql/my.cnf dosyasına eklemeyi deneyin.
pincoded

Güzel çalışıyor. Şerefe!
Boann

4
Ya innodb desteği istiyorsan?
Nilzor

Centos 7'deki Mariadb, /etc/my.cnf default-storage-engine=myisamdosyasına eklendi [mysqld]. Hile yaptı. Thx
Damodar Bashyal,

12

MySQL 5.6+ kullanıyorsanız ve InnoDB'yi devre dışı bırakmak istiyorsanız, " --default-tmp-storage " öğesini unutmayın , yoksa işe yaramaz:

InnoDB'yi devre dışı bırakmak için --innodb = OFF veya --skip-innodb kullanın. Bu durumda, varsayılan depolama motoru InnoDB olduğu için, --default-storage-engine ve --default-tmp-storage-engine kullanmazsanız, varsayılanı kalıcı olarak başka bir motora ayarlamak için sunucu da kullanmazsınız. TEMPORARY tablolar.

http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#option_mysqld_ignore-builtin-innodb

Bunu my.cnf'inize ekleyebilirsiniz:

[mysqld] 
innodb=OFF 
ignore-builtin-innodb 
skip-innodb
default-storage-engine=myisam 
default-tmp-storage-engine=myisam

Sadece çalışacağından emin olmak için.


+1, Asla resmi belgeye dikkat etmeyin. ayarlaması gerekir default-storage-engineve default-tmp-storage-engineteşekkürler.
Giberno

7

MySQL hata günlüğünüzü kontrol edin.

tail -100 /var/log/mysql/error.log

Eğer kayıt defteriniz diyorsa (benimki gibi):

InnoDB: Tampon havuzunun başlatılması, boyut = 128.0M
InnoDB: mmap (137363456 bayt) başarısız oldu; hata 12
[ERROR] InnoDB: Arabellek havuzu için bellek ayrılamıyor

Varsayılan 128M arabellek boyutunu kullanmak için yeterli belleğiniz yok

/Etc/mysql/my.cnf dosyasını daha küçük bir innodb_buffer_pool_size belirtmek için bir satır ekleyerek config dosyasını düzenleyin.

# make the buffer pool smaller than 128M since we only have 1 GB of total RAM
innodb_buffer_pool_size = 16M

Config dosyasını kaydedin ve mysql'i başlatın

sudo service mysql start

Burada nokta var. Ancak, web sunucusu işlemlerinin askıda kalması veya RAM'i yiyen bir şey de olabilir.
sjas,

0

2 şey daha dene. 1. innodb arabellek havuzu boyutunu azaltın. 2. MySQL başlangıç ​​betiğini düzenleyin ve --innodb seçeneğini ekleyin.

Acaba paketin deşarj mı? Farklı bir küçük versiyonu deneyebilir misiniz?

Ayrıca, mysql sunucunuzun da yükseltildiğini farz ediyorum? Belki bu sürüm bozuktur? Kesin henüz kesin değil.


Zaten yaptım, etkisiz.
Garrett,

Üzgünüz, denemek için bazı şeyler ile düzenlenmiş, daha çok kötü bir paket gibi. Genellikle daha kararlı olan mysql.com sürümünü veya percona'yı kullanmayı deneyin.
johnshen64

Ayrıca yeni kurulum yapıldığında eski paketin tamamen temizlendiğinden emin olun.
johnshen64

Paketin tamamen temizlenmesi, veritabanı bilgilerinin kaybolmasına neden olur mu?
Garrett

Olmamalı, fakat güvende olmak için her zaman DBS'nizi yedeklemelisiniz.
johnshen64

0

Kullandığım konumu silerken bu hatayı aldım tmpdir. Son zamanlarda sizi değiştirdiyseniz tmpdir, geçerli ve yazılabilir bir yer olup olmadığını kontrol etmek isteyebilirsiniz.

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.