Kesalahan MySQL "Tabel ditandai sebagai rusak" biasanya menunjukkan bahwa tabel yang menggunakan mesin penyimpanan MyISAM telah rusak dan tidak dapat dibaca dengan aman oleh MySQL. Solusi tercepat adalah dengan mengambil cadangan basis data, kemudian memilih tabel terkait di phpMyAdmin dan menjalankan proses Perbaiki Tabel. Namun, kesalahan ini tidak selalu bisa diselesaikan hanya dengan satu klik; pemadaman server yang tiba-tiba, ruang disk yang penuh, kueri yang salah, lalu lintas penulisan yang tinggi, atau konfigurasi MySQL yang usang dapat menyebabkan masalah ini terulang kembali. Dalam panduan ini, Anda akan menemukan langkah-langkah penyebab kesalahan, proses perbaikan yang aman dengan phpMyAdmin, pemeriksaan cadangan sebelum proses, dan metode pencegahan yang permanen.
Website Anda mungkin menggunakan WordPress, OpenCart, perangkat lunak PHP khusus, atau sistem forum; ketika tabel MySQL rusak, pengunjung Anda dapat melihat layar putih, kesalahan 500, waktu tunggu koneksi, atau kesalahan basis data yang tidak terduga di panel admin. Terutama di situs e-commerce, jika tabel pesanan, produk, sesi, atau keranjang terpengaruh, bahkan gangguan beberapa menit dapat menyebabkan kehilangan pendapatan. Oleh karena itu, selama proses perbaikan, penting untuk menjaga integritas data dan memahami penyebab utama kesalahan tersebut. Infrastruktur hosting yang andal, pencadangan yang teratur, dan pemilihan mesin basis data yang tepat dapat secara signifikan mengurangi risiko semacam ini. Pada titik ini, opsi untuk infrastruktur yang dapat dikelola dan dipantau seperti Hosting Web Hostragons atau untuk proyek yang memerlukan sumber daya tinggi seperti Server VPS Hostragons dapat dipertimbangkan.
Apa itu kesalahan "Tabel ditandai sebagai rusak"?
Kesalahan "Tabel ditandai sebagai rusak" menyatakan bahwa server MySQL telah menandai sebuah tabel sebagai rusak dan mengalami masalah saat melakukan operasi baca atau tulis pada tabel tersebut. Pesan kesalahan biasanya muncul dalam bentuk: Tabel './database/nama_tabel' ditandai sebagai rusak dan harus diperbaiki atau File kunci tidak benar untuk tabel. Pesan ini menunjukkan adanya masalah di dalam file tabel, indeks, atau integritas tabel.
Kesalahan ini paling sering terjadi pada tabel MyISAM. MyISAM adalah mesin penyimpanan yang lebih tua dan lebih fokus pada pembacaan cepat; namun, kemampuan pemulihan dari kerusakan tidak sekuat InnoDB. Tabel MyISAM dapat dengan mudah rusak jika server mati mendadak, proses penulisan disk terputus, atau layanan MySQL tidak berhenti dengan benar. Sebaliknya, InnoDB biasanya lebih tahan lama berkat mekanisme log transaksi dan pemulihan dari kerusakan; tetapi ini tidak berarti bahwa tidak ada masalah yang akan terjadi pada tabel InnoDB. Masalah serupa di sisi InnoDB lebih terlihat sebagai masalah ruang tabel, disk, log transaksi, atau masalah kamus data.
Penyebab kesalahan yang paling umum
Ketika sebuah tabel rusak, hanya melakukan perbaikan dengan phpMyAdmin sering kali terlihat cukup, tetapi jika Anda tidak menemukan penyebab kesalahan tersebut, masalah yang sama bisa muncul kembali dalam beberapa hari atau jam. Berikut adalah penyebab yang paling umum berdasarkan pengalaman lapangan:
- Pemadaman server yang tiba-tiba: Jika MySQL sedang menulis ke tabel saat terjadi pemadaman listrik, reset perangkat keras, atau crash sistem operasi, tabel dapat rusak.
- Penuh ruang disk: Jika MySQL tidak dapat menulis file sementara, indeks, atau pembaruan tabel, integritas data dapat terganggu. Penggunaan disk yang melebihi 90% berisiko tinggi.
- Penghentian layanan MySQL secara paksa: Penghentian keras seperti kill -9 dapat menyebabkan masalah, terutama saat penulisan intensif pada tabel MyISAM.
- Lalu lintas penulisan yang tinggi: Tabel yang terus diperbarui seperti log, penghitung, sesi, atau tabel pencarian yang menggunakan MyISAM lebih rentan terhadap masalah.
- Plugin atau tema yang bermasalah: Di sistem seperti WordPress, plugin yang ditulis dengan buruk dapat menghasilkan kueri berlebihan dan menyebabkan penguncian tabel.
- Masalah perangkat keras atau sistem file: Sektor yang rusak di disk, kesalahan I/O, atau sistem file yang rusak dapat memengaruhi file basis data.
- Versi MySQL yang usang: Versi yang tidak mutakhir dapat memiliki kinerja, penguncian, dan perilaku pemulihan yang lebih lemah.
Langkah-langkah keamanan kritis sebelum perbaikan
Proses perbaikan basis data sering kali aman; namun, setiap tindakan yang dilakukan pada tabel yang rusak tidak sepenuhnya menghilangkan risiko kehilangan data. Terutama di lingkungan produksi, yaitu saat melakukan tindakan di situs aktif, prioritas selalu harus pada pencadangan.
1. Ambil cadangan basis data saat ini
Sebelum memulai perbaikan dengan phpMyAdmin, ekspor cadangan instan dari basis data. Penting untuk mencadangkan data yang dapat dibaca meskipun tabel rusak. Pilih basis data di phpMyAdmin, klik tab Ekspor, pilih metode khusus jika memungkinkan, dan ambil cadangan dalam format SQL. Pada basis data besar, proses ekspor dapat mengalami timeout; dalam hal ini, alat pencadangan panel kontrol hosting atau mysqldump melalui SSH mungkin lebih sehat. Dalam proyek yang tidak memiliki kebijakan pencadangan yang teratur, meninjau sumber daya seperti Solusi cadangan hosting dapat bermanfaat.
2. Tentukan tabel mana yang rusak
Pesan kesalahan biasanya menyertakan nama tabel. Misalnya, di situs WordPress, tabel wp_options, wp_posts, wp_comments, atau wp_actionscheduler_actions mungkin muncul. Di perangkat lunak khusus, nama tabel dapat ditemukan dalam log aplikasi, log kesalahan PHP, atau log kesalahan MySQL. Menentukan tabel yang rusak akan menghindarkan Anda dari proses yang tidak perlu di seluruh basis data.
3. Aktifkan mode pemeliharaan sementara untuk situs
Jika ada operasi penulisan baru pada tabel saat perbaikan berlangsung, proses tersebut dapat gagal atau terjadi inkonsistensi data. Mode pemeliharaan selama 2-5 menit pada situs dengan lalu lintas tinggi akan membuat proses lebih aman. Jika Anda menggunakan WordPress, Anda dapat menghentikan operasi pengguna dengan plugin pemeliharaan, atau jika menggunakan perangkat lunak khusus, dapat menggunakan halaman pemeliharaan sementara atau pengalihan server web. Untuk pengalaman pengunjung yang aman, halaman pemeliharaan harus memiliki SSL yang aktif; jika Anda mengalami masalah dengan sertifikat, Anda dapat melihat opsi sertifikat SSL.
Bagaimana cara memperbaiki tabel MySQL dengan phpMyAdmin?
phpMyAdmin memudahkan pengguna yang tidak memiliki pengetahuan tentang perintah baris untuk memperbaiki tabel MySQL. Langkah-langkah berikut mirip di panel hosting seperti cPanel, Plesk, dan sejenisnya.
Langkah 1: Masuk ke phpMyAdmin dari panel hosting
Setelah masuk ke panel kontrol hosting Anda, buka tautan phpMyAdmin di bagian basis data. Jika Anda menggunakan beberapa akun hosting atau nama domain, pastikan Anda melakukan tindakan di akun yang benar. Melakukan tindakan di basis data yang salah biasanya tidak langsung merusak, tetapi dapat membuang-buang waktu dan menyebabkan Anda memperbaiki lingkungan pengujian alih-alih situs langsung. Jika ada kebingungan mengenai pencocokan nama domain dan hosting Anda, Anda juga dapat meninjau topik Pengelolaan Domain.
Langkah 2: Pilih basis data yang benar
Pilih basis data yang digunakan situs Anda dari menu sebelah kiri. Untuk WordPress, Anda dapat mengetahui nama basis data dari baris DB_NAME di file wp-config.php. Di proyek PHP khusus, nama basis data biasanya terdapat di file config.php, .env, atau database.php. Jika ada beberapa situs di server yang sama, pemeriksaan ini sangat penting.
Langkah 3: Tandai tabel yang rusak
Ketika basis data dibuka, tabel-tabel akan ditampilkan. Temukan tabel yang disebut dalam pesan kesalahan dan centang kotak di sebelah kiri. Jika Anda menerima kesalahan yang sama untuk beberapa tabel, Anda dapat memilih semuanya; namun, lebih baik memulai dengan tabel yang paling kritis untuk metode yang lebih terkontrol. Periksa kolom Jenis atau Engine untuk melihat apakah tabel tersebut adalah MyISAM.
Langkah 4: Jalankan opsi Perbaiki Tabel
Setelah memilih tabel, pilih opsi Perbaiki Tabel dari menu dropdown di bagian bawah halaman. phpMyAdmin biasanya menjalankan perintah REPAIR TABLE nama_tabel di latar belakang. Setelah proses selesai, Anda akan melihat hasil yang berhasil, peringatan, atau gagal. Hasil yang berhasil biasanya berbentuk status OK. Pada tabel besar, proses ini dapat memakan waktu beberapa menit alih-alih beberapa detik; selama waktu ini, jangan segarkan halaman atau tutup browser.
Langkah 5: Periksa tabel dan uji situs
Setelah perbaikan selesai, Anda dapat menjalankan proses Periksa Tabel dari menu dropdown yang sama. Kemudian, uji halaman utama situs Anda, panel admin, fungsi pencarian, daftar produk, dan area login pengguna. Jika Anda menggunakan WordPress, adalah praktik baik untuk menyimpan permalink, membersihkan cache, dan memeriksa log kesalahan di panel admin.
Apa arti opsi perbaikan di phpMyAdmin?
Di phpMyAdmin, terdapat berbagai opsi untuk pemeliharaan tabel selain hanya perbaikan. Setiap opsi memiliki tujuan yang berbeda; tidak seharusnya digunakan dengan harapan yang salah.
| Opsi | Apa fungsinya? | Kapan digunakan? |
|---|---|---|
| Periksa Tabel | Memeriksa integritas struktural tabel dan status kesalahan. | Digunakan untuk verifikasi sebelum dan sesudah perbaikan. |
| Perbaiki Tabel | Mencoba memperbaiki tabel dan indeks MyISAM yang rusak. | Langkah aman pertama ketika kesalahan "Tabel ditandai sebagai rusak" muncul. |
| Optimalkan Tabel | Mengurangi ruang kosong yang ditinggalkan oleh catatan yang dihapus, mengatur tabel. | Digunakan untuk meningkatkan kinerja setelah penghapusan/pembaruan yang intensif. |
| Analisis Tabel | Memperbarui statistik indeks untuk perencana kueri. | Digunakan saat ada penurunan kinerja atau dugaan penggunaan indeks yang salah. |
Singkatnya, kesalahan "Tabel ditandai sebagai rusak" dapat diatasi langsung dengan opsi Perbaiki Tabel. Proses optimasi dan analisis adalah alat pemeliharaan yang berguna; namun, tidak dapat memperbaiki tabel yang rusak secara mandiri.
Kenapa kondisi tabel InnoDB berbeda?
Di phpMyAdmin, opsi Perbaiki Tabel untuk tabel InnoDB tidak selalu berfungsi seperti yang diharapkan. Alasannya adalah InnoDB tidak bekerja dengan logika perbaikan berbasis file sederhana seperti MyISAM. InnoDB menjaga integritas data dengan struktur log transaksi, redo log, undo log, dan ruang tabel. Oleh karena itu, solusi untuk masalah InnoDB biasanya melibatkan memeriksa log layanan MySQL, memeriksa status disk, memulihkan dari cadangan, atau menggunakan mode pemulihan tingkat lanjut.
Jika pesan kesalahan Anda menunjukkan tabel MyISAM, perbaikan phpMyAdmin kemungkinan besar akan berhasil. Namun, jika Anda menerima pesan seperti corrupt, tablespace, cannot open table di sisi InnoDB, sebaiknya ambil cadangan terlebih dahulu dan periksa log server daripada langsung mencoba perbaikan. Dalam kasus ini, meminta dukungan dari penyedia hosting Anda adalah lebih aman. Terutama untuk data e-commerce yang kritis, lebih baik menghindari percobaan acak dan memilih intervensi profesional.
Apa yang harus dilakukan jika perbaikan gagal?
Proses perbaikan tabel dengan phpMyAdmin tidak selalu berhasil. Ukuran tabel yang besar, kerusakan file yang serius, masalah disk, atau pembatasan izin dapat menyebabkan proses terhenti. Dalam situasi seperti ini, langkah-langkah berikut dapat diikuti:
- Pemulihan dari cadangan: Metode yang paling dapat diandalkan adalah mengembalikan cadangan terbaru yang diambil sebelum kesalahan terjadi. Sebelum pemulihan, simpan basis data yang rusak saat ini sebagai file terpisah.
- Pemakaian myisamchk melalui SSH: Jika ada akses server untuk tabel MyISAM, alat myisamchk dapat digunakan. Proses ini harus dilakukan dengan menghentikan layanan MySQL atau memutus akses ke tabel.
- Perintah REPAIR TABLE: Perintah REPAIR TABLE nama_tabel; dapat dijalankan dari tab SQL phpMyAdmin. Untuk tabel besar, opsi QUICK atau EXTENDED dapat dipertimbangkan.
- Pemeriksaan disk dan inode: Jika ruang disk atau inode penuh, perbaikan akan gagal. Pertama, hapus cadangan, log, dan file sementara yang tidak perlu.
- Periksa log kesalahan server: Log kesalahan MySQL, log server web, dan log kesalahan PHP memberikan data kritis untuk menentukan penyebab utama.
Jika Anda menggunakan hosting bersama, Anda mungkin tidak memiliki izin untuk SSH atau menghentikan layanan. Dalam hal ini, mengirimkan pesan kesalahan, nama tabel, perkiraan waktu terjadinya, dan tanggal cadangan terakhir yang Anda ambil kepada tim dukungan akan mempercepat proses solusi.
Bagaimana cara mencegah kesalahan ini terulang kembali?
Perbaikan satu kali hanya menghilangkan masalah sementara; solusi permanen adalah disiplin infrastruktur dan pemeliharaan. Langkah-langkah berikut dapat secara signifikan mengurangi risiko kerusakan tabel MySQL.
Pertimbangkan untuk mengonversi tabel MyISAM ke InnoDB
Di aplikasi web modern, InnoDB biasanya merupakan pilihan yang lebih aman dan lebih tahan lama. Dengan fitur penguncian tingkat baris, dukungan transaksi, dan pemulihan pasca kerusakan, InnoDB memberikan keuntungan dibandingkan MyISAM dalam lalu lintas penulisan yang tinggi. Proses konversi dapat dilakukan dengan perintah ALTER TABLE nama_tabel ENGINE=InnoDB; tetapi harus diuji di lingkungan pengujian dan cadangan lengkap harus diambil sebelum diterapkan di situs langsung. Beberapa perangkat lunak lama mungkin bergantung pada perilaku MyISAM atau indeks fulltext.
Gunakan pencadangan yang teratur dan dapat dipulihkan
Cadangan tidak hanya harus diambil, tetapi juga dapat dipulihkan. Cadangan harian, cadangan lengkap mingguan, dan mengambil cadangan manual sebelum pembaruan penting adalah kebijakan yang baik. Menyimpan cadangan setidaknya selama 7 hari adalah awal yang wajar bagi sebagian besar situs web kecil dan menengah. Di situs e-commerce, untuk mengurangi kehilangan pesanan, mungkin diperlukan pencadangan yang lebih sering atau pemulihan berbasis binlog.
Pantau penggunaan disk dan sumber daya
Perlu memicu alarm ketika penggunaan disk mencapai 85-90%. MySQL memerlukan ruang kosong untuk tabel sementara, file log, dan operasi indeks. Selain itu, CPU, RAM, dan waktu tunggu I/O juga harus dipantau secara teratur. Situs yang terus-menerus terjebak pada batas sumber daya lebih rentan terhadap kesalahan basis data. Jika lalu lintas Anda meningkat, mungkin masuk akal untuk berpindah dari paket berbagi ke paket yang lebih kuat; dalam hal ini, halaman Hosting Korporat atau Hosting berkinerja tinggi dapat dipertimbangkan.
Periksa pembaruan plugin, tema, dan perangkat lunak
Perangkat lunak lama tidak hanya menciptakan kerentanan keamanan; tetapi juga dapat mengirimkan kueri yang tidak efisien ke basis data. Saat melakukan pemeliharaan di WordPress, plugin yang tidak digunakan harus dihapus, tabel log yang membengkak harus dibersihkan, dan plugin yang tidak dapat dipercaya harus dihindari. Melakukan pengujian di lingkungan staging sebelum memperbarui perangkat lunak dapat mencegah masalah tabel atau indeks yang tidak terduga di situs langsung.
Tutup server dengan benar dan buat rencana pemeliharaan
Jika Anda mengelola VPS atau server khusus, hindari memaksakan penghentian layanan MySQL. Penting untuk menghentikan layanan dengan terkontrol sebelum pemeliharaan, melakukan pembaruan di jam lalu lintas rendah, dan memeriksa log setelah reboot. Disiplin pemeliharaan yang terencana dapat mengurangi risiko kerusakan, terutama di basis data dengan lalu lintas tinggi.
Catatan khusus untuk situs WordPress
WordPress sering menunjukkan kesalahan MySQL dengan pesan umum terjadi kesalahan saat menghubungkan ke basis data. Namun, ketika memeriksa log kesalahan, rincian tabel yang rusak dapat terlihat. Tabel yang sering terpengaruh di WordPress termasuk wp_options, wp_posts, wp_postmeta, wp_comments, dan beberapa tabel log atau penjadwalan yang dibuat oleh plugin. Jika tabel wp_options rusak, pengaturan umum situs mungkin tidak dapat dibaca; jika wp_posts rusak, konten mungkin tidak dapat ditampilkan; dan jika tabel log plugin rusak, panel admin bisa melambat.
WordPress juga memiliki fitur pemulihan basis data bawaan. Baris define('WP_ALLOW_REPAIR', true); dapat ditambahkan sementara ke file wp-config.php dan pemulihan dapat dilakukan di /wp-admin/maint/repair.php. Namun, setelah proses selesai, baris ini harus dihapus untuk mencegah akses tidak sah ke halaman pemulihan. Metode phpMyAdmin biasanya lebih terkontrol karena Anda dapat melihat tabel mana yang sedang Anda proses. Jika Anda mencari infrastruktur yang dioptimalkan untuk proyek WordPress, Anda dapat melihat sumber daya Hosting WordPress.
Kapan Anda harus mendapatkan dukungan profesional?
Tidak setiap kesalahan MySQL cukup sederhana untuk dipecahkan sendiri. Jika salah satu dari kondisi berikut terjadi, lebih baik mendapatkan dukungan profesional:
- Tabel yang rusak berisi data pesanan, pembayaran, keanggotaan, atau finansial.
- Kesalahan tetap ada setelah percobaan perbaikan atau tabel tampak hilang.
- Ukuran basis data lebih dari beberapa GB dan phpMyAdmin mengalami timeout.
- Kesalahan tablespace InnoDB atau redo log muncul.
- Kesalahan disk, kesalahan I/O, atau peringatan sistem file ada.
- Anda tidak memiliki cadangan yang bersih baru-baru ini.
Saat membuat permintaan dukungan, bagikan teks lengkap dari pesan kesalahan, nama basis data dan tabel yang terpengaruh, kapan kesalahan mulai terjadi, pembaruan atau pemindahan terakhir yang dilakukan, dan tanggal cadangan jika ada. Informasi ini akan secara signifikan mempercepat waktu penyelesaian.
Daftar kontrol singkat
Untuk bergerak cepat dalam keadaan darurat, Anda dapat mengikuti urutan berikut:
- Tentukan nama tabel yang rusak dari pesan kesalahan.
- Ambil cadangan dari basis data saat ini.
- Aktifkan mode pemeliharaan untuk situs sementara.
- Pilih basis data yang benar di phpMyAdmin.
- Tandai tabel terkait dan jalankan proses Perbaiki Tabel.
- Periksa tabel dan uji fungsi situs.
FAQ
Apakah kesalahan "Tabel ditandai sebagai rusak" berarti kehilangan data?
Tidak selalu berarti kehilangan data. Sebagian besar tabel MyISAM dapat dipulihkan melalui proses Perbaiki Tabel di phpMyAdmin. Namun, jika tabel rusak parah, beberapa catatan mungkin telah rusak. Oleh karena itu, mengambil cadangan dari kondisi saat ini sebelum perbaikan adalah penting.
Apakah aman melakukan perbaikan tabel dengan phpMyAdmin?
Umumnya aman; namun, setiap tindakan pemeliharaan yang dilakukan pada basis data langsung membawa risiko. Mengambil cadangan sebelum proses, memilih tabel yang benar, dan jika memungkinkan, mengaktifkan mode pemeliharaan pada situs dapat meningkatkan keamanan. Untuk tabel besar atau kritis, dukungan profesional sebaiknya dipilih.
Haruskah saya menggunakan Perbaiki Tabel untuk tabel InnoDB?
Tabel InnoDB tidak dapat diperbaiki dengan cara klasik seperti MyISAM. Untuk masalah InnoDB, lebih baik memeriksa log MySQL, memeriksa status disk, dan jika perlu, memulihkan dari cadangan. Percobaan perbaikan yang acak dapat meningkatkan risiko kehilangan data.
Kenapa kesalahan ini terus berulang?
Jika kesalahan terus berulang, penyebab yang mendasari mungkin belum terpecahkan. Penuh ruang disk, pemadaman layanan mendadak, lalu lintas penulisan yang tinggi, plugin yang rusak, versi MySQL yang usang, atau terus menggunakan MyISAM adalah penyebab yang paling umum. Menemukan penyebab utama adalah syarat untuk solusi permanen.
Apakah saya harus menghubungi penyedia hosting saya sebelum melakukan perbaikan?
Untuk kesalahan tabel MyISAM yang sederhana, Anda dapat mengambil cadangan dan memperbaiki menggunakan phpMyAdmin. Namun, jika tabel tersebut berisi data kritis, Anda tidak memiliki cadangan, ukuran basis data terlalu besar, atau melihat kesalahan InnoDB, sebaiknya hubungi tim dukungan hosting.
Kesimpulan
Kesalahan MySQL "Tabel ditandai sebagai rusak" adalah peringatan kerusakan basis data yang terutama muncul pada tabel MyISAM dan dapat diatasi dalam banyak kasus dengan phpMyAdmin. Pendekatan yang benar adalah pertama mengambil cadangan, menentukan tabel yang rusak, melakukan perbaikan melalui phpMyAdmin, dan kemudian mengatasi penyebab kesalahan tersebut. Pencadangan yang teratur, sumber daya server yang memadai, penggunaan InnoDB, dan infrastruktur perangkat lunak yang mutakhir dapat mengurangi kemungkinan terulangnya masalah ini. Jika Anda sering mengalami kesalahan serupa di situs Anda, tinjau infrastruktur Anda dan pertimbangkan solusi hosting yang sesuai dengan kebutuhan Anda dengan memeriksa sumber daya dari Hostragons atau mendapatkan panduan dari tim dukungan.