MySQL'de bozuk tablolar nasıl onarılır

0 Hisse senetleri
0
0
0
0

giriiş

Bazen MySQL tabloları bozulabilir; bu da bir hata oluştuğu ve içindeki verilerin okunamadığı anlamına gelir. Bozuk bir tablodan okuma girişiminde bulunmak genellikle sunucunun çökmesine neden olur.

Tablo bozulmasının yaygın nedenleri
  • MySQL hizmeti veri yazma sırasında duruyor
  • Sunucu tarafından değiştirilirken harici uygulama tarafından tablo değişikliği
  • Beklenmedik araç durması
  • Bilgisayar donanım arızası
  • MySQL kodunda yazılım hatası

Tablolarınızdan birinin bozulduğundan şüpheleniyorsanız, onarım veya sorun giderme işlemlerine başlamadan önce veri dizininizi yedeklemelisiniz. Bu, veri kaybı riskini en aza indirmenize yardımcı olacaktır.

MySQL'de bozuk bir tabloyu onarma adımları

Öncelikle MySQL servisini durduralım:

sudo systemctl stop mysql

Not: Rocky Linux gibi bazı sistemlerde MySQL hizmeti şu şekilde adlandırılabilir: mysqld Tanınmak.

Ardından tüm verilerinizi yeni bir yedekleme dizinine kopyalayın. Ubuntu sistemlerinde varsayılan veri dizini şudur: /var/lib/mysql/ şudur:

cp -r /var/lib/mysql /var/lib/mysql_bkp

Yedeklemeyi tamamladıktan sonra, tablonun gerçekten bozuk olup olmadığını kontrol etmeye hazırsınız. Tablo depolama motoru tarafından yedeklenmemişse, BenimISAM MySQL kullanıyorsanız, şu komutu çalıştırarak yeniden başlatabilirsiniz: KONTROL TABLOSU MySQL komut isteminden kontrol edin:

sudo systemctl start mysql
CHECK TABLE table_name;

Tablo bozuksa, bunu onaylayan bir mesaj gösterilir. Bir MyISAM tablosu bozuksa, genellikle şu komutu kullanarak düzeltebilirsiniz: TAMİR MASASI Düzeltildi:

REPAIR TABLE table_name;

Onarım başarılı olursa çıktıda buna benzer bir mesaj göreceksiniz:

Output
+--------------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------------+--------+----------+----------+
| database_name.table_name | repair | status | OK |
+--------------------------+--------+----------+----------+

Tablo hala bozuksa, MySQL dokümanları bozuk tabloları onarmak için alternatif yöntemler sağlar.

InnoDB depolama motoruyla bozuk tabloların onarılması

Tablo depolama motorundan bozulmuşsa InnoDB Onarım süreci, kullandığınız MySQL sürümüne bağlı olarak farklılık gösterecektir. InnoDB, 8.0 sürümünden beri MySQL için varsayılan depolama motoru olarak kullanılmakta olup, otomatik bozulma denetimi ve onarım özelliklerine sahiptir. InnoDB, okuduğu her sayfanın sağlama toplamlarını kullanarak hatalı sayfaları tespit eder ve sağlama toplamlarında bir fark tespit ederse MySQL sunucusunu otomatik olarak durdurur.

InnoDB tablolarını onarmaya nadiren ihtiyaç duyulur, çünkü InnoDB, sunucuyu yeniden başlatarak çoğu sorunu çözebilen bir çökme kurtarma mekanizmasına sahiptir. Ancak, bir InnoDB tablosunu yeniden oluşturmanız gereken bir durumla karşılaşırsanız, MySQL belgelerinde bunun nasıl yapılacağına dair talimatlar bulabilirsiniz. Boşaltın ve Yeniden Yükleyin Bu yöntem, bozuk tabloya erişimin yeniden sağlanmasını içerir. mysqldump Bir tablonun yapısını ve içindeki verileri koruyan mantıksal bir yedeğini oluşturmak ve daha sonra tabloyu veritabanına yeniden eklemek için kullanılır.

MySQL hizmetini yeniden başlatın

Öncelikle MySQL servisini yeniden başlatarak sunucuya erişim sağlayıp sağlamadığını kontrol edin:

sudo systemctl restart mysql

Sunucu hala kapalıysa veya kullanılamıyorsa, şu seçeneği kullanabilirsiniz: kurtarmayı_güçle Ayarlarda InnoDB'yi etkinleştirin. Bunu yapmak için bir dosya oluşturun mysqld.cnf Düzenle. Ubuntu ve Debian sistemlerinde bu dosya genellikle şu konumda bulunur: /etc/mysql/ Red Hat ve Rocky sistemlerinde bu dosya genellikle şu konumda bulunur: /etc/my.cnf.d Yer almaktadır.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Bölümde [mysqld] Aşağıdaki satırı ekleyin:

. . .
[mysqld]
. . .
innodb_force_recovery=1

Değişiklikleri kaydedip dosyayı kapattıktan sonra MySQL hizmetini tekrar başlatmayı deneyin. Bozuk tabloya erişebiliyorsanız, aracı kullanın. mysqldump Tablo verilerini yedeklemek için bunu kullanın. Bu dosyaya istediğiniz adı verebilirsiniz, ancak burada adı şu şekilde olacaktır: out.sql Biz buna şöyle diyoruz:

mysqldump database_name table_name > out.sql

Ardından tabloyu veritabanından silin. Bunu yapmak için aşağıdaki komutu kullanabilirsiniz:

mysql -u user -p --execute="DROP TABLE database_name.table_name"

Son olarak dosyayı kullanarak tabloyu oluşturun çöplük Yakın zamanda oluşturduğunuz dosyayı geri alın:

mysql -u user -p < out.sql

InnoDB depolama motorunun genellikle eski MyISAM motorundan daha dayanıklı olduğunu unutmayın. InnoDB kullanan tablolar yine de bozulabilir, ancak kendi kendini onarma özellikleri sayesinde tablo bozulması ve çökme riski çok daha düşüktür.

Sonuç

Bu kılavuzu izleyerek, MySQL'deki bozuk tabloları nasıl onaracağınızı ve hem MyISAM hem de InnoDB depolama motorlarındaki sorunları çözmek için farklı yöntemler kullanmayı öğrendiniz. Veri kaybı riskini önlemek için herhangi bir değişiklik yapmadan önce verilerinizi mutlaka yedekleyin.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Şunları da Beğenebilirsiniz