更改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
对于这些文件中的每一个:
答案 0 :(得分: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
将失败并显示以下消息:
虽然该表的
database/table
文件存在,但无法从InnoDB
的内部数据字典中找到表.frm
。也许您已删除并重新创建了InnoDB
个数据文件,但忘记删除.frm
表的相应InnoDB
个文件,或者您 已将.frm
个文件移至另一个数据库?