AWS RDS MariaDB 在简单的 alter table 上无缘无故消耗了 300GB

AWS RDS MariaDB consumed 300GB on simple alter table for no reason

我们在 r5.large 实例的 AWS RDS 中有 MariaDB。我们有 4 个实例,每个实例使用了大约 350GB 的存储空间。每个实例都有近 2000 个不同的数据库,迁移尝试 运行 所有这些,但是算法一个一个地执行迁移。

我们要更改的 table 实际上很小 - 每个数据库通常有数百行。

出于某种奇怪的原因,当我们 运行 此迁移时,AWS RDS MariaDB 消耗了我们拥有的所有存储空间,因为我们有自动缩放存储空间,它的值从 350GB 跃升至 ~650GB,但仍然没有足够。此外,如此庞大的数据消耗速度非常快(基于监控,1-2 分钟)。然后它就停止了,因为 AWS 拒绝这么快给我们更多 space 并且没有剩余存储空间。

它发生在所有 4 个实例上。

这是我们使用的table

ALTER TABLE `item_place`
    ADD COLUMN IF NOT EXISTS `deleted_at` datetime NULL,
    ALGORITHM=NOCOPY, LOCK=NONE;

ALTER TABLE `item_place`
    ADD INDEX IF NOT EXISTS `deleted_at` (`deleted_at`),
    ALGORITHM=NOCOPY, LOCK=NONE;

我们没有发现任何异常。我们也有具有相同迁移的 TEST 数据库,但那里什么也没发生。虽然它们要小得多 (5GB),但是当在那里执行迁移时,我们甚至没有看到存储量的小幅下降 space。

我们在日志中没有发现任何特别之处。

我们遇到了同样的问题。将 MariaDB 版本从 10.3.8 升级到 10.5.8 解决了这个问题。