Apa sebenarnya file iblog di mysql


15

Saya ingin memahami file ibdata ini karena ini memainkan peran penting dalam prosedur pemulihan kerusakan. Saya tidak dapat menemukan sumber daya yang tepat melalui web untuk ini.

Jawaban:


17

ibdata1

File ibdata1 adalah tablespace sistem untuk infrastruktur InnoDB.

Ini berisi beberapa kelas untuk informasi penting untuk InnoDB

  • Halaman Data Tabel
  • Halaman Indeks Tabel
  • Kamus data
  • Data Kontrol MVCC
    • Batalkan Spasi
    • Segmen kembalikan
  • Buffer Tulis Ganda (Halaman Ditulis di Latar Belakang untuk menghindari caching OS)
  • Masukkan Buffer (Perubahan ke Indeks Sekunder)

Klik Di Sini untuk melihat Representasi Pictorial

Anda dapat menceraikan Halaman Data dan Indeks dari ibdata1 dengan mengaktifkan innodb_file_per_table . Ini akan menyebabkan tabel InnoDB yang baru dibuat untuk menyimpan data dan mengindeks halaman dalam .ibdfile eksternal .

Contoh

  • datadir adalah / var / lib / mysql
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;, menciptakan /var/lib/mysql/mydb/mytable.frm
    • innodb_file_per_table diaktifkan, Halaman Data / Indeks Disimpan /var/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_table dinonaktifkan, Halaman Data / Indeks Disimpan di ibdata1

Di mana pun tabel InnoDB disimpan, fungsionalitas InnoDB mengharuskan mencari metadata tabel dan menyimpan serta mengambil info MVCC untuk mendukung kepatuhan ACID dan Isolasi Transaksi .

Berikut adalah artikel saya sebelumnya tentang memisahkan data tabel dan indeks dari ibdata1

file iblog (alias ib_logfile0, ib_logfile1)

Jika Anda ingin tahu untuk apa ib_logfile0dan ib_logfile1untuk apa, mereka adalah Log Redo InnoDB. Mereka tidak boleh dihapus atau diubah ukurannya sampai mysqld shutdown normal penuh telah terjadi . Jika mysqld pernah mogok, mulai saja mysqld. Ini akan membaca seberang ib_logfile0dan ib_logfile1untuk memeriksa perubahan data yang tidak diposting ke buffer tulis ganda di ibdata1. Itu akan mengulang (mengulang) perubahan itu. Setelah mereka diputar ulang dan disimpan, mysqld menjadi siap untuk Koneksi DB baru.


Bagaimana ruang akan disimpan dalam file-file log ini ...? Saya bermaksud bertanya ... "untuk transaksi innodb baru bagaimana file log yang sama digunakan jika ini diisi sepenuhnya ...."
Uday

Komentar saya sebelumnya adalah tentang file ib_log ....
Uday

1
@ Uday Ruang tidak akan disimpan pada file iblog sampai logbuffer menjadi kosong. Ini adalah proses yang dinamis, di mana ruang log ditempati dan dirilis berdasarkan perubahan transaksi yang terhenti yang dicatat dalam buffer log. File-file log ini ditempati secara lengkap, kapan pun Anda melakukan beberapa data besar, yang mengarah ke kesalahan Innodb yang menyatakan "InnoDB: yang melebihi kapasitas grup log"., Yang berarti ukuran file Log harus lebih besar untuk melakukan sesuatu. Semoga penjelasan saya menghapus keraguan Anda.
Gopinath

innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibddan innodb_file_per_table enbled, Data/Index Pages Stored in ibdata1harus sebaliknya, bukan?
rabudde

1
@rabudde Sudah diperbaiki sekarang. Terima kasih lagi !!!
RolandoMySQLDBA
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.