【问题标题】:Changes to a MySQL InnoDB table - which files are involved and why?对 MySQL InnoDB 表的更改 - 涉及哪些文件,为什么?
【发布时间】:2009-07-29 15:39:38
【问题描述】:

当更改 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. 如果文件损坏或删除会有什么后果?

【问题讨论】:

    标签: mysql innodb disaster-recovery


    【解决方案1】:
    /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 数据的地方。

    如果没有找到ibdataMySQL 会认为InnoDB 引擎没有初始化,只是创建新的ibdata。与logfiles 相同。

    如果对表发出查询,但未找到 .ibd 文件,MySQL 将失败并显示以下消息:

    虽然表的.frm 文件存在,但无法从InnoDB 的内部数据字典中找到表database/table。也许你已经删除并重新创建了InnoDB数据文件但忘记删除InnoDB表对应的.frm文件,或者你 已将 .frm 文件移动到另一个数据库?

    【讨论】:

    • 感谢您的回答!您是否也知道最后一个问题的答案(损坏/删除)?提前致谢!
    猜你喜欢
    • 2015-02-14
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多