質問

InnoDB MySQLテーブルの内容を変更するとき、ファイルシステム上の次のファイルが関与/変更されているように見えます:

  • / path / to / mysql / data / [database] / [table] .ibd innodb_file_per_table による)
  • / path / to / mysql / data / data / ib_logfile0
  • / path / to / mysql / data / data / ib_logfile1
  • / path / to / mysql / data / data / ibdata1

これらの各ファイル:

  1. ファイルはいつ作成されますか
  2. ファイルはいつ書き込まれますか?
  3. ファイルはいつ読み取られますか
  4. ファイルが破損または削除された場合の結果はどうなりますか?
役に立ちましたか?

解決

/path/to/mysql/data/[database]/[table].ibd (due to innodb_file_per_table)

ここにデータが保存されます。テーブルを作成するときに作成されます。

/path/to/mysql/data/data/ib_logfile0
/path/to/mysql/data/data/ib_logfile1

これらは logfiles です。

すべてのデータの変更は logfiles に順番に書き込まれます。これにより、先書きロギング(トランザクションにとって重要)が可能になります

/path/to/mysql/data/data/ibdata1

これは、システムデータと UNDO データが保存される場所です。

ibdata が見つからない場合、 MySQL InnoDB エンジンが初期化されていないと判断し、新しい ibdata logfiles と同じです。

テーブルに対してクエリが発行され、 .ibd ファイルが見つからない場合、 MySQL は次のメッセージで失敗します。

  

テーブルの .frm ファイルは存在しますが、 InnoDB の内部データディクショナリからテーブル database / table が見つかりません。 InnoDB データファイルを削除して再作成したが、 InnoDB テーブルの対応する .frm ファイルを削除するのを忘れたか、または    .frm ファイルを別のデータベースに移動しましたか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top