服务器磁盘 space 似乎不正确,为什么?
Server disk space seems incorrect, why?
我在使用 Drupal 的看门狗模块时遇到了很大的问题,它正在为数据库创建数量惊人的条目。 MySQL 因此停止工作。当我有一些 space 并且能够登录并删除模块时,我回滚到较早的点。我 运行 SQL 命令
SELECT CONCAT(table_schema, '.', table_name),
CONCAT(ROUND(table_rows / 1000000, 2), 'M') rows,
CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), 'G') DATA,
CONCAT(ROUND(index_length / ( 1024 * 1024 * 1024 ), 2), 'G') idx,
CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 2), 'G') total_size,
ROUND(index_length / data_length, 2) idxfrac
FROM information_schema.TABLES
ORDER BY data_length + index_length DESC
LIMIT 10;
所以当 watchdog 正在吃掉所有光盘时 space 我得到这样的响应
看门狗移除前的查询结果
无论如何,我删除了模块,table 随之而来。我 运行 相同的查询,但我没有再次看到 table。
去掉看门狗后的查询结果
我去控制台输入命令
df -h
删除看门狗后的控制台结果
所以控制台显示仍有大量内存用完。为什么是这样?我应该担心吗?
没有太多信息可以继续,我想说你已经击中了 "bug"
http://bugs.mysql.com/bug.php?id=1341
从这个答案中获取数据How to shrink/purge ibdata1 file in MySQL
as you want to reclaim the space from ibdata1 you actually have to
delete the file:
- 对除 mysql 和 performance_schema 数据库之外的所有数据库、过程、触发器等进行 mysql 转储
- 删除除上述2个数据库之外的所有数据库
- 停止mysql
- 删除 ibdata1 和 ib_log 个文件
- 开始mysql
- 从转储中恢复
在恢复之前,您可能需要在配置文件中启用 innodb_file_per_table
选项
上面的说明实际上可以仅限于 innodb 的说明,以使过程稍微安全一些
我在使用 Drupal 的看门狗模块时遇到了很大的问题,它正在为数据库创建数量惊人的条目。 MySQL 因此停止工作。当我有一些 space 并且能够登录并删除模块时,我回滚到较早的点。我 运行 SQL 命令
SELECT CONCAT(table_schema, '.', table_name),
CONCAT(ROUND(table_rows / 1000000, 2), 'M') rows,
CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), 'G') DATA,
CONCAT(ROUND(index_length / ( 1024 * 1024 * 1024 ), 2), 'G') idx,
CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 2), 'G') total_size,
ROUND(index_length / data_length, 2) idxfrac
FROM information_schema.TABLES
ORDER BY data_length + index_length DESC
LIMIT 10;
所以当 watchdog 正在吃掉所有光盘时 space 我得到这样的响应
看门狗移除前的查询结果
无论如何,我删除了模块,table 随之而来。我 运行 相同的查询,但我没有再次看到 table。
去掉看门狗后的查询结果
我去控制台输入命令
df -h
删除看门狗后的控制台结果
所以控制台显示仍有大量内存用完。为什么是这样?我应该担心吗?
没有太多信息可以继续,我想说你已经击中了 "bug"
http://bugs.mysql.com/bug.php?id=1341
从这个答案中获取数据How to shrink/purge ibdata1 file in MySQL
as you want to reclaim the space from ibdata1 you actually have to delete the file:
- 对除 mysql 和 performance_schema 数据库之外的所有数据库、过程、触发器等进行 mysql 转储
- 删除除上述2个数据库之外的所有数据库
- 停止mysql
- 删除 ibdata1 和 ib_log 个文件
- 开始mysql
- 从转储中恢复
在恢复之前,您可能需要在配置文件中启用 innodb_file_per_table
选项
上面的说明实际上可以仅限于 innodb 的说明,以使过程稍微安全一些