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
- 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
-
InnoDB tabloları genellikle otomatik toparlanır. Sunucu açılmıyorsa zorla kurtarma gerekir.
-
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
- 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)
-
Tabloya erişim sağlandıysa veri kurtarılabilir.
-
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.