KATA PENGANTAR: Kedengarannya buruk, tetapi pastikan untuk membaca semua yang ada di jawaban ini sebelum bertindak. Anda tidak dapat merusak hal-hal yang lebih buruk dengan meluangkan waktu Anda. Baca setiap langkah &semoga ini cukup jelas untuk Anda ikuti &dapatkan server database MySQL Anda di MAMP Pro aktif dan berjalan kembali.
Jadi, sepertinya database InnoDB Anda mogok. Bukan aplikasi itu sendiri. Kuncinya ada di sini di log:
140527 15:06:58 InnoDB: highest supported file format is Barracuda.
InnoDB: Log scan progressed past the checkpoint lsn 791075520
140527 15:06:58 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 791076717
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 8402.
InnoDB: You may have to recover from a backup.
Dan sepertinya Anda menggunakan MAMP PRO di sini:
/Library/Application Support/appsolute/MAMP PRO/db/mysql
Jadi pertanyaannya adalah, apakah Anda memiliki cadangan database MAMP Pro? Baik melalui mysqldump
atau sesuatu yang lain? Apakah Anda memiliki database InnoDB lain di instalasi MAMP Anda?
Juga, Anda mengatakan bahwa Anda dapat menjalankan mysqldump
, tapi itu benar-benar tidak mungkin database crash. Jadi saya berasumsi ketika Anda menjalankan mysqldump
itu adalah instalasi MySQL yang lain dan terpisah di sistem Anda. Binari MySQL seperti mysqldump
di MAMP atau MAMP Pro tidak sama dengan mysqldump
di seluruh sistem . Mereka adalah dua instalasi yang 100% berbeda. Anda dapat memeriksa mysqldump
sedang digunakan dengan mengetikkan perintah ini:
which mysqldump
Untuk melihat jalur lengkap dari apa yang Anda yakini sedang Anda gunakan. Instalasi MAMP mysqldump
—dan binari terkait lainnya—terletak di sini:
/Applications/MAMP/Library/bin/
Dan untuk menjalankannya secara langsung tanpa mengubah $PATH
value (hal lainnya) adalah menjalankannya seperti ini:
/Applications/MAMP/Library/bin/mysqldump
HARAP BACA DENGAN SEKSAMA: Harap perhatikan saran yang saya berikan kepada Anda di bawah ini adalah saya menyajikan setiap cara saya akan menghadapi situasi seperti ini. Jika database InnoDB tidak penting, lakukan saja saran pertama saya untuk membuang file DB khusus InnoDB. Jika Anda memiliki mysqldump
cadangan, lakukan hal yang sama tetapi pulihkan mysqldump
cadangan.
Juga, InnoDB bukan mesin penyimpanan default. Anda harus keluar dari cara Anda untuk mengatur itu. Standarnya adalah MyISAM. Setiap DB baru yang dibuat di MySQL akan menjadi MyISAM. Jadi ini akan membantu Anda. Anda perlu berpikir keras untuk mencari tahu database mana yang memiliki mesin penyimpanan InnoDB. Jika Anda mengatakan Anda memiliki 25 tetapi hanya 1 yang memiliki InnoDB, solusi mudah. Tetapi juga jika Anda memiliki 25 database, Anda harus membiasakan membuat mysqldump
biasa cadangan. Jika Anda memiliki cadangan, ini akan memusingkan, tetapi ini adalah hal yang mudah untuk dipecahkan.
SATU OPSI:Hapus barang-barang InnoDB yang rusak &pulihkan dari mysqldump
cadangan.
Hal pertama yang akan saya lakukan jika saya jadi Anda adalah membuat cadangan mysql
direktori di /Library/Application Support/appsolute/MAMP PRO/db/
sehingga Anda setidaknya dapat memiliki cadangan file yang rusak untuk berjaga-jaga.
Kemudian saya akan menghapus file-file berikut:
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile0
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ib_logfile1
/Library/Application Support/appsolute/MAMP PRO/db/mysql/ibdata1
Itu adalah file khusus InnoDB. Hapus dan coba mulai lagi MAMP. Itu harus muncul. Tetapi basis data InnoDB apa pun di MAMP akan berada dalam status "zombie". Anda harus menghapus database tersebut &membuat ulang dari cadangan. Atau dari awal jika Anda bisa.
OPSI LAIN:Cobalah untuk mengaktifkan &menjalankan kembali server MySQL dengan innodb_force_recovery
.
Sekarang jika Anda ingin memulihkan DB itu, Anda dapat menjalankan upaya untuk mengatur innodb_force_recovery
seperti yang dijelaskan di sini.
Untuk MAMP Pro, tampaknya Anda dapat mengedit file konfigurasi MySQL Anda sesuai petunjuk berikut:
- Mulai MAMP Pro.
- Hentikan server MAMP Pro jika sedang berjalan.
- Pilih File -> Edit Template -> MySQL my.cnf
- Sebuah jendela editor muncul.
- Jika muncul pesan peringatan konfirmasi dengan OK.
- Temukan bagian "[mysqld]"
- Di bawah baris terakhir bagian ini tambahkan baris ini:
innodb_force_recovery = 1
Dan seperti yang dijelaskan dalam dokumentasi MySQL
, ini hanya untuk mengaktifkan dan menjalankan database sehingga Anda dapat membuat cadangan melalui mysqldump
:
Sekarang ada sekitar 6 nilai berbeda untuk innodb_force_recovery
tetapi Anda harus benar-benar hanya mencoba dengan 1
untuk sekarang. Jika Anda ingin mencoba masing-masing dari 6, berikut adalah rinciannya:
Jika Anda mengaktifkan dan menjalankan database dan kemudian dapat melakukan mysqldump
selamat! Anda berada di tempat yang jelas! Langkah terbaik berikutnya adalah
- Hentikan server database MySQL
- Hapus
innodb_force_recovery
pilihan dari konfigurasi MySQL sehingga server database dapat beroperasi secara normal. - Mulai ulang server database MySQL.
- Hapus database MySQL yang rusak dari server (Jangan hapus file dump! Itu adalah cadangan Anda!)
- Buat database baru yang ingin Anda pulihkan.
- Impor
mysqldump
backup ke database baru.
Dan Anda harus selesai.