mysqlのiblogファイルとは何ですか


15

これらのibdataファイルは、クラッシュリカバリ手順で重要な役割を果たすため、理解したいと思います。このための適切なリソースをウェブ上で見つけることができませんでした。

回答:


17

ibdata1

ファイルibdata1は、InnoDBインフラストラクチャのシステムテーブルスペースです。

InnoDBに不可欠な情報のクラスがいくつか含まれています

  • テーブルデータページ
  • テーブルインデックスページ
  • データ辞書
  • MVCC制御データ
    • スペースを元に戻す
    • ロールバックセグメント
  • 二重書き込みバッファー(OSキャッシュを回避するためにバックグラウンドで書き込まれるページ)
  • バッファーの挿入(セカンダリインデックスへの変更)

ここをクリックして画像表示をご覧ください

innodb_file_per_tableを有効にすることで、ibdata1からデータページとインデックスページを離婚できます。これにより、新しく作成されたInnoDBテーブルは、データとインデックスページを外部.ibdファイルに保存します。

  • datadirは/ var / lib / mysqlです
  • CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;、作成 /var/lib/mysql/mydb/mytable.frm
    • innodb_file_per_tableが有効、データ/インデックスページの保存場所 /var/lib/mysql/mydb/mytable.ibd
    • innodb_file_per_tableが無効、データ/インデックスページがibdata1に保存

InnoDBテーブルの保存場所に関係なく、InnoDBの機能では、テーブルメタデータを検索し、MCID情報を保存および取得して、ACID準拠トランザクション分離をサポートする必要があります。

これは、ibdata1からテーブルデータとインデックスを分離することに関する過去の記事です。

iblogファイル(別名ib_logfile0ib_logfile1

あなたが何を知りたい場合ib_logfile0ib_logfile1するためのもので、彼らはInnoDBのREDOログです。mysqldの通常の完全なシャットダウンが行われるまで、それらを決して消去またはサイズ変更しないでください。mysqldがクラッシュした場合は、mysqldを起動してください。これは、全体で読みますib_logfile0ib_logfile1、二重書き込みバッファに掲載されていなかったすべてのデータの変更をチェックしますibdata1。それらの変更を再生(やり直し)します。再生して保存すると、mysqldは新しいDB接続の準備が整います。


これらのログファイルでスペースがどのように保持されるか...?「新しいinnodbトランザクションについて、これらが完全にいっぱいになった場合に同じログファイルがどのように使用されるかについて...」
Uday

私の以前のコメントは.... ib_logファイルについてです
ウダイ

1
@ Udayログバッファが空になるまで、iblogファイルのスペースは保持されません。これは動的プロセスであり、ログバッファに記録された停止したトランザクションの変更に基づいて、ログスペースが占有および解放されます。これらのログファイルは、膨大なデータロードを実行すると完全に占有され、「InnoDB:ロググループの容量を超えています」というInnodbエラーが発生します。私の説明があなたの疑念をクリアすることを願っています。
ゴピナス

innodb_file_per_table disabled, Data/Index Pages Stored in /var/lib/mysql/mydb/mytable.ibdそしてinnodb_file_per_table enbled, Data/Index Pages Stored in ibdata1その逆である必要があり、それをべきではないのですか?
-rabudde

1
@rabudde修正されました。ありがとうございました !!!
RolandoMySQLDBA
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.