MySQL en popüler açık kaynaklı RDBMS (İlişkisel Veritabanı Yönetim Sistemleri) sistemlerinden biridir. Hızla büyüyen LAMP Stack bileşeninin ayrılmaz bir parçasıdır ve geliştiriciler ile sistem yöneticileri arasında etkileyici bir hayran kitlesi kazanmıştır. ilişkisel olmayan veritabanları ile karşılaştırıldığında, SQL verileri etkili bir şekilde düzenlemek, depolamak ve yönetmek için mükemmel işlevler sunar. SQL veritabanının ayırt edici tablo düzenleme işlevleri ve öne çıkan yetenekleri, onu hem büyük hem de küçük ölçekli organizasyonun her seviyesinde tercih edilen bir seçenek haline getirir.
MySQL tabloları nadir durumlarda hasar görebilir; bu da böyle bir hatanın meydana geldiğini ve buralarda depolanan verilerin okunamaz olduğunu gösterir. Bozuk bir tablodan veri okumaya çalıştığınızda sunucu çöker ve bir hata veya hata listesi döndürür.
MySQL Tablo Bozulmasının Arkasındaki Olası Nedenler
Aşağıdakiler, bozuk tabloların en yaygın nedenlerinden bazılarıdır:
- Yeniden başlatmanın ardından MySQL hizmetinin çökmesi.
- Güç kesintisi nedeniyle makinenin beklenmedik şekilde kapanması.
- Hatalı bellek veya donanım arızası.
- Yazılım hataları: OS veya SQL kodu.
- Yazma işlemi sırasında MySQL'in kapanması.
- SQL güncellenirken sistemin KAPANMASI.
Bozulduğundan şüphelendiğiniz bir tabloyu düzeltmeden önce, bilgi dizininizin bir yedeğini oluşturun. Bu, veri kaybı olasılığını azaltmaya yardımcı olacaktır. Bu hızlı kılavuzda, MySQL'de bozuk tabloları onarmanın sorun giderme adımlarında size yol göstereceğiz.
Gereksinimler
Bu öğreticiyi takip etmek için aşağıdakilere ihtiyacınız olacak:
- Sisteminizde en son Ubuntu sürümünün kurulu olması.
- Sistem kullanıcılarının sudo yetkilerine sahip olması gerekir.
- Sudo hesabınıza erişmekte zorluk yaşıyorsanız, MySQL root şifresini değiştirmeyi düşünün.
- MySQL kurulumu sunucunuzda yapılmış olmalıdır.
Adım 1: MySQL Hizmetini Durdurma ve Veri Yedekleme
İlk olarak, systemctl komutunu kullanarak MySQL hizmetini durdurun:
|
1 |
sudo systemctl stop mysql |
SQL hizmetini durdurduktan sonraki adım, mevcut tüm dosyaların yedeklerini yeni bir dizine oluşturmaktır. Tüm sistem verilerini kopyalamak için Ubuntu'nun varsayılan veri dizini olan /var/lib/mysql/ dizinini kullanın:
|
1 |
cp -r /var/lib/mysql /var/lib/mysql_bkp |
Adım 2: Hatayı Tanımlama
Ardından, incelememize başlayacağız ve bozuk tabloyu tespit edeceğiz. Eğer tablo MyISAM depolama motorunu kullanıyorsa, CHECK TABLE ifadesini kullanın ve tablonun durumunu doğrulayın:
|
1 |
mysql> CHECK TABLE table_name; |
Çıktı olarak bozuk tabloyu veya tabloları onaylayan bir mesaj göreceksiniz.
Adım 3: Bozuk Tabloyu Onarma
Eğer MyISAM tablosunda bir hata varsa ve bunu tespit ettiyseniz, hatayı düzeltmek için REPAIR TABLE ifadesini kullanın:
|
1 |
mysql> REPAIR TABLE table_name; |
Onarım başarılı olduysa, çıktı olarak aşağıdaki hatasız mesajı görmelisiniz:
|
1 2 3 4 5 6 7 8 9 10 11 |
Output: +--------------------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +--------------------------+--------+----------+----------+ | database_name.table_name | repair | status | OK | +--------------------------+--------+----------+----------+ |
Ancak, hatanın tekrar ortaya çıktığını görürseniz, tabloları yeniden oluşturmak veya onarmak için MySQL sürüm 8.0 resmi belgesini takip edin.
Unlike the MyISAM depolama motorunun aksine, tabloları onarma işlemi InnoDB depolama motorunda farklıdır. InnoDB, MySQL 8.0'daki varsayılan depolama motorudur. Otomatik bozulma kontrolü ve onarım işlemlerine sahiptir. MySQL InnoDB, okuduğu her sayfada sağlama toplamları gerçekleştirerek bozuk sayfaları kontrol eder. Bir tutarsızlık tespit edilirse, MySQL sunucusunu otomatik olarak durdurur.
Sonuç olarak, InnoDB tablolarını onarmaya nadiren ihtiyaç duyulur. InnoDB, çoğu sorunu yeniden başlatma yoluyla çözebilen bir çökme kurtarma mekanizmasına sahiptir.
Sunucuya erişim sağlayıp sağlayamadığınızı görmek için MySQL hizmetini yeniden başlatmayı deneyin:
|
1 |
sudo systemctl restart mysql |
Yeniden başlatmanın ardından bile bozuk bir InnoDB tablosunu yeniden oluşturamazsanız, MySQL belgelerinde önerilen “Dump and Reload” yöntemini deneyin. Bu yöntem, mysqldump aracını kullanarak bozuk tabloya yeniden erişim sağlamayı içerir. Tablonun logical backup yedeğini depolamak ve saklamak için bir klasör oluşturulmalıdır. Hata düzeltildikten sonra, tabloyu veritabanına geri yükler.
Adım 4: innodb_force_recovery Seçeneğinden Yararlanın
Sunucu çökmüş veya erişilemez durumda kalmaya devam ederse, InnoDB'deki force_recovery seçeneğini kullanmayı deneyin. ON konumuna getirmek, force_recovery seçeneğini etkinleştirmek, MySQL veritabanlarını geri yüklemek için mükemmel bir yoldur. Bu seçeneği, mysqld.cnf dosyasını nano metin düzenleyicide düzenleyerek etkinleştirebilirsiniz:
|
1 |
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf |
Aşağıdaki satırı [mysqld] bölümünün altına ekleyin:

