我已配置 mysql 以使用该innodb_file_per_table
选项。
一切运行正常,我已经能够将数据从另一台 mysql 服务器传输到具有innodb_file_per_table
set 的服务器。所有记录均可访问,并且应用程序已经正常运行了几天。
但是我找不到 .ibd 文件。我已通过 /etc/init.d/mysql restart 重新启动了 mysql。
在 /var/lib/mysql/xxx(xxx 是目录名称)中有一个 .frm 文件,但没有 .ibd 文件。
我无法在任何地方找到预期的 .ibd 文件。
使用的操作系统是Ubuntu Linux:
Linux 2.6.24-24-server #1 SMP Tue Aug 18 16:51:43 UTC 2009 x86_64 GNU/Linux
有趣的是,du 和 df 显示的占用空间信息不同 - df 说占用了 34GB 而 du 显示 19G;15GB 的差异大致是 .ibd 文件占用的数据(如 mysql admin 中所示)。
我粘贴了 du + df 的输出以及 mysqld 进程的 /proc/xxx/fd 内容。有趣的是,fd 显示“/var/lib/mysql/ibdata1 (已删除)”。
]du --最大深度 1 -h / 12M ./等 3,8M ./lib32 1.9G./var 8,0K ./媒体 1,6G ./usr 159M ./tmp 125M ./启动 4,0K ./initrd 86M ./根 4,0K ./srv 196M ./选择 16K ./丢失+找到 15G./jboss 12K ./月 708M ./lib 0./进程 48K ./主页 48K ./dev 0./系统 6,7M ./sbin 4,6M./bin 19G。 ]df-h 文件系统大小已使用可用使用率%安装于 /dev/sda1 221G 34G 177G 16% / varrun 7,9G 260K 7,9G 1% /var/运行 varlock 7,9G 0 7,9G 0%/var/lock udev 7,9G 36K 7,9G 1% /dev devshm 7,9G 0 7,9G 0%/dev/shm ]l /proc/15215/fd 共 0 /dev/null 管道:[31469149] 插座:[31469165] /tmp/ibyTflWI (已删除) 插座:[31469166] 管道:[31469149] /var/lib/mysql/ibdata1(已删除) /tmp/ibYr0wC6 (已删除) /tmp/ibX4rGe0(已删除) /tmp/ibjOaQQT (已删除) /tmp/ibbGtntN (已删除) /var/lib/mysql/ib_logfile0(已删除) /var/lib/mysql/ib_logfile1(已删除)
以下是显示表状态的输出:
mysql> 显示表状态如'%xxx%'; +-----------------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+-----------------------------------------------------------------------------------+ | 名称 | 引擎 | 版本 | 行格式 | 行 | 平均行长度 | 数据长度 | 最大数据长度 | 索引长度 | 不含数据 | 自动增量 | 创建时间 | 更新时间 | 检查时间 | 排序规则 | 校验和 | 创建选项 | 评论 | +-----------------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+-----------------------------------------------------------------------------------+ | xxx | InnoDB | 10 | 紧凑 | 7982574 | 1674 | 13369344000 | 0 | 81526784 | 0 | NULL | 2009-11-18 04:15:08 | NULL | NULL | utf8_general_ci | NULL | | InnoDB 可用:4096 kB;| +-----------------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-----------------+----------+----------------+-----------------------------------------------------------------------------------+ 一组 1 行(0.21 秒)
和 mysql 版本:5.0.51a-3ubuntu5.4
答案1
每表一个文件仅适用于启用该选项后创建的表 - 现有表不会被复制到单独的文件中。您需要创建新表,复制记录,然后删除旧表并将新表重命名为旧名称,以便将所有表放入各自的文件中。