Sebagaimana kita ketahui bahwa MySQL adalah database yang sering dipergunakan oleh kebanyakan user dengan aplikasi penggandengnya di dalam basis Web mau pun non Web. Hal ini dikarenakan installasinya yang sangat mudah dan tidak berbayar. Namun kita juga perlu memperhatikan penggunaannya, terutama pengamanan dan pemeliharaan datanya.
Hal yang kerap terjadi adalah, dimana kita sangat membutuhkan data tersebut, namun data tersebut tidak dapat diakses, dikarenakan adanya kesalahan di dalam MySQL. Salah satu contohnya adalah pada saat saya menerima email rekan yang isinya kurang lebih demikian:
“Database kami yang sangat penting telah mengalami kerusakan atau corrupt, dan lokasinya ada di dalam server web host yang sedang diakses oleh seluruh user secara bersamaan, dan saya lalai, karena tidak melakukan backup secara teratur. Ada beberapa tabel yang berisi data yang sangat-sangat penting menjadi rusak dan tidak dapat diakses. Saya tidak bisa mendapatkan isi dari table tersebut dengan cara membuka table-nya, melalui aplikasi MySql seperti Navicat atau phpMyAdmin, karena saya mendapatkan pesan error seperti berikut:
Incorrect information in file: './the-table-name.frm'
(Salah informasi di dalam file: '/ the-table-name.frm)
Bagaimana cara memulihkan database ini?”
Dia juga menyertakan file attachment-nya seperti gambar di bawah ini:
Dari informasi tersebut di atas kemudian saya menyarankan untuk melakukan backup terhadap database tersebut. Semua tabel yang ada di dalam server di-backup kemudian dilakukan restore ke dalam database yang lain dengan nama yang berbeda. Jika semuanya berjalan dengan normal, maka database tersebut di-restore
kembali ke database awalnya. Setelah informasi ini saya sampaikan, dan dilakukan oleh rekan saya, alangkah terkejutnya saya pada saat menerima email lanjutan, dengan isi kurang lebih seperti ini:
“Saya juga telah mencoba untuk melakukan impor file sql yang terdapat pada MySQL server sebagaimana yang kamu instruksikan, namun tidak ada perubahan yang lebih baik. Selanjutnya, saya berusaha untuk menyalin data dari folder MySQL ke folder database server MySQL lain. Namun ketika saya berusaha untuk membuka database tersebut, saya menerima pesan kesalahan yang menunjukkan indeks dari tabel tersebut gagal, Incorrect information in file: './db-rtsa-1/mbw_components.frm, sebagaimana kejadian sebelumnya. Ada pun hasil back up yang saya lakukan dan kemudian di-restore, ternyata isi tabel tersebut telah berubah, seperti di bawah ini:
Dan pada bagian tertentu, syntax SQL tidak dalam kondisi yang baik, seperti berikut:
Hal inilah yang menyebabkan database tidak dapat dilakukan restore dengan baik.”
Dari email kedua, kemudian saya berusaha untuk menindaklanjutinya dengan cermat dan seksama. Kemungkinan besar hal ini terjadi karena kesalahan yang dilakukan oleh server (server fault). File FRM sebenarnya adalah file yang di dalamnya tidak mengandung satu pun dari data kita. File ini hanya merupakan definisi dari sebuah table. Biasanya file ini terbuat pada saat kita membuat tabel, dan kebanyakan kita menggunakan mesin penyimpan (storage engine) MyISAM, yaitu pada saat kita melakukan pernyataan SQL dengan menggunakan perintah CREATE TABLE, untuk menciptakan tabel tersebut.
Sebenarnya selain mesin penyimpan (storage engine) MyISAM , ada mesin penyimpan (storage engine) lain, yaitu dengan menggunakan InnoDB, dimana InnoDB adalah cara yang cukup aman dalam menghindari kecelakaan (crash safe) yang mungkin terjadi dan jauh lebih tangguh dibandingkan dengan MyISAM. Sebuah file berekstensi frm sebenarnya tidak bisa menjadi rusak melalui penggunaan mySQL server secara normal, dan tanpa mengetahui apa yang rekan kita lakukan sebenarnya maka kita tidak bisa membantu lebih jauh. Namun apa pun itu, semuanya berada di dalam cakupan Sistem Operasi dimana sever MySQL berada dan bukan karena aplikasi atau program-program yang terkait dengannya.
MySQL memang akan selalu membuat file frm untuk dapat menangani definisi tabel dan kolom. Indeks tabel dan data akan disimpan di dalam satu atau lebih file lain, tergantung daripada jenis tabel yang akan dibuat. Kemudian langkah selanjutnya yang perlu dilakukan adalah:
1. Stop service di dalam server MySQL,2. Copy file table_name.frm, table_name.MYI dan table_name.MYD,
3. Paste ketiga file tersebut ke lokasi folder lain sebagai back up,
4. Selanjutnya lakukan penghapus ketiga file tersebut dari direktori data MySQL, atau di /var/lib/mysql, seperti biasanya,
5. Kemudian nyalakan kembali (start) service server MySQL,
6. Dan buatlah tabel sebagaimana file yang rusak dengan menggunakan perintah CREATE TABLE,
7. Stop kembali service di dalam server MySQL,
8. Salin file yang berekstensi MYD dan MYI dari lokasi backup (no. 6) ke dalam lokasi folder data, misalnya di /var/lib/mysql, menggantikan file-file yang ada sebelumnya (over-write),
9. Terakhir, nyalakan kembali (start) service server MySQL.
Informasi ini selanjutnya saya teruskan ke rekan saya dan berikut ini adalah isi dari email balasannya:
“Setelah saya berusaha memahami apa yang kamu tuliskan dan mengutak-atik file-file tersebut, dan Voila …. Semuanya telah kembali normal. Tidak ada lagi pesan mysql error : Incorrect information in file: ./table.frm. Data pun dapat dilihat dengan baik seperti semula. Terima Kasih.…”
Nah, semoga di lain hari tidak ada kepanikan dan kerugian besar yang terjadi akibat ketidaktahuan dan keterbatasan informasi. Selalu keep in touch. ***Didit***
telah dipublish oleh sahabat terbaikku :




terimakasih byk.. artikel ini saya coba terapkan dan berhasil.. bermanfaat *cheers
ReplyDeleteKembali kasih saudara Siposipo...
DeleteSemoga bermanfaat...;)
saya sudah menerapkan artikel ini tetapi belum berhasil..apakah versi mysql yang berbeda juga berpengaruh?mengingat database mysql saya yg rusak adalah lebih rendah dari yang saya gunakan saat ini...terima kasih
ReplyDeleteMohon dibantu, bagaimana bunyi errornya saudara Anonymous... dan versi berapa MySQLnya ??
DeleteTerima Kasih