Ana içeriğe geç

MySQL Tablo Tamiri: Bozulmuş Tabloları Onarma Rehberi

Bu Rehberde Ne Öğreneceksiniz?

Bu rehber, MySQL veritabanlarında bozulmuş tabloları tespit etmeyi öğretir.
MyISAM ve InnoDB tabloları için farklı kurtarma yöntemlerini açıklar.
Veri kaybını önlemek için güvenli yedekleme adımlarını gösterir.


🧠 Teknik Özet

Ana konu: MySQL bozulmuş tablo onarımı
Çözülen problem: Okunamayan tablolar ve sunucu çökmesi
Yöntemler: Yedekleme, MyISAM onarımı, InnoDB kurtarma


1. Güvenlik Önceliği: Veri Yedekleme

Onarıma başlamadan önce mutlaka veri dizinini yedekleyin.
Bu adım veri kaybı riskini ciddi şekilde azaltır.

MySQL Servisini Durdurun

sudo systemctl stop mysql
  • Bu komut MySQL servisinin güvenli şekilde durmasını sağlar.

Veri Dizinini Yedekleyin


cp -r /var/lib/mysql /var/lib/mysql_bkp
  • Bu komut tüm veritabanı dosyalarını yedekler.

2. MyISAM Tablolarını Onarma

  1. MyISAM tabloları manuel onarım destekler.
  • Önce tablo durumunu kontrol edin.

Tabloyu Kontrol Etme


CHECK TABLE tablo_adi;
  • Bu sorgu tablonun bozuk olup olmadığını raporlar.

Tabloyu Onarma


REPAIR TABLE tablo_adi;
  • Bu sorgu MyISAM tabloyu otomatik olarak onarmayı dener.

3. InnoDB Tablolarını Kurtarma

  1. InnoDB tabloları genellikle otomatik toparlanır. Sunucu açılmıyorsa zorla kurtarma gerekir.

  2. MySQL Servisini Yeniden Başlatın


sudo systemctl restart mysql
  • Bu işlem InnoDB’nin otomatik kurtarmasını tetikler.

4. InnoDB Force Recovery ile Veri Kurtarma

  1. Sunucu hâlâ açılmıyorsa force recovery kullanılır.

Yapılandırma Dosyasını Açın


sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  • Bu dosya MySQL ana yapılandırmasını içerir.

Kurtarma Modunu Etkinleştirin


[mysqld]
innodb_force_recovery=1
  • Bu ayar MySQL’in bozuk verilerle açılmasını sağlar.

5. Dump ve Yeniden Yükleme (Dump & Reload)

  1. Tabloya erişim sağlandıysa veri kurtarılabilir.

  2. Tabloyu Dışa Aktarın


mysqldump veritabani_adi tablo_adi > yedek_dosyasi.sql
  • Bu komut tabloyu mantıksal yedek olarak alır.

Bozuk Tabloyu Silin


mysql -u kullanici -p --execute="DROP TABLE veritabani_adi.tablo_adi"
  • Bu komut bozuk tabloyu kaldırır.

Tabloyu Geri Yükleyin


mysql -u kullanici -p < yedek_dosyasi.sql
  • Bu komut tabloyu temiz şekilde yeniden oluşturur.

❓ Sıkça Sorulan Sorular (SSS)

1. Tablonun bozuk olduğunu nasıl anlarım? Table is marked as crashed hatası sık görülür.

2. innodb_force_recovery artırılabilir mi? Evet, 1–6 arası denenebilir. Risk artar.

3. Onarım sonrası ne yapılmalı? force_recovery satırı mutlaka kaldırılmalıdır.

4. Hangi motor daha güvenlidir? InnoDB, MyISAM’a göre daha dayanıklıdır.


🎯 Sonuç

MyISAM tabloları manuel onarım ister. InnoDB tabloları çoğu zaman kendini kurtarır. Düzenli yedekleme en kritik güvenlik adımıdır.

MySQL veritabanlarınızı güvenli, hızlı ve kararlı şekilde çalıştırmak için Rabisu Bulut altyapısını hemen deneyebilirsiniz.