Kamis, 07 April 2011

MySQL Repair Table

Kejadian database yang tiba-tiba rusak atau korup dapat terjadi pada Database MySQL dimanapun hal tersebut biasanya terjadi karena listrik tiba-tiba mati karena Power Supply komputer yang rusak, Konslate atau disebabkan aliran listrik dari PLN terputus.


Untuk meminimalisir dampak buruk dari kejadian tesebut maka pada komputer server perlu dipasang stabilizer dan UPS untuk komputer server yang harus available setiap saat serta dilengkapi dengan Generator Listrik (Genset) untuk antisipasi ketika listrik mati maka secara otomasi UPS akan menggantikan supply listrik ke Komputer Server hingga Genset hidup atau Listrik dari PLN kembali normal.

Apabila kerusakan database telah terjadi, Anda dapat menggunakan fitur yang dimiliki MySQL untuk Repair Table. Cara Repair table yang saya jelaskan ini disini adalah untuk table-table yang menggunakan Store Engine MyISAM.

Store Engine adalah sebuah engine yang berisikan mekanisme tentang bagaimana data disimpan. Pada MySQL terdapat banyak Storage Engine diantaranya adalah MyISAM, InnoDB, Federate, Memory.

Apabila database yang digunakan untuk menyimpan data-data berjenis transaksi seperti keuangan,penjualan direkomendasikan menggunkan Storage Engine berjenis Transaksional seperti InnoDB tetapi apabila database tersebut digunakan untuk data bukan transaksional seperti blog disarankan menggunakan storage engine yang berjenis seperti MyISAM karena akan memberikan kecepatan yang lebih baik.

Berikut ini adalah sebuah contoh untuk memeriksa table yang korup,rusak atau error pada sebuah database bernama sekolah.

Pada console jalankan perintah mysqlcheck kemudian masukan parameter username & password agar bisa akses ke Database MYSQL serta nama database yang akan diperiksa.
mysqlcheck -uroot -ppass  sekolah;
sekolah.siswa                  error
sekolah.pegawai                OK
sekolah.kelas                  OK
sekoLAH.mata_pelajaran         OK
Apabila hasil pemeriksa tidak terdapat masalah pada table yang diperiksa maka keterangan pada table tersebut akan bertuliskan OK. Apabila terdapat masalah akan bertuliskan warning atau error seperti yang terjadi pada table sekolah.siswa diatas.

Untuk memperbaik error dari table sekolah.siswa diatas pada console ketikkan perintah seperti dibawah ini.
mysqlcheck -uroot -ppass  -r sekolah;
pada perintah diatas terdapat parameter -r yang mengartikan melakukan proses repair/perbaikan apabila ditemukan table yang rusak,korup atau error.

Selain menggunakan mysqlcheck untuk memeriksa dan memperbaik tabel anda dapat menggunakan perintah check and repair table. Berikut ini cara menggunakan check table.

1. Login telebih dahulu kedalam console mysql, seperti contoh ini
mysql -uroot -ppass

2. Pilih database yang akan diperiksa, sebagai contoh adalah database sekolah
mysql>  use sekolah;

3. Lakukan perintah cek pada table yang diduga rusak atau korup
mysql> CHECK TABLE siswa;
+--------------+--------+----------+----------+
| Table         | Op    | Msg_type | Msg_text |
+--------------+--------+----------+----------+
| sekolah.siswa | check | status   | error    |
+--------------+--------+----------+----------+
Hasil dari pemeriksa bahwa table siswa terjadi error yang ditunjukan pesannya pada kolol Msg_text diatas.

4. Lakukan perbaikan pada table bermasalah dengan menggunakan perintah Repair
mysql> REPAIR TABLE siswa;
+----------------+-------+----------+---------+
| Table          | Op    | Msg_type | Msg_text|
+----------------+-------+----------+---------+
| sekolah.siswa  | repair| status   | OK      |
+----------------+--------+----------+--------+
Untuk memeriksa Storage Engine yang digunakan sebuah table dapat menggunakan perintah Show Create Table seperti contoh dibawah ini
SHOW CREATE TABLE siswa;

siswa | CREATE TABLE `siswa` (
  `id` bigint(20) NOT NULL DEFAULT '0',
  `nama` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `tgl_lahir` date
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
Pada tampilan diatas tertera ENGINE=MyISAM yang mengartikan tabel tersebut menggunakan MyISAM

2 komentar:

  1. Bagaimana kalau dalam 1 database, tabel A storage enginenya MyISAM, sedangkan dalam B storage enginenya InnoDB? apakah cara tersebut baik atau berpotensi menyebabkan error?

    BalasHapus
  2. tidak akan menyebabkan error, tetapi bila terdapat korup pada table innodb cara perbaikan di atas tidak berfungsi (menampilkan pesan "The storage engine for the table doesn't support repair:)

    BalasHapus