gpt4 book ai didi

mysql - InnoDB - IBD 文件不断增长,占用了服务器上的所有空间

转载 作者:行者123 更新时间:2023-11-29 17:13:47 25 4
gpt4 key购买 nike

环境

我们在运行 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com