Tablonun bozuk olması tamamen mümkündür. Veri ve / veya dizin sayfalarının hasarlı olduğu anlamına gelmez. Kırılmış çok basit bir şey olabilir.
Yakın zamanda birden çok veritabanını mysqldumped paralel bir Slave Server yedekleme komut dosyası ile ilgili bir sorun yaşadım. Bir veritabanında mysqldump çalıştırmak çok küçük bir mysqldump ile sonuçlandı. DB 80 + tabloları vardı. Ancak, mysqldump DB beşinci masada durdu. SHOW CREATE TABLE tblname\G
Slave masaya koştuğumda , "Table Not Found" hatasını aldım. SHOW CREATE TABLE tblname\G
Master'da koştuğumda , tablo açıklaması beklendiği gibi görüntüleniyordu.
Olanlar biraz çılgınca oldu: Bir müşteri tablonun geri yüklenmesini istedi ve bir mühendis InnoDB tablosunun .ibd dosyasını bir disk yedeklemesinden geri yükledi. .İbd dosyasının (25 olan) tablo alanı kimliği, ibdata1'e (28 olan) kaydedilen tablo alanı kimliğiyle eşleşmedi.
Ben köle hosing, ustası mysqldumping ve sıfırdan çoğaltma kurarak sorunu çözdüm. Neyse ki, veri ve endeks toplam 7GB çıktı. Dolayısıyla rstore süreci büyük bir mesele değildi.
HİKAYEDEN ÇIKARILACAK DERS
Temel sorun, tablo alanı kimliği yanlış olduğunda mysqldump bir InnoDB hata bildirmez olmasıdır. Bir mysqldump, her tabloyu alfabetik sırayla bitirdiğinde ve dökmediğinde, bunun bir hata ile sonlandığını ve bir hata mesajı yazdırmadan yaptığını gösterir.
Emin olmak için kontrol edin
- kullanarak tablonun yapısını görüntüleyebilirsiniz
SHOW CREATE TABLE
- bir tablo hakkındaki her şeyi BİLGİ_SCHEMA.TABLES'den sorgulayabilirsiniz