Beberapa penyebab umum tabel rusak adalah:
- Server MySQL berhenti di tengah
penulisan.
- Program eksternal memodifikasi
tabel yang secara simultan sedang dimodifikasi oleh server.
- Mesin dimatikan secara tak
terduga.
- Perangkat keras komputer gagal.
- Ada bug perangkat lunak di suatu tempat di dalam kode MySQL.
Jika Anda mencurigai bahwa salah satu tabel Anda
telah rusak, Anda harus membuat cadangan direktori data Anda sebelum memecahkan
masalah atau mencoba untuk memperbaiki tabel. Ini akan membantu
meminimalkan risiko kehilangan data.
Pertama, hentikan layanan MySQL:
Kemudian salin semua data Anda ke direktori
cadangan baru. Pada sistem Ubuntu, direktori data default adalah
/var/lib/mysql/
:
Setelah membuat cadangan, Anda siap untuk mulai
menyelidiki di mana tabelnya ternyata rusak. Jika tabel menggunakan mesin
penyimpanan MyISAM , Anda dapat memeriksa apakah itu rusak
dengan menjalankan
CHECK TABLE
pernyataan dari prompt MySQL:
Sebuah pesan akan muncul di output pernyataan
ini untuk memberi tahu Anda apakah itu rusak atau tidak. Jika tabel MyISAM
memang rusak, biasanya dapat diperbaiki dengan mengeluarkan
REPAIR TABLE
pernyataan:
Dengan asumsi perbaikan berhasil, Anda akan
melihat pesan seperti berikut di output Anda:
Jika tabel masih rusak, dokumentasi MySQL menyarankan beberapa metode alternatif
untuk memperbaiki tabel yang rusak
Di sisi lain, jika tabel rusak menggunakan mesin penyimpanan InnoDB , maka proses
untuk memperbaikinya akan berbeda. InnoDB adalah mesin penyimpanan default
di MySQL pada versi 5.5, dan fitur operasi pemeriksaan dan perbaikan korupsi
otomatis. InnoDB memeriksa halaman yang rusak dengan melakukan checksum
pada setiap halaman yang dibacanya, dan jika menemukan perbedaan checksum, itu
akan secara otomatis menghentikan server MySQL.
Jarang ada kebutuhan untuk memperbaiki tabel InnoDB, karena InnoDB
memiliki mekanisme pemulihan kerusakan yang dapat menyelesaikan sebagian besar
masalah ketika server di-restart. Namun, jika Anda menghadapi situasi di
mana Anda perlu membangun kembali tabel InnoDB rusak, dokumentasi MySQL
merekomendasikan menggunakan metode "Dump dan
Reload" . Ini melibatkan mendapatkan kembali akses ke tabel rusak,
menggunakan mysqldumputilitas untuk
membuat cadangan logis dari
tabel, yang akan mempertahankan struktur tabel dan data di dalamnya, dan
kemudian memuat kembali tabel ke dalam database.
Dengan mengingat hal itu, coba mulai ulang layanan MySQL
untuk melihat apakah hal itu akan memungkinkan Anda mengakses server:
Jika server tetap macet atau tidak dapat diakses, maka
mungkin membantu untuk mengaktifkan
force_recovery
opsi InnoDB . Anda
dapat melakukan ini dengan mengedit mysqld.cnf
file:
Di
[mysqld]
bagian ini, tambahkan baris berikut:
Simpan dan tutup file, dan kemudian coba restart layanan
MySQL lagi. Jika Anda berhasil mengakses tabel rusak, gunakan
mysqldump
utilitas untuk
membuang data tabel Anda ke file baru. Anda dapat memberi nama file ini
apa pun yang Anda suka, tetapi di sini kami akan menamainya out.sql
:
Kemudian jatuhkan tabel dari database. Untuk menghindari
keharusan membuka kembali prompt MySQL, Anda dapat menggunakan sintaks berikut:
Setelah ini, kembalikan tabel dengan file dump yang baru saja
Anda buat:
Perhatikan bahwa mesin penyimpanan InnoDB umumnya lebih
toleran terhadap kesalahan daripada mesin MyISAM yang lebih lama. Tabel
menggunakan InnoDB dapat masih
rusak, tetapi karena yang auto-recovery
fitur risiko korupsi meja dan crash adalah jelas lebih
rendah.
Tidak ada komentar:
Posting Komentar