Sabit diskimiz arızalanabilir, sunucu taşırken dosyalara zarar verebiliriz. MySQL veritabanının kullanmış olduğu InnoDB dosyalarına zarar verebiliriz. MySQL InnoDB Dosyalarını Kurtarmak gerekebilir. Böyle durumlarda MySQL InnoDB Dosyalarını Kurtarmak için yapmamız gerekenleri adım adım inceleyelim.
Öncelikle sunucu çalışıyorsa sunucuyu durdurmamız gerekmektedir. Sunucuyu durdurduktan sonra my.ini dosyasını açıyoruz. [mysqld] başlığının altına aşağıdaki satırları ekliyoruz.
innodb_purge_threads=0 innodb_force_recovery=1
MySQL sunucusunu arka plan işlemlerinden arındırmak adına innodb_purge_threads değişkenine 0 değerini veriyoruz. Ayrıca bunu my.cfg dosyasına eklemekte fayda vardır.
Sonra InnoDB tabloları için veri tabanını kurtarma moduna alıyoruz. Kurtarma moduna alındığında veritabanı salt okunur olarak çalışmaya başlayacaktır.
Öncelikle innodb_force_recovery değerine 1 vererek başlıyoruz. Veritabanı çalışmayı durdurursa, açılmazsa ya da işlem hata verirse 2,3,4,5,6 gibi 1-6 arası değer vererek devam ediyoruz.
Sunucu çalışmıyorsa ve çalışmaya başlarsa yedek alma zamanı gelmiştir. Eğer sunucu zaten çalışıyorsa yedek alma işlemi ile sunucuyu test edebiliriz. Eğer yedek alma işleminde bir sorun ile karşılaşırsak kurtarma modunu 2’ye, sorun devam ediyorsa 3’e, 4’e 5’e alırız.
6 no’lu seçenek çok zorda kalınırsa seçilmelidir. Son şansımız olmalıdır.
Sıra geldi hata veren tabloları bulmaya. MySQL dizini altındaki bin dizini altında bulabileceğiniz mysqlcheck.exe uygulamasını kullanacağız.
mysqlcheck.exe --all-databases
Burada listelenen tabloların karşısında eğer hatalı ise CORRUPTED ifadesi çıkacaktır. Bu tabloları aklımızda tutacağız. Eğer tüm tablolar hatalı ise veritabanının tamamını kaydetmemiz gerekir. Tüm tablolar hatalı iste veritabanının tamamının yedeğini alacağımız için kaydetmeye gerek yok.
Artık sunucumuzu geri başlatabiliriz.
Yedek alma konusunda detaylı bilgi için MySQL Yedek Alma ve Geri Yükleme yazımızı inceleyebilirsiniz. Ama burada da kısaca değineceğim.
mysqldump.exe -u kullaniciadi -p kullaniciparola --result-file=vt_yedek.sql veritabani_adi bozulmus_tablo_adi
Tüm veritabanını yedeklemek için en son eklediğimiz tablo adını eklemenize gerek yoktur.
Bozuk tabloları admin uygulaması (phpMyAdmin, ya da mysql.exe kullanarak silebiliriz.
drop table veritabani_adi.bozulmus_tablo_adi
Başlarken my.ini ve my.cfg dosyalarına eklediğimiz satırları geri silip sunucuyu yeniden başlatıyoruz.
Artık yedeğimizi aldık, bozuk tabloları sildik. Yedeklerimizi geri yükleme zamanı geldi. Bu konu hakkında da MySQL Yedek Alma ve Geri Yükleme yazımızı inceleyebilirsiniz.
mysql.exe -u kullaniciadi -p # Bu bölümde parola sorulacaktır use veritabani_adi; source vt_yedek.sql;
Takip etmemiz gereken işlemler bu kadar. Sonra gerekli kontrolleri yapıp işlemin başarılı olup olmadığını kontrol edebiliriz.
Tablolarınız bozuk olsa bile kurtarmaya çalışmadan önce yedeğini alın. Tablolarınızı daha fazla bozarsanız, istediğiniz zaman geri yükleyebilirsiniz.
2014 © Web Fikirleri - Her Hakkı Saklıdır.