MySQL InnoDBテーブルの変更-関係するファイルとその理由
-
05-07-2019 - |
質問
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
これらの各ファイル:
- ファイルはいつ作成されますか
- ファイルはいつ書き込まれますか?
- ファイルはいつ読み取られますか
- ファイルが破損または削除された場合の結果はどうなりますか?
解決
/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
ファイルを別のデータベースに移動しましたか?
所属していません StackOverflow