Mesin penyimpanan tidak dikenal / tidak didukung: InnoDB | Ubuntu Ubuntu

45

Saya baru-baru ini ditingkatkan dari Ubuntu LTS sebelumnya ke Precise dan sekarang mysql menolak untuk memulai. Itu mengeluh tentang hal berikut ketika saya mencoba memulainya:

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

Dan ini ditampilkan di "/var/log/mysql/error.log":

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

Saya telah memeriksa izin pada semua direktori mysql untuk memastikannya memiliki kepemilikan dan saya juga mengganti nama previou ib_logs sehingga bisa membuat ulang mereka. Saya tidak mengerti dengan masalah ini sekarang, setelah melihat hasil google selama 2 jam.

Garrett
sumber
Kebetulan, saya menjalankan mysql dengan mengomentari entri "skip_innodb" di my.cnf. Tapi saya cukup yakin bahwa saya tidak seharusnya menyelesaikan ini dengan cara itu.
Garrett
Tolong tunjukkan semua variabel dari my.cnf yang merupakan pengaturan
innodb

Jawaban:

34

Setelah memeriksa log saya menemukan kesalahan berikut:

[ERROR] Unknown/unsupported storage engine: InnoDB

Saya menghapus file-file ini:

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

di /var/lib/mysql

Ini menyelesaikan masalah saya setelah restart.

Vinay
sumber
7
yang rmPerintah ini digunakan untuk Hapus file daripada mengubah nama mereka sejauh yang saya tahu ...
Itai Ganot
2
File-file itu berisi data aktual untuk database Anda. Anda tidak ingin menghapusnya.
Stefan Lasiewski
Tidak, ibdatafile berisi data (kecuali jika Anda memiliki file-per-tabel). File ib_logfile adalah log replay yang berisi data untuk transaksi yang mengubah database yang mungkin sedang dalam proses ketika / jika database macet. Jika Anda berhasil mematikan server, menghapus file-file log ini tidak akan merugikan Anda. Jika jatuh, maka Anda membutuhkannya. Tapi ini jawaban yang valid. Jika file my.cnf Anda mengubah opsi innodb_log_file_size dan tidak lagi cocok dengan dua file itu, Anda akan mendapatkan pesan kesalahan yang dinyatakan OP. Menghapus / memindahkan sehingga yang baru bisa dilakukan memperbaikinya.
Safado
2
Mengapa pengeditan hanya dapat dilakukan selama 5 menit adalah di luar kemampuan saya ... Saya seharusnya menyatakan bahwa ini merupakan perbaikan potensial untuk kesalahan yang disebutkan di atas. Seperti yang dinyatakan oleh OP, itu bukan perbaikan yang dia butuhkan.
Safado
1
Anda selalu dapat mengubah nama mereka, mis mv ib_logfile0 ib_logfile0.bak && mv ib_logfile1 ib_logfile1.bak.
kenorb
23

Jika Anda benar-benar membutuhkan skip-innodb(use case: low memory footprint), maka tentu saja Anda tidak perlu berkomentar. Namun, jika InnoDB adalah mesin penyimpanan default, server akan gagal memulai sampai Anda memberi tahu mesin penyimpanan mana yang akan digunakan, misalnya default-storage-engine=myisamuntuk MyISAM.

Jadi, coba ini:

$ sudo -u mysql mysqld --skip-innodb --default-storage-engine=myisam
Andy Mikhaylenko
sumber
6
Coba tambahkan "default-storage-engine = myisam" ke /etc/mysql/my.cnf di bagian [mysqld] jika Anda ingin memiliki "skip_innodb".
dijuluki
Bekerja dengan indah. Tepuk tangan!
Boann
4
Bagaimana jika Anda ingin dukungan innodb?
Nilzor
1
Mariadb pada Centos 7 ditambahkan default-storage-engine=myisampada file /etc/my.cnf di bawah [mysqld]. Itu berhasil. Thx
Damodar Bashyal
12

Jika Anda menggunakan MySQL 5.6+ dan ingin menonaktifkan InnoDB, jangan lupa " --default-tmp-storage " atau tidak akan berfungsi:

Untuk menonaktifkan InnoDB, gunakan --innodb = OFF atau --skip-innodb. Dalam hal ini, karena mesin penyimpanan default adalah InnoDB, server tidak akan memulai kecuali jika Anda juga menggunakan --default-storage-engine dan --default-tmp-storage-engine untuk mengatur default ke beberapa mesin lain untuk permanen dan Tabel SEMENTARA.

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

Anda dapat menambahkan ini ke my.cnf Anda:

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

hanya untuk memastikan itu akan berhasil.

Juan
sumber
+1, Jangan pernah perhatikan dokumen resmi. itu harus diatur default-storage-enginedan default-tmp-storage-engine, terima kasih.
Giberno
7

Periksa log kesalahan mysql Anda.

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

Jika log Anda mengatakan (seperti milik saya):

InnoDB: Menginisialisasi kumpulan buffer, ukuran = 128.0M
InnoDB: mmap (137363456 bytes) gagal; errno 12
[GALAT] InnoDB: Tidak dapat mengalokasikan memori untuk kumpulan buffer

Anda tidak memiliki cukup memori untuk menggunakan ukuran buffer standar 128M

Edit file config /etc/mysql/my.cnf dengan menambahkan sebuah baris untuk menentukan innodb_buffer_pool_size yang lebih kecil.

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

Simpan file konfigurasi, dan mulai mysql

sudo service mysql start
pengguna2219975
sumber
Tepat di sini. Tetapi bisa juga proses menggantung dari server web atau sesuatu yang memakan RAM, periksa juga.
sja
0

Coba 2 hal lagi. 1. Turunkan ukuran kolam penyangga innodb. 2. Edit skrip awal mysql dan tambahkan opsi --innodb.

Saya bertanya-tanya juga apakah paket Anda buggy. Bisakah Anda mencoba versi minor yang berbeda?

Juga, saya menganggap server mysql Anda juga ditingkatkan? Mungkin versi itu rusak? Precise belum final.

johnshen64
sumber
Sudah melakukan itu, tidak berpengaruh.
Garrett
Maaf, diedit dengan beberapa hal untuk dicoba, lebih mirip paket yang buruk. Cobalah menggunakan versi mysql.com atau percona yang biasanya lebih stabil.
johnshen64
Pastikan juga paket lama benar-benar dibersihkan, ketika yang baru diinstal.
johnshen64
Apakah membersihkan paket sepenuhnya akan mengakibatkan hilangnya informasi basis data?
Garrett
Seharusnya tidak, tetapi agar aman Anda harus selalu membuat cadangan DBS Anda.
johnshen64
0

Saya mendapatkan kesalahan ini ketika saya menghapus lokasi yang saya gunakan untuk tmpdir. Jika Anda baru saja mengubah Anda tmpdir, Anda mungkin ingin memeriksa bahwa itu adalah lokasi yang valid dan dapat ditulis.

Jeff
sumber