Ana Sayfa » Mysql » MySQL Repair MyISAM Table – BozulmuşTabloların Onarılması

MySQL Repair MyISAM Table – BozulmuşTabloların Onarılması


BerbatKötüİdare EderGüzelHarika (Toplam 1 oy. 5 puan üzerinden ortalama 5,00 || Oy vererek siz de katkıda bulunabilirsiniz.)
Loading...

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYw6UL7o' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349

Herhangi bir nedenden dolayı MySQL databaseinizdeki herhangi bir myisam tablo bozulursa loglarınızda vs. aşağıdakine benzer bir uyarı görebilirsiniz.

Table 'tablo_adi' is marked as crashed and should be repaired

Hatada bahsedilen repair işlemi bir kaç şekilde yapılabilir, Yöntemlerden birisi myisamcheck isimli table maintanence aracını kullanmaktır. myisamcheck MySQL ile birlikte gelen ve myisam tabloları kontrol etmeye, onarmaya ya da optimize etmeye yarayan küçük bir uygulamadır.

Örnek olarak mydb isimli bir databaser’imiz olduğunu düşünürsek bu db’deki myisam tabloları bozulmaya karşı kontrol etmek için myisamcheck’i şu şekilde kullanabiliriz:

# myisamchk /var/lib/mysql/mydb/*.MYI

Bu şekilde MySQL’in default data dizini olan /var/lib/mysql/ dizini altındaki mydb isimli database klasoru altında bulunan MYI dosyaları taranarak kontrol edilir.

Eğer corrupt olan tablo ya da tablolarınız varsa komutun çıktısında aşağıdakine benzer satırlar görürsünüz:

myisamchk: error: Wrong bytesec: 0-0-0 at linkstart: 1592412
MyISAM-table 'mydb/mytable.MYI' is corrupted
Fix it using switch "-r" or "-o"

Bu örneğe göre mytable isimli tablo corrupt olmuş görünmekte ve fix edilmesi için -r ya da -o parametrelerinin kullanılması söylenmekte.
myisamcheck’in -r parametresi recover et anlamına gelmektedir ve onarmak için ilk olarak kullanılması gereken parametredir dolayısı ile ilgili tabloyu -r ile recover etmek için komutu şu şekilde kullanıyoruz:

# myisamchk -r /var/lib/mysql/mydb/mytable.MYI

Bu şekilde tablo repair edilecek ve aşağıdaki gibi bir çıktı alınacaktır:

- recovering (with sort) MyISAM-table 'mydb/mytable.MYI'
Data records: 8392
- Fixing index 1
- Fixing index 2
- Fixing index 3
Data records: 8392

Recover işleminden sonra aynı tabloyu tekrar check ettiğiniz zaman tablonun aşağıda görüldüğü şekilde onarılmış olduğunu görmeniz gerekir.

Checking MyISAM file: mydb/mytable.MYI
Data records:   8392   Deleted blocks:       0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check data record references index: 2
- check data record references index: 3
- check record links

-r parametresi ile onarma işleminin başarılı olmaması durumunda ise aynı komutu -o parametresi ile de çalıştırabilirsiniz. -o safe-recover demektir ve tüm rowları tek tek okuduğundan dolayı daha yavaştır ancak -r parametresinin onarımı beceremediği durumlarda kullanılabilir.

Parametrelerle ilgili detayları http://dev.mysql.com/doc/refman/5.6/en/myisamchk-repair-options.html adresinde de bulabilirsiniz

Visited 1.802 times, 1 visit(s) today
Kategoriler: Mysql |

Bu yazılar da ilginizi çekebilir:


- MySQL Full-Text Search Minimum Length Limitini Değiştirmek
- MySQL: InnoDB Database Ebatının Küçültülmesi – Shrink ibdata1
- MySQL Database Schema Export
- MySQLdump – InnoDB single-transaction ve quick dump
- Mysql Data Dizininin Yerinin Değiştirilmesi

Yorumlar


Trackbacks

Yorumda bulunun.