MySQL hizmetini yeniden başlattıktan sonra dosyayı kaydedip kapatın.
Adım 5: Bir mysqldump Dosyası Oluşturun
Bozuk tabloya erişebiliyorsanız, tüm dökümleri yeni dosyaya yerleştirmek için mysqldump seçeneğini kullanın. Yeni dosyayı tercihinize göre adlandırın ve sonuna .sql uzantısını eklediğinizden emin olun. Burada dosyayı demo.sql:
|
1 |
mysqldump database_name table_name > demo.sql |
Bundan sonra, tabloyu veritabanından kaldırmak için DROP TABLE sorgusunu kullanın. MySQL istemini yeniden açmak zorunda kalmamak için aşağıdaki sözdizimini kullanabilirsiniz:
|
1 |
mysql -u user -p --execute="DROP TABLE database_name.table_name" |
Ardından, az önce hazırladığınız demo.sql döküm belgesini kullanarak tabloyu geri yükleyin:
|
1 |
mysql -u user -p --database=database_name < demo.sql |
MySQL bozuk tablonuzu başarıyla düzelttiniz ve veritabanıyla sorunsuz bir şekilde çalışmaya hazırsınız.
Sonuç
Büyük miktarda veriyle çalışıyorsanız tablo bozulmaları veya beklenmedik sistem çökmeleri yaşanması muhtemeldir. MySQL InnoDB depolama motorunun, önceki MyISAM motoruna göre hataya karşı daha dayanıklı olduğunu belirtmekte fayda var. InnoDB depolama motorunu kullanan tablolar, otomatik kurtarma özellikleri sayesinde tablo bozulması ve arıza tehlikesi önemli ölçüde azalsa da yine de bozulabilir.auto-recovery features.
Son olarak, blogumuzda veritabanları hakkında keşfedebileceğiniz birçok konu ve eğitim bulunmaktadır. Detaylar için blog:
- Centos 7 üzerinde MySQL Nasıl Kurulur
- MySQL Kullanıcısı — İzin Oluşturma ve Yetkilendirme
- Ubuntu üzerinde MySQL'de Replikasyon Kurulumu
Keyifli Çalışmalar!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.