- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
环境
我们在运行 MariaDB(版本 10.3.8)的 CentOS 服务器上有一个临时/测试 WordPress 站点。我们一直在尝试一个名为 GeoDirectory (https://wpgeodirectory.com/) 的插件,该插件在数据库中创建各种表。数据库还使用设置为 ON 的 innodb_file_per_table
,因此数据库为数据库中的每个表空间生成了 IBD 文件。
问题
临时服务器有 80 GB 存储空间。对插件的设置进行特定更改(更新位置设置)后,我们注意到大约十分钟后,当我们尝试通过浏览器访问临时站点时,它超时了。
通过 SSH 登录,我们注意到机器完全没有空间。在/var 中寻找最大的文件时,我注意到一个文件现在占用了 70 GB 的空间 (wp_g1a4rar7xx_geodir_gd_place_detail.ibd
)。这是与更新设置的表相对应的 IBD 文件。
登录 SQL 并对该表中的记录数运行 count(*),结果只有 6,000 条记录。
因为表已经炸毁并占据了整个磁盘,因此即使尝试OPTIMIZE TABLE
也无法工作,因为空间不足。
问题
到底发生了什么事情,使得该文件如此之快地膨胀得如此之大?今后我们如何避免这种情况发生?
鲁莽的猜测
根据搜索,我们认为这可能与 InnoDB 执行的回滚/日志记录有关,并且我们可以通过在 my.cnf
中进行一些更改以限制来避免这种情况记录。同样,它可能是完全不同的东西。
这是来自 /etc/my.cnf
的当前 my.cnf
:
[mysqld]
bind-address = 0.0.0.0
# bind-address = ::ffff:127.0.0.1
local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security
risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
预先感谢您的帮助!
最佳答案
根据插件的名称,我猜测该问题可能与索引几何列的更新有关。 MariaDB Server 10.2 从 MySQL 5.7 导入了对 SPATIAL INDEX 的 InnoDB 支持,并且看起来有时会跳过版本历史记录的清除,具体取决于并发 DML 事件。
我在 MDEV-15284 中提到过这种奇特的设计选择,它报告如果正在执行并发 ROLLBACK,则 SPATIAL INDEX 上的 SELECT 可能会返回不一致的结果。
关于mysql - InnoDB - IBD 文件不断增长,占用了服务器上的所有空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51750376/
是否有任何方法可以仅从 .ibd 文件重新创建 mysql 数据库?如果有人可以发布如何创建 .frm 或获取“创建表”语句甚至完全恢复数据库的方法,那就太好了。 问题是,我使用percona的xtr
由于我的电脑系统错误,MySql数据文件夹中的一些MySql .ibd文件被删除。只剩下 .frm 文件了。因此,表“reservation”缺少表空间。“question”。发生了错误。 预订是数据
最近我将一个 MySQL 数据库从一台服务器复制到另一台服务器。同时我已经从 Master DB 中清除了许多行。所以一段时间后复制正确完成。我验证了两个数据库中的数据计数,它是相同的。 之后,我只是
我在 Windows 10 上安装了 Ampps 3.7,虽然 Apache 运行正常,但 Mysql 将不再启动;它过去运行正常,但现在出现 innidb 错误。我的问题类似于问题 here , 除
我在我的 mysql 服务器数据目录中发现了很多 ibd 文件,那是什么? mysql版本是5.7.12,奇怪的是都没有frm文件 -rw-r----- 1 mysql mysql 84M Aug
在innodb_file_per_table = 1的情况下,我们如何计算InnoDB数据文件中某些特定表的ibd文件的重做/撤消日志消耗的空间量,以及在情况下的ibdata文件中的重做/撤消日志消耗
最近我的硬盘出现故障,但一家维修店设法恢复了所有内容并将其存储在我的外部驱动器上。 我的新干净驱动器(MacOS Sierra)本地安装了 mysql 5.7.20 和 php。我正在尝试将数据库从旧
环境 我们在运行 MariaDB(版本 10.3.8)的 CentOS 服务器上有一个临时/测试 WordPress 站点。我们一直在尝试一个名为 GeoDirectory (https://wpge
昨天我花了很多时间寻找从 .ibd 和 .frm 文件恢复各种数据库的解决方案.. 最后,我找到了这个解决方案(?): https://github.com/twindb/undrop-for-inn
我正在使用 MySql 8.0.11 并使用 keyring_file 插件,我已经加密了数据库中的特定表,例如 t1。 当我检查t1.ibd文件的内容时,可以看到加密成功后内容已被加密。但是,即使
我已经使用 SonarQube/Sonar 几年了,measures_data.idb 大小已经增长到惊人的 114GB,是的。 我已经设置了默认的内务管理设置。 我正在使用 MySql 5.6(每个
我用inotify监控mysql数据文件的变化,存储引擎是InnoDB。当实际更新 InnoDB .IBD 文件中的数据时,inotify 将始终无法捕获任何事件。然而,当我将相同表的存储转换为 My
我有一个大表,其中包含许多 NULL 值的 BLOB 字段。我启用了多个表空间并为每个表获得了一个单独的 ibd 文件。这个表的物理大小远远超过我自己计算的大小,所以我的结论是应该可以缩小这个 ibd
我正在尝试在 PMA 中恢复数据库,但只能访问 frm 和 ibd 文件 - 而不是我了解您需要的 ib_log 文件。 我知道我可能无法恢复数据库数据,但是否可以从 frm 文件中恢复表的结构? 最
我有一个运行正常的 MySQL 服务器,没有任何错误。我不小心删除了所有 .ibd 和 .frm 文件。但是服务器没有抛出任何错误。它甚至使用命令行继续数据插入和所有操作。 我发现它临时使用ibdat
我的 WAMP 出现问题,因此我将 DATABASE 文件夹复制到另一个位置并重新安装 WAMP。 之后,当我尝试导入它时,出现了这个错误 #1064 - You have an error in y
环境: Windows 7(XAMPP 最新版) Apache 2.4.4PHP 5.5MySQL 5.6.11 我正在尝试从 MySQL 5.1 备份数据库并将其导入 MySQL 5.6。 在 My
我对 InnoDB 的数据文件有疑问。 (ibdata1, *.ibd)我怎么读?!我该如何编辑它?! 有一个 tb1 表:(i int, c char(10))。 我插入了 3 条记录:(123,
这是我的innodb表的表状态 | Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max
假设已经从备份磁带中恢复了以下 MySQL 文件: 表名.frm 表名.ibd 此外,假设 MySQL 安装正在使用 innodb_file_per_table 运行,并且数据库已使用 mysqlad
我是一名优秀的程序员,十分优秀!