MySQL iblog dosyaları tam olarak nedir


15

Bu çarpışma kurtarma yordamında hayati bir rol oynadığından bu ibdata dosyalarını anlamak istiyorum. Bunun için web üzerinden uygun kaynakları bulamadım.

Yanıtlar:


17

ibdata1

İbdata1 dosyası, InnoDB altyapısı için sistem tablo alanıdır.

InnoDB için hayati önem taşıyan bilgiler için birkaç sınıf içerir

  • Tablo Veri Sayfaları
  • Tablo Dizin Sayfaları
  • Bilgi sözlüğü
  • MVCC Kontrol Verileri
    • Alanı Geri Al
    • Geri Alma Bölümleri
  • Çift Yazma Arabelleği (İşletim Sistemi önbelleğini önlemek için Arka Planda Yazılan Sayfalar)
  • Tampon Ekle (İkincil Dizinlerde Değişiklikler)

Resimli Temsili Görmek İçin Buraya Tıklayın

İnnodb_file_per_table işlevini etkinleştirerek Veri ve Dizin Sayfalarını ibdata1'den boşlayabilirsiniz . Bu, yeni oluşturulan InnoDB tablosunun veri ve dizin sayfalarını harici bir .ibddosyada depolamasına neden olur .

Misal

  • datadir / var / lib / mysql
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;, oluşturur /var/lib/mysql/mydb/mytable.frm
    • innodb_file_per_table etkin, Depolanan Veri / Dizin Sayfaları /var/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_table devre dışı, ibdata1'de depolanan Veri / Dizin Sayfaları

InnoDB tablosunun nerede depolandığına bakılmaksızın, InnoDB'nin işlevselliği, tablo meta verilerinin aranmasını ve ACID uyumluluğunu ve İşlem İzolasyonunu desteklemek için MVCC bilgilerinin depolanmasını ve alınmasını gerektirir .

İşte tablo verilerini ve dizinleri ibdata1'den ayırma ile ilgili geçmiş makalelerim

iblog dosyaları (aka ib_logfile0, ib_logfile1)

Eğer ib_logfile0ve ne için olduğunu bilmek istiyorsanız ib_logfile1, bunlar InnoDB Yinele Günlükleri vardır. MySQL'in tamamen normal bir şekilde kapanmasına kadar hiçbir zaman silinmemeli veya yeniden boyutlandırılmamalıdır . Eğer mysqld çökerse, sadece mysqld'yi başlatın. Karşılıklı olarak okunacak ib_logfile0ve ib_logfile1içindeki çift yazma arabelleğine kaydedilmemiş veri değişikliklerini kontrol edecektir ibdata1. Bu değişiklikleri tekrarlar (yeniden yapar). Tekrar oynatılıp saklandıktan sonra, mysqld yeni DB Bağlantıları için hazır hale gelir.


Bu günlük dosyalarında alan nasıl korunacak ...? Demek istediğim ... "yeni innodb işlemleri için bunlar tamamen doldurulursa aynı günlük dosyaları nasıl kullanılır ...."
Uday

Önceki yorumum ib_log dosyaları hakkında ....
Uday

1
@ Uday Logbuffer boşalana kadar iblog dosyalarında yer tutulmaz. Bu, günlük arabelleğinde kaydedilen durdurulan işlem değişikliklerine dayanarak günlük alanının işgal edildiği ve serbest bırakıldığı dinamik bir işlemdir. Bazı büyük veri yükleri gerçekleştirdiğinizde, bu günlük dosyaları tamamen işgal edilir, bu da "InnoDB: günlük grubu kapasitesini aşan" yazan Innodb hatalarına yol açar. Umarım açıklamam şüpheni giderir.
Gopinath

innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibdve innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1tam tersi olmalı, değil mi?
rabudde

1
@rabudde Şimdi düzeltildi. Tekrar teşekkürler !!!
RolandoMySQLDBA
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.